Skip to content

Fix macOS and Linux CI contract suite registration - #654

Merged
huangminghuang merged 1 commit into
masterfrom
fix/ci-contract-suite-registry
Sep 29, 2026
Merged

huangminghuang merged 1 commit into
masterfrom
fix/ci-contract-suite-registry

Conversation

@huangminghuang

Copy link
Copy Markdown
Contributor

Summary

  • Register sysio_liq_tests, sysio_swap_tests, and twap_tests as independent CTest suites with their contract-impact labels.
  • Preserve the configure-time completeness guard and the existing shared test executable, filters, working directory, and timeout.

Cause

The independent-suite registry merged in #618 omitted three suites that had already landed on master through #634. The completeness guard therefore stopped CMake before compilation or tests in both the macOS run and all five configurations of the Linux run.

Validation

  • Fresh Linux Release configure with Clang 18 and the CI x64-linux-release vcpkg triplet passed, using prebuilt contract artifacts (BUILD_SYSTEM_CONTRACTS=OFF, BUILD_TEST_CONTRACTS=OFF).
  • Full default build passed: cmake --build build/ci-suite-registry -- -j20.
  • All three restored suites passed: ctest --test-dir build/ci-suite-registry --output-on-failure -j3 -R "^contract[.](sysio_liq_tests|sysio_swap_tests|twap_tests)$" (3/3, 19.29 seconds).
  • Verified all 37 contract suites are registered exactly once with matching Boost filters.
  • git diff --check passed.

macOS and the remaining Linux compiler/sanitizer configurations were not executed locally; remote CI will validate those environments.

Change-Id: I61cd91a2a0bf76c737ff7434139a39db6e0e12ce
@heifner

heifner commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

Suite registration looks complete. The binary built from this branch has exactly 37 top-level units, one per contract.* entry, with no file-scope cases, nested suites, or suites hidden in headers or behind #if, and CI ran all 37. The labels on the three restored entries match what those suites load: I ran every suite under strace, recorded which contract .wasm/.abi files it opened, and added the contract headers it compiles in.

Several older entries are missing contracts their suites deploy. Some came in after #618 was cut; the rest were already missing in #618:

Entry Missing Introduced by
sysio_dispatch_tests sysio.dclaim sysio.liq sysio.tokens test.block_transfer test.reject_all #594, #634; test.* already in #618
the four emissions_tests.cpp entries (only t5_emissions_tests uses them) sysio.liq test.block_transfer #634; test.block_transfer already in #618
sysio_authex_tests sysio.dclaim #594
sysio_system_tests sysio.opreg #625 (activate_producers() now deploys opreg)
getpeerkeys_tests, sysio_snapshot_attest_tests sysio.opreg already in #618
sysio_opreg_tests test.block_transfer test.reenter_deposit already in #618
sysio_msig_tests test.reject_all already in #618

Separately, every suite that boots a default tester runs libtester's embedded sysio.bios and sysio.roa (copied from the contracts/ build), and only a few entries list them.

Nothing reads these labels yet, so none of this blocks the CI fix; fixing them here would make the registry match master. A follow-up could derive both the suite list and the labels from the built binary so they can't drift again.

@huangminghuang
huangminghuang merged commit c6a3d49 into master Sep 29, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants