Repository navigation
test: make the bundle the only test input and split out the fixture provider - #12971
Merged
Merged
Conversation
…rovider Tests that run OpenTofu now read only NEMOCLAW_TEST_BUNDLE: pinned OpenTofu and the providers come from the bundle, and each provider's contract tests run the provider Cargo builds with them. cargo ci and the lifecycle archive stop passing NEMOCLAW_TEST_TOFU and NEMOCLAW_TEST_PROVIDER and packing target/debug providers. The fixture provider moves to nemoclaw-fixture-provider, so the openshell and fabric provider tests no longer compile nemoclaw-sdk. Refs #12878
Contributor
|
v1 documentation preview: https://nvidia-preview-nemoclaw-v1-pr-12971.docs.buildwithfern.com/nemoclaw |
This was referenced Oct 11, 2026
cv
added a commit
that referenced
this pull request
Oct 11, 2026
## Failure `v1` doesn't compile since #12972. Its new `nemoclaw-provider/tests/contract/kubernetes_lifecycle.rs` calls `TofuWorkspace::new(tofu, provider)`, with OpenTofu and the provider read from `NEMOCLAW_TEST_TOFU` and `NEMOCLAW_TEST_PROVIDER`. #12971 merged first and changed that function to `TofuWorkspace::new(&Bundle, nemoclaw)`. Since #12971, `cargo ci lifecycle` also no longer sets either variable. Each PR passed CI against a `v1` without the other. Every PR's CI now fails at `Lint Rust`: ``` error[E0308]: mismatched types --> crates/nemoclaw-provider/tests/contract/kubernetes_lifecycle.rs:111:44 | 111 | let workspace = TofuWorkspace::new(tofu, provider); | ^^^^ expected `&Bundle`, found `PathBuf` ``` ## Decision Build the workspace with `crate::workspace()`, as the crate's other contract tests do since #12971: OpenTofu and the `openshell` and `fabric` providers from `NEMOCLAW_TEST_BUNDLE`, and the `nemoclaw` provider built from the checkout. That drops the two environment variables and the now-unused `PathBuf` import. ## Validation - `cargo clippy -p nemoclaw-provider --tests -- -D warnings` is clean. - `cargo ci` passed: 1,331 workspace tests and 131 lifecycle tests. Both of the file's tests ran from the bundle and passed: - `kubernetes_resources_apply_observe_the_release_and_tear_down_keeping_storage` - `kubernetes_resources_refuse_replaced_or_missing_objects_without_recreating_them`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #12878 (the two parts still open).
Failure
NEMOCLAW_TEST_TOFUandNEMOCLAW_TEST_PROVIDERfor the contract tests and twonemoclaw-e2etests, andNEMOCLAW_TEST_BUNDLEfor the rest. The bundle already ships pinned OpenTofu and all three providers. The contract tests also found theopenshellandfabricproviders besideNEMOCLAW_TEST_PROVIDER, socargo ci archivehad to packtarget/debugproviders for the lifecycle workers.nemoclaw-test-fixturesdepended onnemoclaw-sdkandtf-providerfor the fixture provider. Building theopenshellorfabricprovider tests therefore also compiled the SDK and its Kubernetes, Fabric, and YAML dependencies.Decision
NEMOCLAW_TEST_BUNDLEis now the only input.nemoclaw_test_fixtures::Bundlefinds the bundle'slibexec/tofuand eachproviders/registry.opentofu.org/nvidia/NAME/VERSION/PLATFORMprovider.TofuWorkspace::new(&bundle, nemoclaw)takesopenshellandfabricfrom the bundle.package_executable!reads nextest'sNEXTEST_BIN_EXE_<name>, which also works after archive extraction, and falls back to Cargo'sCARGO_BIN_EXE_<name>undercargo test. Any other provider those tests need comes from the bundle. The twonemoclaw-e2etests (sandbox_readiness,managed) run the bundle'snemoclawprovider.cargo ci lifecyclesets onlyNEMOCLAW_TEST_BUNDLE.lifecycle-inputs.tarkeeps only the fakesshrelay, which the Windows lifecycle step puts on PATH. Nextest already archives each selected package's executables.ssh_relay()no longer looks beside the providers.nemoclaw-fixture-providercrate. An ignored test that the lifecycle profile selects makes nextest archive it, asssh_relaydoes for the relay.docs/contributing/integration-tests.mdandtesting.md.Build cost of
cargo build --locked -p openshell-provider --testsfrom a clean target directory, measured sequentially on the same aarch64 host while other jobs ran (load 2–15):origin/v1(b42d188)The 50 crates no longer compiled include
nemoclaw-sdk,nemoclaw-fabric,nemo-fabric-core,kube,k8s-openapi,jiff,toml,pest, andserde-saphyr. Wall time is noisy on a shared host; the crate count is deterministic.Validation
ci_lifecycle:lifecycle_partition_reaches_nextest_without_changing_the_selected_suitenow requires that only an absoluteNEMOCLAW_TEST_BUNDLEreaches nextest, and the archive test requires that no provider is packed. I watched both fail before the change; all 7 tests pass now.bundleunit tests innemoclaw-test-fixturespass.linux_arm64bundle, unsetNEMOCLAW_TEST_TOFUandNEMOCLAW_TEST_PROVIDER, and set onlyNEMOCLAW_TEST_BUNDLE. Under nextest with--run-ignored all, these pass:openshell-providerandfabric-providercontract(50 tests)nemoclaw-providercontract(27 tests)nemoclaw-e2esandbox_readiness::nemoclaw-fixture-providerarchive testnemoclaw-test-fixturescargo nextest archivewithbinary_id(=openshell-provider::contract)includedterraform-provider-openshell. Withtarget/debug/terraform-provider-openshellmoved away, the archivedcapabilities::tests passed from--extract-to, so they used the extracted provider.cargo test -p openshell-provider --test contract capabilities:: -- --ignoredpasses through theCARGO_BIN_EXEfallback. Without the variable, tests fail withNEMOCLAW_TEST_BUNDLE names a bundle; build one with cargo ci bundle.cargo fmt --allandcargo clippy --workspace --all-targets -- -D warningsare clean on Linux. I did not run Windows or macOS locally; CI covers them.