mirror of
https://github.com/containers/podman.git
synced 2025-12-15 19:49:29 +08:00
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>
70 lines
2.4 KiB
Bash
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
|