Skip to content

row 88: the suite steps build the example cdylibs their tests load by name, always (stacked on #831) - #924

Merged
MattJackson merged 3 commits into
predevfrom
lane-ci-test-examples
Oct 14, 2026
Merged

MattJackson merged 3 commits into
predevfrom
lane-ci-test-examples

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

Row 88 (predev test green). This is a stacked draft on #831 (lane-ci-test-gated) and stays a draft until #831 lands (rule 19).

Root cause

A test that dlopens an example cdylib fails, and never skips, when that library is absent (crates/busbar/tests/common/plugins.rs::missing). The test step only got busbar-plugin-loader's examples because a workspace-wide test build happened to build them. Under scope: affected, a run of busbar alone builds no other package's examples. On #833, a run of 1,189 tests covering only busbar, that left neutral_frame_door unbuilt, and 22 tests failed with "the neutral_frame_door cdylib is not built": root::serve::money_tests (serve_money.rs), root::serve::framed_tests and two root::registry::tests. The same tests pass on full runs (#842, #821).

Change

  • c2c3f548b0 RED: xtask/tests/ci_test_fixtures.rs::an_affected_scope_run_of_busbar_alone_builds_the_examples_its_tests_load.
    • It collects every package a test under crates/ names in its fixture-build command (cargo build -p <package> --examples). Today that is busbar-plugin-loader and busbar. The test fails if the scan finds neither, so it can never pass on an empty scan.
    • It then requires every .ci/*.yaml step that runs cargo nextest run to run cargo build --locked -p <package> --examples for each of them before its first suite.
    • It is red on this commit for default.yaml:test, default.yaml:test-gated and predev.yaml:test-gated.
  • f6ada72804 fix: those three steps build both packages' examples by name, unconditionally. The build cannot be limited to scopes that need it, because no variable gives a step the affected set (.ci/ uses only MODERNCI_TO_SHA, MODERNCI_TO, MODERNCI_COMMIT and MODERNCI_ONLY). Building by package name also keeps the build from being narrowed by a scope that rewrites --workspace.

Not a $ change.

….yaml mirrors modernci-config (oracle, manual)
…ad by name before its first suite

xtask/tests/ci_test_fixtures.rs reads every test under crates/ that names its fixture build
(`cargo build -p <package> --examples`: busbar-plugin-loader, busbar) and every .ci/*.yaml step
that runs `cargo nextest run`, and refuses a step that does not run
`cargo build --locked -p <package> --examples` for each before its first suite. Red on this
commit: default.yaml test, default.yaml test-gated and predev.yaml test-gated build neither, so a
ModernCI run scoped to busbar alone leaves the loader's neutral_frame_door unbuilt (#833's 22
root::serve/root::registry failures).
…y name, always

A test that dlopens an example cdylib fails, never skips, when it is absent. The `test` step only
got the loader's examples as a side effect of a workspace-wide test build; under
`scope: affected` a run of busbar alone built none, and the neutral frame door's 22
composition-root tests failed on changes that never touched them (#833). Each suite step
(default.yaml test and test-gated, predev.yaml test-gated) now runs
`cargo build --locked -p busbar-plugin-loader --examples` and
`cargo build --locked -p busbar --examples` before its first suite. Always: no variable tells a
step the affected set, so the build cannot be keyed to it. Turns the previous commit's RED green.
@MattJackson
MattJackson changed the base branch from lane-ci-test-gated to predev October 14, 2026 13:49
@MattJackson
MattJackson marked this pull request as ready for review October 14, 2026 13:49
@MattJackson
MattJackson merged commit d7c652d into predev Oct 14, 2026
1 check passed
@MattJackson
MattJackson deleted the lane-ci-test-examples branch October 14, 2026 14:34
MattJackson added a commit that referenced this pull request Oct 14, 2026
…e: both sides kept in .ci/predev.yaml

#924's test-gated check (the example cdylibs built by name) beside #909's absolute move
(q128-audit requires git-history). test-gated runs absolute like every check of this move: no
baseline: target, dev holds no suites to be measured against.
MattJackson added a commit that referenced this pull request Oct 14, 2026
… tenant owns toolchain; operator removed Rust on v0.4.1448). Each cargo check sources .ci/tool.sh when present (#1035) else the inline BUSBAR_TOOL_SH (pinned, sha-verified rustup-init 1.28.2 + rustup toolchain install, nextest 0.9.148, deny 0.20.2, jq 1.7.1). Also re-syncs with predev's file (#924 example cdylib builds; git-history on gates).
MattJackson added a commit that referenced this pull request Oct 14, 2026
…tenant owns toolchain; operator removed Rust on v0.4.1448). Each cargo check sources .ci/tool.sh when present (#1035) else the inline BUSBAR_TOOL_SH (pinned, sha-verified rustup-init 1.28.2 + rustup toolchain install, nextest 0.9.148, deny 0.20.2, jq 1.7.1). Also re-syncs with predev's file (#924 example cdylib builds; git-history on gates).
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.

1 participant