mirror of
https://github.com/containers/podman.git
synced 2025-06-24 19:42:56 +08:00
Merge pull request #7719 from vrothberg/fix-multi-image-save
podman save: fix redirect of multi-images
This commit is contained in:
@ -94,6 +94,7 @@ func save(cmd *cobra.Command, args []string) (finalErr error) {
|
||||
return errors.Errorf("--compress can only be set when --format is either 'oci-dir' or 'docker-dir'")
|
||||
}
|
||||
if len(saveOpts.Output) == 0 {
|
||||
saveOpts.Quiet = true
|
||||
fi := os.Stdout
|
||||
if terminal.IsTerminal(int(fi.Fd())) {
|
||||
return errors.Errorf("refusing to save to terminal. Use -o flag or redirect")
|
||||
@ -122,12 +123,6 @@ func save(cmd *cobra.Command, args []string) (finalErr error) {
|
||||
tags = args[1:]
|
||||
}
|
||||
|
||||
// Decide whether c/image's progress bars should use stderr or stdout.
|
||||
// If the output is set of stdout, any log message there would corrupt
|
||||
// the tarfile.
|
||||
if saveOpts.Output == os.Stdout.Name() {
|
||||
saveOpts.Quiet = true
|
||||
}
|
||||
err := registry.ImageEngine().Save(context.Background(), args[0], tags, saveOpts)
|
||||
if err == nil {
|
||||
succeeded = true
|
||||
|
@ -147,4 +147,45 @@ verify_iid_and_name() {
|
||||
"Diagnostic from 'podman load' without redirection or -i"
|
||||
}
|
||||
|
||||
@test "podman load - multi-image archive" {
|
||||
img1="quay.io/libpod/testimage:00000000"
|
||||
img2="quay.io/libpod/testimage:20200902"
|
||||
archive=$PODMAN_TMPDIR/myimage-$(random_string 8).tar
|
||||
|
||||
run_podman pull $img1
|
||||
run_podman pull $img2
|
||||
|
||||
run_podman save -m -o $archive $img1 $img2
|
||||
run_podman rmi -f $img1 $img2
|
||||
run_podman load -i $archive
|
||||
|
||||
run_podman image exists $img1
|
||||
run_podman image exists $img2
|
||||
run_podman rmi -f $img1 $img2
|
||||
}
|
||||
|
||||
@test "podman load - multi-image archive with redirect" {
|
||||
img1="quay.io/libpod/testimage:00000000"
|
||||
img2="quay.io/libpod/testimage:20200902"
|
||||
archive=$PODMAN_TMPDIR/myimage-$(random_string 8).tar
|
||||
|
||||
run_podman pull $img1
|
||||
run_podman pull $img2
|
||||
|
||||
# We can't use run_podman because that uses the BATS 'run' function
|
||||
# which redirects stdout and stderr. Here we need to guarantee
|
||||
# that podman's stdout is a pipe, not any other form of redirection
|
||||
$PODMAN save -m $img1 $img2 | cat >$archive
|
||||
if [ "$status" -ne 0 ]; then
|
||||
die "Command failed: podman save ... | cat"
|
||||
fi
|
||||
|
||||
run_podman rmi -f $img1 $img2
|
||||
run_podman load -i $archive
|
||||
|
||||
run_podman image exists $img1
|
||||
run_podman image exists $img2
|
||||
run_podman rmi -f $img1 $img2
|
||||
}
|
||||
|
||||
# vim: filetype=sh
|
||||
|
Reference in New Issue
Block a user