mirror of
https://github.com/containers/podman
synced 2024-10-21 01:34:37 +00:00
21c9dc3c40
Add --time flag to podman container rm Add --time flag to podman pod rm Add --time flag to podman volume rm Add --time flag to podman network rm Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
109 lines
3.3 KiB
Bash
109 lines
3.3 KiB
Bash
#!/usr/bin/env bats -*- bats -*-
|
|
#
|
|
# tests for podman import
|
|
#
|
|
|
|
load helpers
|
|
|
|
@test "podman import" {
|
|
local archive=$PODMAN_TMPDIR/archive.tar
|
|
local random_content=$(random_string 12)
|
|
# Generate a random name and tag (must be lower-case)
|
|
local random_name=x0$(random_string 12 | tr A-Z a-z)
|
|
local random_tag=t0$(random_string 7 | tr A-Z a-z)
|
|
local fqin=localhost/$random_name:$random_tag
|
|
|
|
run_podman run --name import $IMAGE sh -c "echo ${random_content} > /random.txt"
|
|
run_podman export import -o $archive
|
|
run_podman rm -t 0 -f import
|
|
|
|
# Simple import
|
|
run_podman import -q $archive
|
|
iid="$output"
|
|
run_podman run --rm $iid cat /random.txt
|
|
is "$output" "$random_content" "simple import"
|
|
run_podman rmi -f $iid
|
|
|
|
# Simple import via stdin
|
|
run_podman import -q - < <(cat $archive)
|
|
iid="$output"
|
|
run_podman run --rm $iid cat /random.txt
|
|
is "$output" "$random_content" "simple import via stdin"
|
|
run_podman rmi -f $iid
|
|
|
|
# Tagged import
|
|
run_podman import -q $archive $fqin
|
|
run_podman run --rm $fqin cat /random.txt
|
|
is "$output" "$random_content" "tagged import"
|
|
run_podman rmi -f $fqin
|
|
|
|
# Tagged import via stdin
|
|
run_podman import -q - $fqin < <(cat $archive)
|
|
run_podman run --rm $fqin cat /random.txt
|
|
is "$output" "$random_content" "tagged import via stdin"
|
|
run_podman rmi -f $fqin
|
|
}
|
|
|
|
@test "podman export, alter tarball, re-import" {
|
|
|
|
# Create a test file following test
|
|
mkdir $PODMAN_TMPDIR/tmp
|
|
touch $PODMAN_TMPDIR/testfile1
|
|
echo "modified tar file" >> $PODMAN_TMPDIR/tmp/testfile2
|
|
|
|
# Create Dockerfile for test
|
|
dockerfile=$PODMAN_TMPDIR/Dockerfile
|
|
|
|
cat >$dockerfile <<EOF
|
|
FROM $IMAGE
|
|
ADD testfile1 /tmp
|
|
WORKDIR /tmp
|
|
EOF
|
|
|
|
b_img=before_change_img
|
|
b_cnt=before_change_cnt
|
|
a_img=after_change_img
|
|
a_cnt=after_change_cnt
|
|
|
|
# Build from Dockerfile FROM non-existing local image
|
|
run_podman build -t $b_img $PODMAN_TMPDIR
|
|
run_podman create --name $b_cnt $b_img
|
|
|
|
# Export built container as tarball
|
|
run_podman export -o $PODMAN_TMPDIR/$b_cnt.tar $b_cnt
|
|
run_podman rm -t 0 -f $b_cnt
|
|
|
|
# Modify tarball contents
|
|
tar --delete -f $PODMAN_TMPDIR/$b_cnt.tar tmp/testfile1
|
|
tar -C $PODMAN_TMPDIR -rf $PODMAN_TMPDIR/$b_cnt.tar tmp/testfile2
|
|
|
|
# Import tarball and Tag imported image
|
|
run_podman import -q $PODMAN_TMPDIR/$b_cnt.tar \
|
|
--change "CMD sh -c \
|
|
\"trap 'exit 33' 2;
|
|
while true; do sleep 0.05;done\"" $a_img
|
|
|
|
# Run imported image to confirm tarball modification, block on non-special signal
|
|
run_podman run --name $a_cnt -d $a_img
|
|
|
|
# Confirm testfile1 is deleted from tarball
|
|
run_podman 1 exec $a_cnt cat /tmp/testfile1
|
|
is "$output" ".*can't open '/tmp/testfile1': No such file or directory"
|
|
|
|
# Confirm testfile2 is added to tarball
|
|
run_podman exec $a_cnt cat /tmp/testfile2
|
|
is "$output" "modified tar file" "modify tarball content"
|
|
|
|
# Kill can send non-TERM/KILL signal to container to exit
|
|
run_podman kill --signal 2 $a_cnt
|
|
run_podman wait $a_cnt
|
|
|
|
# Confirm exit within timeout
|
|
run_podman ps -a --filter name=$a_cnt --format '{{.Status}}'
|
|
is "$output" "Exited (33) .*" "Exit by non-TERM/KILL"
|
|
|
|
run_podman rm -t 0 -f $a_cnt
|
|
run_podman rmi $b_img $a_img
|
|
|
|
}
|