Skip to content

test(podman): move podman_preflight into driver-podman integration tests - #3783

Open
politerealism wants to merge 2 commits into
NVIDIA:mainfrom
politerealism:3712-podman-preflight-relocate
Open

politerealism wants to merge 2 commits into
NVIDIA:mainfrom
politerealism:3712-podman-preflight-relocate

Conversation

@politerealism

Copy link
Copy Markdown
Contributor

Summary

podman_preflight verifies that openshell-driver-podman fails fast with an actionable error when its Podman socket is unreachable, instead of hanging or serving gRPC against a dead connection. It never ran anywhere in CI because it required only the standalone driver binary, not a gateway, so it never fit the gateway-backed e2e-podman harness it lived under.

This moves it into crates/openshell-driver-podman/tests/ as a plain Cargo integration test. It now runs automatically via the existing required cargo nextest run --workspace job — no special mise task, workflow step, or coverage exception needed.

Related Issue

Addresses one acceptance criterion of #3712 (podman_preflight runs in CI and verifies the bounded, actionable daemon-unavailable failure path). This is a narrow follow-up to #3749, which took a different, broader approach (wiring into the e2e-podman workflow plus a new coverage-drift check) that received change requests.

Per that review, this PR:

  • Moves podman_preflight into the driver crate as a unit/integration test rather than an E2E workflow test (its semantics — retry/error path against a missing socket — don't require Podman or a gateway).
  • Does not add a coverage/exclusion check. test(e2e): run podman suite with tmachine #3637's tmachine e2e-podman archive already made target selection default-inclusive, which closes the actual silent-gap failure mode this test was missing from. A stale-exclusion lint would only catch list hygiene, not coverage gaps, so it isn't included here.
  • Does not touch PODMAN_CI_TESTS, podmanE2eFollowUpBinaries, or any other selection list, other than removing podman_preflight from the exclusion list since it's no longer an e2e-podman target at all.

The remainder of #3712 (shared-target CI coverage, podman_oci_identity/podman_resource_limits/provider_refresh_handles against a real gateway, rootful/rootless explicitness, Release Dev/Tag qualification, selected-vs-eligible reporting) is tracked separately as Track B and is not addressed by this PR.

Changes

  • Relocated e2e/rust/tests/podman_preflight.rs to crates/openshell-driver-podman/tests/podman_preflight.rs, using CARGO_BIN_EXE_openshell-driver-podman (Cargo-provided for this crate's own [[bin]] target) instead of a hand-resolved workspace path.
  • Removed the corresponding [[test]] entry from e2e/rust/Cargo.toml and the podman_preflight line (with its now-stale comment) from tests/artifacts.nix's podmanE2eFollowUpBinaries.
  • Added tempfile as a dev-dependency of openshell-driver-podman (already used transitively via the moved test).

Testing

  • cargo test -p openshell-driver-podman --test podman_preflight — both tests pass locally.
  • cargo check --manifest-path e2e/rust/Cargo.toml --features e2e-podman --tests — builds clean after removal, no dead code (strip_ansi remains used elsewhere).
  • mise run pre-commit passes.
  • cargo fmt --all -- --check passes.

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Architecture docs updated (if applicable) — not applicable; test-only relocation, no behavior change

🤖 Generated with Claude Code

podman_preflight verifies that openshell-driver-podman fails fast when
its Podman socket is unreachable. It only needs the standalone driver
binary, not a gateway, so it never fit the gateway-backed e2e-podman
harness it lived under and never ran anywhere in CI.

Move it into crates/openshell-driver-podman/tests/ as a plain Cargo
integration test. It now runs via the existing required workspace test
job with no special mise task, workflow step, or coverage exception.

Signed-off-by: politerealism <burdcat17@gmail.com>
@copy-pr-bot

copy-pr-bot Bot commented Sep 28, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

Signed-off-by: Evan Lezar <elezar@nvidia.com>
@politerealism

Copy link
Copy Markdown
Contributor Author

Closing in favor of #3771, opened by elezar shortly before this one to address the same review feedback from #3749 — it takes the preflight-retry behavior further than this PR does (extracting the retry loop into a directly testable helper with paused-Tokio-time unit coverage, plus a crate-level smoke test), so no need to duplicate the effort here.

The remaining scope of #3712 (shared-target coverage, podman_oci_identity/podman_resource_limits/provider_refresh_handles against a real gateway, Release Dev/Tag qualification, rootful/rootless explicitness, and selected-vs-eligible reporting) is still open and will follow in separate PRs.

@elezar elezar reopened this Sep 28, 2026

@elezar elezar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved after adding the portable-diagnostics follow-up in b9c4f2c. The relocated test now uses a short relative socket path on macOS and no longer carries a partial ANSI parser. Deterministic retry-policy coverage remains in stacked follow-up #3771.

@elezar elezar added the test:e2e Requires end-to-end coverage label Sep 28, 2026
@github-actions

Copy link
Copy Markdown

Label test:e2e applied, but pull-request/3783 does not exist yet. A maintainer needs to comment /ok to test b9c4f2cf742f74a9f940be7562e8ff9d053e52ac to mirror this PR. Once the mirror exists, re-apply the label or re-run Branch E2E Checks from the Actions tab.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:e2e Requires end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants