fix(ci): exclude emulated integration tests from partition jobs, add test-emulated

Emulated XCM integration tests call WASM_BINARY.expect() in their genesis
functions (e.g. asset-hub-zagros/genesis.rs:168). With SKIP_WASM_BUILD=1
(set in .test-base) these all panic immediately with "WASM binary was not
built, please build it!" — causing every test-partition and
test-no-try-runtime job to fail.

Fix: exclude all 10 emulated integration test packages from the 5 partition
jobs. Add a dedicated test-emulated job that runs those 10 packages with
SKIP_WASM_BUILD=0, so WASM blobs are compiled and the genesis functions
succeed. test-emulated shares the same CARGO_TARGET_DIR as the partition
jobs so jemalloc, rocksdb, and Rust deps are warm; WASM blobs land in a
separate debug/build/<hash>/out/ subtree.

Packages excluded from partitions / run in test-emulated:
  asset-hub-pezkuwichain-integration-tests
  asset-hub-zagros-integration-tests
  collectives-zagros-integration-tests
  coretime-pezkuwichain-integration-tests
  coretime-zagros-integration-tests
  governance-zagros-integration-tests
  people-pezkuwichain-integration-tests
  people-zagros-integration-tests
  pezbridge-hub-pezkuwichain-integration-tests
  pezbridge-hub-zagros-integration-tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Kurdistan Tech MinistryandClaude Sonnet 4.6 committed 2026-04-29 01:47:23 +03:00
