Make error message matching in 030-run.bats less fragile

Amongst other things 030-run.bats checks for sensible error messages when
attempting a "podman run" with a non-existent or inaccessible path.  It
checks for these messages, which come from the low-level runtime, in a lot
of detail, including separate versions for runc and crun.  This is fragile
in several ways:
  * It's likely to fail if using a runtime other than crun or runc
  * It relies on detecting whether the runtime is crun vs. runc using the
    path, which could fail if the binary has been named something unusual
  * It will break if crun or runc ever alter their error message (even if
    it's just changing case)

This replaces the checked versions with a much more accepting regex which
will work for both the runc and crun messages, while still looking for the
essential pieces.  This isn't guaranteed to work with other runtimes, but
it's much more likely to.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
David Gibson
2022-01-10 17:52:48 +11:00
parent 9241b4e340
commit 0b5136c7ce

View File

@ -5,18 +5,8 @@ load helpers
@test "podman run - basic tests" {
rand=$(random_string 30)
# 2019-09 Fedora 31 and rawhide (32) are switching from runc to crun
# because of cgroups v2; crun emits different error messages.
# Default to runc:
err_no_such_cmd="Error: .*: starting container process caused.*exec:.*stat /no/such/command: no such file or directory"
err_no_exec_dir="Error: .*: starting container process caused.*exec:.* permission denied"
# ...but check the configured runtime engine, and switch to crun as needed
run_podman info --format '{{ .Host.OCIRuntime.Path }}'
if expr "$output" : ".*/crun"; then
err_no_such_cmd="Error: crun: executable file.* not found in \$PATH: No such file or directory: OCI runtime attempted to invoke a command that was not found"
err_no_exec_dir="Error: crun: open executable: Operation not permitted: OCI permission denied"
fi
err_no_such_cmd="Error:.*/no/such/command.*[Nn]o such file or directory"
err_no_exec_dir="Error:.*exec.*permission denied"
tests="
true | 0 |