Files
podman/test/system/045-start.bats
Ed Santiago 97ee411465 system tests: add assert(), and start using it
Problem: the system test 'is()' checker was poorly thought out.
For example, there is no way to check for inequality or for
absence of a substring.

Solution, step 1: introduce new assert(), copied almost verbatim
from buildah, where it has been successful in addressing the
gaps in is().

The logical next step is to search the tests for 'die' and
for 'run', looking for negative assertions which we can
replace with assert(). There were a lot, and in the process
I found a number of ugly bugs in the tests themselves. I've
taken the liberty of fixing these.

Important note: at this time we have both assert() and is().
Replacing all instances of is() would be impossible to review.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-04-20 16:14:42 -06:00

70 lines
2.4 KiB
Bash

#!/usr/bin/env bats -*- bats -*-
load helpers
@test "podman start --all - start all containers" {
# Run a bunch of short-lived containers, with different --restart settings
run_podman run -d $IMAGE /bin/true
cid_none_implicit="$output"
run_podman run -d --restart=no $IMAGE /bin/false
cid_none_explicit="$output"
run_podman run -d --restart=on-failure $IMAGE /bin/true
cid_on_failure="$output"
# Run one longer-lived one.
run_podman run -d --restart=always $IMAGE sleep 20
cid_always="$output"
run_podman wait $cid_none_implicit $cid_none_explicit $cid_on_failure
run_podman start --all
is "$output" ".*$cid_none_implicit" "started: container with no --restart"
is "$output" ".*$cid_none_explicit" "started: container with --restart=no"
is "$output" ".*$cid_on_failure" "started: container with --restart=on-failure"
assert "$output" !~ "$cid_always" \
"podman start --all should not restart a running container"
run_podman wait $cid_none_implicit $cid_none_explicit $cid_on_failure
run_podman rm $cid_none_implicit $cid_none_explicit $cid_on_failure
run_podman stop -t 1 $cid_always
run_podman rm $cid_always
}
@test "podman start --all with incompatible options" {
expected="Error: either start all containers or the container(s) provided in the arguments"
run_podman 125 start --all 12333
is "$output" "$expected" "start --all, with args, throws error"
}
@test "podman start --filter - start only containers that match the filter" {
run_podman run -d $IMAGE /bin/true
cid="$output"
run_podman start --filter restart-policy=always $cid
is "$output" "" "CID of restart-policy=always container"
run_podman start --filter restart-policy=none $cid
is "$output" "$cid" "CID of restart-policy=none container"
}
@test "podman start --filter invalid-restart-policy - return error" {
run_podman run -d $IMAGE /bin/true
cid="$output"
run_podman 125 start --filter restart-policy=fakepolicy $cid
is "$output" "Error: fakepolicy invalid restart policy" \
"CID of restart-policy=<not-exists> container"
}
@test "podman start --all --filter" {
run_podman run -d $IMAGE /bin/true
cid_exited_0="$output"
run_podman run -d $IMAGE /bin/false
cid_exited_1="$output"
run_podman wait $cid_exited_0 $cid_exited_1
run_podman start --all --filter exited=0
is "$output" "$cid_exited_0"
}
# vim: filetype=sh