system tests: new rm, build tests
- rm: confirm 'rm' and 'rm -f' on running container - build: shotgun test of workdir, cmd, env, labels The new build test cd's to a temporary directory, which broke test invocations using a relative path (./bin/podman). Added code to detect relative paths and convert them to absolute. Signed-off-by: Ed Santiago <santiago@redhat.com>
This commit is contained in:
		
							parent
							
								
									22942e392d
								
							
						
					
					
						commit
						d4504e6f53
					
				| 
						 | 
				
			
			@ -21,6 +21,18 @@ load helpers
 | 
			
		|||
    run_podman 125 inspect $rand
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "podman rm - running container, w/o and w/ force" {
 | 
			
		||||
    run_podman run -d $IMAGE sleep 5
 | 
			
		||||
    cid="$output"
 | 
			
		||||
 | 
			
		||||
    # rm should fail
 | 
			
		||||
    run_podman 2 rm $cid
 | 
			
		||||
    is "$output" "Error: cannot remove container $cid as it is running - running or paused containers cannot be removed without force: container state improper" "error message"
 | 
			
		||||
 | 
			
		||||
    # rm -f should succeed
 | 
			
		||||
    run_podman rm -f $cid
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# I'm sorry! This test takes 13 seconds. There's not much I can do about it,
 | 
			
		||||
# please know that I think it's justified: podman 1.5.0 had a strange bug
 | 
			
		||||
# in with exit status was not preserved on some code paths with 'rm -f'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -99,6 +99,84 @@ EOF
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@test "podman build - workdir, cmd, env, label" {
 | 
			
		||||
    tmpdir=$PODMAN_TMPDIR/build-test
 | 
			
		||||
    mkdir -p $tmpdir
 | 
			
		||||
 | 
			
		||||
    # Random workdir, and multiple random strings to verify command & env
 | 
			
		||||
    workdir=/$(random_string 10)
 | 
			
		||||
    s_echo=$(random_string 15)
 | 
			
		||||
    s_env1=$(random_string 20)
 | 
			
		||||
    s_env2=$(random_string 25)
 | 
			
		||||
    s_env3=$(random_string 30)
 | 
			
		||||
 | 
			
		||||
    # Label name: make sure it begins with a letter! jq barfs if you
 | 
			
		||||
    # try to ask it for '.foo.<N>xyz', i.e. any string beginning with digit
 | 
			
		||||
    label_name=l$(random_string 8)
 | 
			
		||||
    label_value=$(random_string 12)
 | 
			
		||||
 | 
			
		||||
    # Command to run on container startup with no args
 | 
			
		||||
    cat >$tmpdir/mycmd <<EOF
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
pwd
 | 
			
		||||
echo "\$1"
 | 
			
		||||
echo "\$MYENV1"
 | 
			
		||||
echo "\$MYENV2"
 | 
			
		||||
echo "\$MYENV3"
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
    cat >$tmpdir/Containerfile <<EOF
 | 
			
		||||
FROM $IMAGE
 | 
			
		||||
LABEL $label_name=$label_value
 | 
			
		||||
RUN mkdir $workdir
 | 
			
		||||
WORKDIR $workdir
 | 
			
		||||
ENV MYENV1=$s_env1
 | 
			
		||||
ENV MYENV2 $s_env2
 | 
			
		||||
ENV MYENV3 this-should-be-overridden
 | 
			
		||||
ADD mycmd /bin/mydefaultcmd
 | 
			
		||||
RUN chmod 755 /bin/mydefaultcmd
 | 
			
		||||
CMD ["/bin/mydefaultcmd","$s_echo"]
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
    # cd to the dir, so we test relative paths (important for podman-remote)
 | 
			
		||||
    cd $PODMAN_TMPDIR
 | 
			
		||||
    run_podman build -t build_test -f build-test/Containerfile build-test
 | 
			
		||||
 | 
			
		||||
    # Run without args - should run the above script. Verify its output.
 | 
			
		||||
    run_podman run --rm -e MYENV3="$s_env3" build_test
 | 
			
		||||
    is "${lines[0]}" "$workdir" "container default command: pwd"
 | 
			
		||||
    is "${lines[1]}" "$s_echo"  "container default command: output from echo"
 | 
			
		||||
    is "${lines[2]}" "$s_env1"  "container default command: env1"
 | 
			
		||||
    is "${lines[3]}" "$s_env2"  "container default command: env2"
 | 
			
		||||
    is "${lines[4]}" "$s_env3"  "container default command: env3 (from cmdline)"
 | 
			
		||||
 | 
			
		||||
    # test that workdir is set for command-line commands also
 | 
			
		||||
    run_podman run --rm build_test pwd
 | 
			
		||||
    is "$output" "$workdir" "pwd command in container"
 | 
			
		||||
 | 
			
		||||
    # Confirm that 'podman inspect' shows the expected values
 | 
			
		||||
    # FIXME: can we rely on .Env[0] being PATH, and the rest being in order??
 | 
			
		||||
    run_podman image inspect build_test
 | 
			
		||||
    tests="
 | 
			
		||||
Env[1]             | MYENV1=$s_env1
 | 
			
		||||
Env[2]             | MYENV2=$s_env2
 | 
			
		||||
Env[3]             | MYENV3=this-should-be-overridden
 | 
			
		||||
Cmd[0]             | /bin/mydefaultcmd
 | 
			
		||||
Cmd[1]             | $s_echo
 | 
			
		||||
WorkingDir         | $workdir
 | 
			
		||||
Labels.$label_name | $label_value
 | 
			
		||||
"
 | 
			
		||||
 | 
			
		||||
    parse_table "$tests" | while read field expect; do
 | 
			
		||||
        actual=$(jq -r ".[0].Config.$field" <<<"$output")
 | 
			
		||||
        dprint "# actual=<$actual> expect=<$expect}>"
 | 
			
		||||
        is "$actual" "$expect" "jq .Config.$field"
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    # Clean up
 | 
			
		||||
    run_podman rmi -f build_test
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function teardown() {
 | 
			
		||||
    # A timeout or other error in 'build' can leave behind stale images
 | 
			
		||||
    # that podman can't even see and which will cascade into subsequent
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,12 @@
 | 
			
		|||
 | 
			
		||||
# Podman command to run; may be podman-remote
 | 
			
		||||
PODMAN=${PODMAN:-podman}
 | 
			
		||||
# If it's a relative path, convert to absolute; otherwise tests can't cd out
 | 
			
		||||
if [[ "$PODMAN" =~ / ]]; then
 | 
			
		||||
    if [[ ! "$PODMAN" =~ ^/ ]]; then
 | 
			
		||||
        PODMAN=$(realpath $PODMAN)
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Standard image to use for most tests
 | 
			
		||||
PODMAN_TEST_IMAGE_REGISTRY=${PODMAN_TEST_IMAGE_REGISTRY:-"quay.io"}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue