mirror of
https://github.com/containers/podman.git
synced 2025-06-24 03:08:13 +08:00
System tests: cleanup in --format test
Followup to #15673 (--format with newlines). I cobbled up a test for it, but I was sloppy, so the test had issues that I kept having to band-aid. This is a cleaner way to handle podman-machine. ...and, another unexpected surprise with podman stats. It fails under rootless cgroupsv1. We can't sweep it under the rug via skip_if_ubuntu because tests will then fail on RHEL8. So, add a similar mechanism for testing podman stats. ...plus a non-surprise, the 'search' test flakes. Try minimizing that by searching only $IMAGE. If quay.io is down, other tests will certainly fail. Signed-off-by: Ed Santiago <santiago@redhat.com>
This commit is contained in:
@ -25,24 +25,26 @@ history | $IMAGE
|
|||||||
image history | $IMAGE
|
image history | $IMAGE
|
||||||
image inspect | $IMAGE
|
image inspect | $IMAGE
|
||||||
container inspect | mycontainer
|
container inspect | mycontainer
|
||||||
machine inspect | mymachine
|
|
||||||
|
|
||||||
volume inspect | -a
|
volume inspect | -a
|
||||||
secret inspect | mysecret
|
secret inspect | mysecret
|
||||||
network inspect | podman
|
network inspect | podman
|
||||||
ps | -a
|
ps | -a
|
||||||
|
|
||||||
image search | sdfsdf
|
image search | $IMAGE
|
||||||
search | sdfsdf
|
search | $IMAGE
|
||||||
|
|
||||||
pod inspect | mypod
|
pod inspect | mypod
|
||||||
|
|
||||||
container stats | --no-stream
|
|
||||||
pod stats | --no-stream
|
|
||||||
stats | --no-stream
|
|
||||||
events | --stream=false --events-backend=file
|
events | --stream=false --events-backend=file
|
||||||
"
|
"
|
||||||
|
|
||||||
|
# podman machine is finicky. Assume we can't run it, but see below for more.
|
||||||
|
can_run_podman_machine=
|
||||||
|
|
||||||
|
# podman stats, too
|
||||||
|
can_run_stats=
|
||||||
|
|
||||||
# Main test loop. Recursively runs 'podman [subcommand] help', looks for:
|
# Main test loop. Recursively runs 'podman [subcommand] help', looks for:
|
||||||
# > '[command]', which indicates, recurse; or
|
# > '[command]', which indicates, recurse; or
|
||||||
# > '--format', in which case we
|
# > '--format', in which case we
|
||||||
@ -50,12 +52,12 @@ events | --stream=false --events-backend=file
|
|||||||
# > run the command with --format '{{"\n"}}' and make sure it passes
|
# > run the command with --format '{{"\n"}}' and make sure it passes
|
||||||
function check_subcommand() {
|
function check_subcommand() {
|
||||||
for cmd in $(_podman_commands "$@"); do
|
for cmd in $(_podman_commands "$@"); do
|
||||||
# Special case: 'podman machine' can't be run as root. No override.
|
# Special case: 'podman machine' can only be run under ideal conditions
|
||||||
if [[ "$cmd" = "machine" ]]; then
|
if [[ "$cmd" = "machine" ]] && [[ -z "$can_run_podman_machine" ]]; then
|
||||||
if ! is_rootless; then
|
continue
|
||||||
unset extra_args["podman machine inspect"]
|
fi
|
||||||
continue
|
if [[ "$cmd" = "stats" ]] && [[ -z "$can_run_stats" ]]; then
|
||||||
fi
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Human-readable podman command string, with multiple spaces collapsed
|
# Human-readable podman command string, with multiple spaces collapsed
|
||||||
@ -129,8 +131,31 @@ function check_subcommand() {
|
|||||||
# Test entry point
|
# Test entry point
|
||||||
@test "check Go template formatting" {
|
@test "check Go template formatting" {
|
||||||
skip_if_remote
|
skip_if_remote
|
||||||
if is_ubuntu; then
|
|
||||||
skip 'ubuntu VMs do not have qemu (exec: "qemu-system-x86_64": executable file not found in $PATH)'
|
# Setup: some commands need a container, pod, secret, ...
|
||||||
|
run_podman run -d --name mycontainer $IMAGE top
|
||||||
|
run_podman pod create mypod
|
||||||
|
run_podman secret create mysecret /etc/hosts
|
||||||
|
|
||||||
|
# ...or machine. But podman machine is ultra-finicky, it fails as root
|
||||||
|
# or if qemu is missing. Instead of checking for all the possible ways
|
||||||
|
# to skip it, just try running init. If it works, we can test it.
|
||||||
|
run_podman '?' machine init --image-path=/dev/null mymachine
|
||||||
|
if [[ $status -eq 0 ]]; then
|
||||||
|
can_run_podman_machine=true
|
||||||
|
extra_args_table+="
|
||||||
|
machine inspect | mymachine
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Similarly, 'stats' cannot run rootless under cgroups v1
|
||||||
|
if ! is_rootless || is_cgroupsv2; then
|
||||||
|
can_run_stats=true
|
||||||
|
extra_args_table+="
|
||||||
|
container stats | --no-stream
|
||||||
|
pod stats | --no-stream
|
||||||
|
stats | --no-stream
|
||||||
|
"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Convert the table at top to an associative array, keyed on subcommand
|
# Convert the table at top to an associative array, keyed on subcommand
|
||||||
@ -139,14 +164,6 @@ function check_subcommand() {
|
|||||||
extra_args["podman $subcommand"]=$extra
|
extra_args["podman $subcommand"]=$extra
|
||||||
done < <(parse_table "$extra_args_table")
|
done < <(parse_table "$extra_args_table")
|
||||||
|
|
||||||
# Setup: some commands need a container, pod, machine, or secret
|
|
||||||
run_podman run -d --name mycontainer $IMAGE top
|
|
||||||
run_podman pod create mypod
|
|
||||||
run_podman secret create mysecret /etc/hosts
|
|
||||||
if is_rootless; then
|
|
||||||
run_podman machine init --image-path=/dev/null mymachine
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Run the test
|
# Run the test
|
||||||
check_subcommand
|
check_subcommand
|
||||||
|
|
||||||
@ -155,9 +172,7 @@ function check_subcommand() {
|
|||||||
run_podman rmi $(pause_image)
|
run_podman rmi $(pause_image)
|
||||||
run_podman rm -f -t0 mycontainer
|
run_podman rm -f -t0 mycontainer
|
||||||
run_podman secret rm mysecret
|
run_podman secret rm mysecret
|
||||||
if is_rootless; then
|
run_podman '?' machine rm -f mymachine
|
||||||
run_podman machine rm -f mymachine
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure there are no leftover commands in our table - this would
|
# Make sure there are no leftover commands in our table - this would
|
||||||
# indicate a typo in the table, or a flaw in our logic such that
|
# indicate a typo in the table, or a flaw in our logic such that
|
||||||
|
Reference in New Issue
Block a user