1 parent 563fd2ca87
commit 9941af28b1
1 file changed
+113 -6
+113 -6
View File
@@ -450,7 +450,17 @@ test-partition-1:
cargo nextest run \
--workspace --locked --no-fail-fast --cargo-quiet \
--features try-runtime,experimental,ci-only-tests \
--partition count:1/3
--partition count:1/3 \
--exclude asset-hub-pezkuwichain-integration-tests \
--exclude asset-hub-zagros-integration-tests \
--exclude collectives-zagros-integration-tests \
--exclude coretime-pezkuwichain-integration-tests \
--exclude coretime-zagros-integration-tests \
--exclude governance-zagros-integration-tests \
--exclude people-pezkuwichain-integration-tests \
--exclude people-zagros-integration-tests \
--exclude pezbridge-hub-pezkuwichain-integration-tests \
--exclude pezbridge-hub-zagros-integration-tests
artifacts:
when: always
paths: [test-results-1.xml]
@@ -466,7 +476,17 @@ test-partition-2:
cargo nextest run \
--workspace --locked --no-fail-fast --cargo-quiet \
--features try-runtime,experimental,ci-only-tests \
--partition count:2/3
--partition count:2/3 \
--exclude asset-hub-pezkuwichain-integration-tests \
--exclude asset-hub-zagros-integration-tests \
--exclude collectives-zagros-integration-tests \
--exclude coretime-pezkuwichain-integration-tests \
--exclude coretime-zagros-integration-tests \
--exclude governance-zagros-integration-tests \
--exclude people-pezkuwichain-integration-tests \
--exclude people-zagros-integration-tests \
--exclude pezbridge-hub-pezkuwichain-integration-tests \
--exclude pezbridge-hub-zagros-integration-tests
artifacts:
when: always
paths: [test-results-2.xml]
@@ -482,8 +502,18 @@ test-partition-3:
cargo nextest run \
--workspace --locked --no-fail-fast --cargo-quiet \
--features try-runtime,experimental,ci-only-tests \
--partition count:3/3
# First partition also runs runtime-api tests
--partition count:3/3 \
--exclude asset-hub-pezkuwichain-integration-tests \
--exclude asset-hub-zagros-integration-tests \
--exclude collectives-zagros-integration-tests \
--exclude coretime-pezkuwichain-integration-tests \
--exclude coretime-zagros-integration-tests \
--exclude governance-zagros-integration-tests \
--exclude people-pezkuwichain-integration-tests \
--exclude people-zagros-integration-tests \
--exclude pezbridge-hub-pezkuwichain-integration-tests \
--exclude pezbridge-hub-zagros-integration-tests
# Also runs runtime-api tests
- cargo nextest run -p pezsp-api-test --features enable-pez-staging-api --cargo-quiet
artifacts:
when: always
@@ -500,7 +530,17 @@ test-no-try-runtime-1:
cargo nextest run \
--workspace --locked --no-fail-fast --cargo-quiet \
--features experimental,ci-only-tests \
--partition count:1/2
--partition count:1/2 \
--exclude asset-hub-pezkuwichain-integration-tests \
--exclude asset-hub-zagros-integration-tests \
--exclude collectives-zagros-integration-tests \
--exclude coretime-pezkuwichain-integration-tests \
--exclude coretime-zagros-integration-tests \
--exclude governance-zagros-integration-tests \
--exclude people-pezkuwichain-integration-tests \
--exclude people-zagros-integration-tests \
--exclude pezbridge-hub-pezkuwichain-integration-tests \
--exclude pezbridge-hub-zagros-integration-tests
test-no-try-runtime-2:
extends: .test-base
@@ -510,7 +550,74 @@ test-no-try-runtime-2:
cargo nextest run \
--workspace --locked --no-fail-fast --cargo-quiet \
--features experimental,ci-only-tests \
--partition count:2/2
--partition count:2/2 \
--exclude asset-hub-pezkuwichain-integration-tests \
--exclude asset-hub-zagros-integration-tests \
--exclude collectives-zagros-integration-tests \
--exclude coretime-pezkuwichain-integration-tests \
--exclude coretime-zagros-integration-tests \
--exclude governance-zagros-integration-tests \
--exclude people-pezkuwichain-integration-tests \
--exclude people-zagros-integration-tests \
--exclude pezbridge-hub-pezkuwichain-integration-tests \
--exclude pezbridge-hub-zagros-integration-tests
# Emulated XCM integration tests — require WASM blobs, run separately with
# SKIP_WASM_BUILD=0. Uses the same CARGO_TARGET_DIR as test-partition jobs so
# Rust artifacts (deps/, jemalloc, rocksdb) are already warm from those jobs.
# WASM blobs land in debug/build/<wasm-builder-hash>/out/ — separate subtree.
test-emulated:
stage: test
tags: [pezkuwi-runner]
needs: [check-try-runtime]
variables:
CARGO_HOME: /root/.cargo
SKIP_WASM_BUILD: "0"
WASM_BUILD_NO_COLOR: "1"
WASM_BUILD_WORKSPACE_HINT: "$CI_PROJECT_DIR"
CARGO_INCREMENTAL: "0"
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings -Cdebuginfo=1 -Clink-arg=-fuse-ld=lld"
before_script:
- rustup show
- rustc --version && cargo --version
- rustup target add wasm32v1-none
- export CACHE_KEY="$(cat Cargo.lock rust-toolchain.toml | md5sum | cut -c1-12)"
- export CARGO_TARGET_DIR="/cache/cargo-target/${CACHE_KEY}/test-release"
- mkdir -p "$CARGO_TARGET_DIR"
- find /cache/cargo-target -mindepth 1 -maxdepth 1 -type d ! -name "${CACHE_KEY}" -exec rm -rf {} + 2>/dev/null || true
- echo "CARGO_TARGET_DIR=$CARGO_TARGET_DIR (disk $(df -h /cache/cargo-target | tail -1 | awk '{print $3 "/" $2 " used, " $4 " free"}'))"
cache: []
timeout: 420m
retry:
max: 1
when:
- runner_system_failure
- unknown_failure
script:
- git config --global --add safe.directory '*'
- |
cargo nextest run --locked --no-fail-fast --cargo-quiet \
-p asset-hub-pezkuwichain-integration-tests \
-p asset-hub-zagros-integration-tests \
-p collectives-zagros-integration-tests \
-p coretime-pezkuwichain-integration-tests \
-p coretime-zagros-integration-tests \
-p governance-zagros-integration-tests \
-p people-pezkuwichain-integration-tests \
-p people-zagros-integration-tests \
-p pezbridge-hub-pezkuwichain-integration-tests \
-p pezbridge-hub-zagros-integration-tests
artifacts:
when: always
paths: [test-results-emulated.xml]
reports:
junit: test-results-emulated.xml
expire_in: 7 days
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_PIPELINE_SOURCE == "web"
when: manual
wasm-check:
stage: test