#!/bin/bash # # Simple podman tests # set -x exec >/tmp/test.debug.log 2>&1 echo "************************************************************************" echo "* This log contains the debug output from test_podman.sh." echo "*" echo "* Short test PASS/FAIL summary is in test.log" echo "************************************************************************" rm -f /tmp/test.log touch /tmp/test.log counter_file=/tmp/test.counter.txt echo 0 >| $counter_file do_test() { local cmd="$1"; shift local expected_status="$1"; shift local expected_stdout="$1"; shift counter=$(expr $(< $counter_file) + 1) echo $counter >| $counter_file # Make debug log easier to read echo echo "--------------------------------------------------------------------" echo "-- test $counter" echo stdout=$(eval podman $cmd) status=$? if [ $status -ne $expected_status ]; then echo "FAIL $counter $cmd: status=$status (expected $expected_status)" >>/tmp/test.log return fi if [ "$expected_stdout" = "-" ]; then : elif [ -z "$expected_stdout" ]; then if [ -n "$stdout" ]; then echo "FAIL $counter $cmd : stdout='$stdout' (expected '')" >>/tmp/test.log return fi else if ! expr "$stdout" : "$expected_stdout"; then echo "FAIL $counter $cmd : stdout='$stdout' (expected '$expected_stdout')" >>/tmp/test.log return fi fi echo "PASS $counter $cmd" >>/tmp/test.log } # Clean slate do_test "rm -a -f" 0 "-" do_test "rmi -a -f" 0 "-" do_test "info --format '{{.host.rootless}}'" 0 "false" do_test "info --format '{{.store.GraphDriverName}}'" 0 "overlay" do_test "pull alpine" 0 "-" do_test "images --format {{.Repository}}:{{.Tag}}" 0 \ "docker.io/library/alpine:latest" do_test "run alpine sh -c 'echo hi'" 0 "hi" do_test "run alpine date" 0 "-" do_test "run alpine /bin/false" 1 "" do_test "ps -a | wc -l" 0 "4" do_test "ps -a | grep false | grep -q 'Exited (1)'" 0 "" # Final exit status: nonzero if the word FAIL is present in results if grep -q FAIL /tmp/test.log; then exit 1 fi exit 0