Repository navigation
test(suites): port the old suites onto testkit and run them from the plan - #4774
Draft
matthewgrossman wants to merge 8 commits into
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
matthewgrossman
added this pull request to stack #4776
October 20, 2026 23:38
|
🌿 Preview your docs: https://nvidia-preview-pr-4774.docs.buildwithfern.com/openshell |
matthewgrossman
force-pushed
the
test/3954-migrate-suites-to-testkit/matthewgrossman
branch
2 times, most recently
from
October 21, 2026 20:40
6d64703 to
e3d9f01
Compare
matthewgrossman
force-pushed
the
test/3954-migrate-suites-to-testkit/matthewgrossman
branch
from
October 21, 2026 20:49
e3d9f01 to
5e2cbc5
Compare
matthewgrossman
force-pushed
the
test/3954-migrate-suites-to-testkit/matthewgrossman
branch
from
October 21, 2026 23:45
5e2cbc5 to
cda205f
Compare
matthewgrossman
force-pushed
the
test/3954-migrate-suites-to-testkit/matthewgrossman
branch
from
October 22, 2026 04:51
cda205f to
7c75fbf
Compare
matthewgrossman
removed this pull request from stack #4776
October 22, 2026 04:51
matthewgrossman
added this pull request to stack #4824
October 22, 2026 04:51
5 tasks done
…ed sandboxes Add cx.cli_env and Cli::run_with for commands that read a secret from the environment, and cx.track, cx.track_sandbox, cx.adopt and cx.delete_sandboxes so tests that create sandboxes through the CLI still clean up after a failure. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
…isor and OCI image suites to testkit Add the lifecycle, cli, persistent_workspace, file_transfer and policy_advisor test files to the sandbox crate and a sandbox-image crate for the OCI image suite. The lifecycle, file-transfer and policy-advisor tests are adapted from #4629. persistent_workspace_survives_stop_start requires the persistent_workspace capability. The old conformance/cli crate stays until the release lanes move to plans. Co-authored-by: Evan Lezar <elezar@nvidia.com> Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
…suites to testkit Add providers and podman crates beside the old feature crates. Enroll the features workspace in the lockfile alignment check, which also re-locks the old crates there. The old crates and their playbooks stay until the release lanes move to plans. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
…s capabilities Format and lint the sandbox-image, providers and podman crates with the other testkit suites. The e2e:testkit task sets OPENSHELL_TEST_CAPABILITIES for a Docker gateway, since tests that declare requires read it. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
An environment's env field is passed to the test processes next to the variables the runner already sets. Docker environments use it to name the container engine for the OCI image suite. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
The file-transfer suite builds a Git repository on the machine that runs the tests, and the old conformance playbook installed Git itself. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Run the sandbox suites on rootful Docker and rootful and rootless Podman, and the OCI image suite on rootful Docker. Document the suites, the plan and what the Keycloak and Podman userns suites still need before they can join it. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Plan the ported conformance suites on the Ubuntu rootful Docker environment, the one the runner has already run on CI, and install Git only there. The Podman rpm environments are defined and noted in the plan; add them after a first run. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
matthewgrossman
force-pushed
the
test/3954-migrate-suites-to-testkit/matthewgrossman
branch
from
October 22, 2026 05:29
7c75fbf to
bb39723
Compare
matthewgrossman
removed this pull request from stack #4824
October 22, 2026 05:29
matthewgrossman
added this pull request to stack #4825
October 22, 2026 05:30
This branch has not been deployed
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.
Summary
Ports the old conformance, oci-image, provider-refresh, and Podman userns suites onto testkit and adds the ones the runner can provision to the
cpu-testsplan, so they run in Branch E2E through the plan. This is step 4 of the test harness plan, stacked on the plan-driven runner.It adds the new suites without removing anything: the old suites, the hand-written release lanes, and the old crates are untouched. A later PR moves the release lanes onto plans and deletes the old suites once these have run green.
The sandbox-lifecycle, file-transfer, and policy-advisor ports start from @elezar's draft #4629.
Stack
Part of a stack of four; each PR targets the one below it. The tmachine move (#4726) has merged, so the stack uses its
tests/tmachine/paths.SessionAPI, with a plan running on CI.Still to come, on top of #4774: moving the release lanes onto plans and deleting the old suites, once the plan has run the ported suites green.
Related Issue
Part of #3954
Changes
tests/suites/conformance/sandbox: test fileslifecycle,cli,persistent_workspace,file_transfer, andpolicy_advisornext to the existingsmoke.tests/suites/conformance/sandbox-imageholds the oci-image port.tests/suites/features: new cratesproviders(Keycloak provider refresh) andpodman(user-namespace tests, with fixtures copied).tests/plans/cpu-tests.yaml: the conformance suites on the Ubuntu rootful Docker environment, and oci-image there too. The runner passesOPENSHELL_TEST_CONTAINER_ENGINEthrough a new optionalenv:map in the environment YAML.cx.track,cx.track_sandbox,cx.adopt,cx.delete_sandboxes, andcx.cli_env.persistent_workspace_survives_stop_startdeclaresrequires = [persistent_workspace].mise run e2e:testkitsetsOPENSHELL_TEST_CAPABILITIESfor the Docker lane.test-tools.yamlplaybook installs Git in the Docker environment, which the Git filtering test needs.Old test to new test
conformance/cli (via crates/openshell-conformance)
smoke(scenariosmoke: status, create, get Ready, list, exec, delete, list empty)conformance/sandbox/tests/cli.rs::cli_create_exec_list_deleteconformance/sandbox/tests/smoke.rs::create_exec_deleteis the SDK variant (already in the base PR).sandbox_lifecyclestop_start_preserves_workspace (stop, exec while stopped fails, start, workspace sentinel survives, main command re-runs)conformance/sandbox/tests/persistent_workspace.rs::persistent_workspace_survives_stop_start(SDK,requires = [persistent_workspace]) andconformance/sandbox/tests/cli.rs::cli_stop_start_delete(CLI: stop, exec rejected while stopped, start, stop, delete)lifecycle.rs::restart_stopped_sandbox.sandbox_lifecyclestopped_can_be_deletedconformance/sandbox/tests/lifecycle.rs::stopped_sandbox_can_be_deleted(SDK)cli_stop_start_delete.file_transfer::round_tripconformance/sandbox/tests/file_transfer.rs::upload_download_round_tripfile_transfer::git_filteringconformance/sandbox/tests/file_transfer.rs::upload_respects_gitignore--no-git-ignore. Needsgiton the test host.file_transfer::path_safetyconformance/sandbox/tests/file_transfer.rs::download_stays_inside_workspacepolicy_advisor::policy_localconformance/sandbox/tests/policy_advisor.rs::policy_local_accepts_proposalspolicy_advisor::mechanistic_proposalconformance/sandbox/tests/policy_advisor.rs::denied_address_produces_draft_rulepolicy_advisor::new_hostname_proposalconformance/sandbox/tests/policy_advisor.rs::denied_hostname_produces_draft_ruleNew with no old counterpart (from #4629, Evan Lezar):
lifecycle.rs::long_running_exec_delete,run_to_completion_exit_delete,default_command_sandbox_is_listed_ready.features/oci-image (6 tests, all in
conformance/sandbox-image/tests/oci_image.rs, same names)custom_workdir_with_named_usercustom_workdir_with_numeric_user_and_private_parentsuserless_image_uses_default_identitypolicy_identity_overrides_root_image_userdefault_workdir_uses_managed_workspaceunwritable_custom_workdir_is_rejectedMoved from the
OpenShellRunnerhelper toContext(cx.cli,cx.track_sandbox,cx.adopt,cx.delete_sandboxes). It reads the engine fromOPENSHELL_TEST_CONTAINER_ENGINE. Dropped: readingOPENSHELL_BINdirectly (testkit resolves the CLI itself).features/provider-refresh/keycloak (1)
revoked_refresh_grant_requires_user_reauthorizationfeatures/providers/tests/refresh_keycloak.rs::revoked_refresh_grant_requires_user_reauthorization#![cfg(target_os = "linux")]; usescx.cli_envfor secret-from-environment. Not in a plan (needs a Keycloak service on the guest).drivers/podman (1 + 1 unit)
configured_userns_matches_podman_referencefeatures/podman/tests/default_userns.rs::configured_userns_matches_podman_referencefeatures/podman/fixtures/.adjacent_uid_ranges_match_a_combined_mapping#[test])cargo test -p podman.Not ported
Nothing is dropped. The old crates and the
openshell-conformancecrate stay until the cutover PR; the diagnostics and per-step timeouts ofOpenShellRunnerare replaced by testkit's and nextest's (slow-timeout in the runner profile).Not in the plan yet
test-tools.yamltoo.k3s-ready.yaml). The runner only waits for gateway health.sudo -n podmanorpodman) and, for rootless,XDG_RUNTIME_DIRin the runner's session.providers(Keycloak): needs the keycloak Ansible role and the threeOPENSHELL_E2E_OIDC_*variables; the runner has no per-suite guest setup step.podman(userns): needs the gateway reconfigured per userns mode and a reference UID map; the runner provisions one gateway configuration per environment.Testing
test:e2e).Checklist
🤖 Generated with Claude Code