Skip to content

test(conformance): migrate create-upload tests to file_transfer stories - #4606

Open
politerealism wants to merge 1 commit into
NVIDIA:codex/4119-suite-layoutfrom
politerealism:test/3954-create-upload-stories/politerealism
Open

politerealism wants to merge 1 commit into
NVIDIA:codex/4119-suite-layoutfrom
politerealism:test/3954-create-upload-stories/politerealism

Conversation

@politerealism

Copy link
Copy Markdown
Contributor

Summary

Move the three sandbox create --upload tests from the legacy Podman e2e crate into the file_transfer conformance area as story modules. The behavior isn't Podman-specific, so it belongs with the other file transfer stories and runs against any prepared gateway. Stacked on #4538, which relocates the suites.

Related Issue

Contributes to #3954. No separate issue: this migrates existing coverage.

Changes

  • Add file_transfer/create_upload.rs with three stories, keeping the original test names so filters keep working: create_with_upload_directory_preserves_source_basename, create_with_multiple_uploads and create_with_upload_single_file.
  • Verify uploads by reading files back with sandbox exec and comparing exact content. The originals matched the printed output of sandbox create.
  • Check the nested file in the directory story, and that the directory isn't flattened into the destination. Check each destination separately in the multiple-uploads story.
  • Use the default upload path. The originals passed --no-git-ignore, which isn't needed outside a Git work tree and hid the default path.
  • Create the sandbox from the target's default image, as the README expects. The originals used the e2e test image.
  • Drop the claim that files arrive before the command runs. The CLI rejects --upload together with a command, and the docs say uploads finish after the main process starts, so each story checks the files once create returns, and the module doc notes the limitation.
  • Delete e2e/rust/tests/upload_create.rs and the now-unused SandboxGuard::create_with_upload and create_with_uploads from the legacy harness.

Testing

  • mise run pre-commit passes
  • All six file_transfer tests (these three and the three existing ones) pass against a rootless Podman gateway: cargo test --manifest-path e2e/suites/conformance/Cargo.toml --test file_transfer
  • All five e2e feature sets (e2e, e2e-podman, e2e-docker, e2e-kubernetes, e2e-vm) still compile without warnings
  • Deliberate-failure checks on the same gateway, each failing exactly the intended story: wrong directory content, the not-flattened check inverted, wrong second-upload content, and wrong single-file content.
  • tmachine guests, run on a throwaway branch that combines the three migrations: the full conformance archive passes in the Ubuntu rootful Docker guest (tmachine test ubuntu-docker-rootful binaries conformance) and in the Ubuntu K3s guest (tmachine test ubuntu-k3s k3s conformance). The first Docker run is what exposed the provider-profile dependency fixed in the workspaces PR, and it also failed once on the existing lifecycle stop_start (ContainerExited: Container exited while waiting for Ready), which passed on the rerun. Each PR alone was not run in tmachine.
  • Not run: macOS.

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Architecture docs updated (not applicable)

Move the three `sandbox create --upload` tests from the legacy Podman
e2e crate into the file_transfer conformance area as story modules. The
behavior is not Podman-specific, so it belongs with the other file
transfer stories and runs against any prepared gateway.

Test names are unchanged so filters keep working:
- create_with_upload_directory_preserves_source_basename
- create_with_multiple_uploads
- create_with_upload_single_file

Changes from the originals:
- Verify uploads by reading the files back with `sandbox exec` and
  comparing exact content, instead of matching the printed output of
  `sandbox create`.
- Check the nested file in the directory story, and that the directory
  is not flattened into the destination.
- Check each destination in the multiple-uploads story separately.
- Use the default upload path. The originals passed `--no-git-ignore`,
  which is unnecessary outside a Git work tree and hid the default path.
- Create the sandbox from the target's default image. The originals
  created it from the e2e test image.
- Drop the claim that files arrive before the command runs. The CLI
  rejects `--upload` together with a command, and the docs say uploads
  finish after the main process starts, so each story checks the files
  once `create` returns and documents the limitation.

Remove the now-unused `SandboxGuard::create_with_upload` and
`create_with_uploads` from the legacy harness, and the old test file.

Contributes to NVIDIA#3954

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

copy-pr-bot Bot commented Oct 15, 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.

@politerealism
politerealism marked this pull request as ready for review October 15, 2026 16:36

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant