summaryrefslogtreecommitdiff
path: root/test/system/030-run.bats
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2019-02-20 13:19:20 -0700
committerEd Santiago <santiago@redhat.com>2019-03-07 13:09:54 -0700
commit681eae9bcc856f8dad107765a97c29d0fe093d4a (patch)
treea8224181c5b01ebfece7e309117b9bc1d4e5a9a0 /test/system/030-run.bats
parent1b253cf73a360557196213684cec63b37407ed7c (diff)
downloadpodman-681eae9bcc856f8dad107765a97c29d0fe093d4a.tar.gz
podman-681eae9bcc856f8dad107765a97c29d0fe093d4a.tar.bz2
podman-681eae9bcc856f8dad107765a97c29d0fe093d4a.zip
new system tests under BATS
Initial attempt at writing a framework for podman system tests. The idea is to define a useful set of primitives that will make it easy to write actual tests and to interpret results of failing ones. This is a proof-of-concept right now; only a small number of tests, by no means comprehensive. I am requesting review in order to find showstopper problems: reasons why this approach cannot work. Should there be none, we can work toward running these as gating tests for Fedora and RHEL8. Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'test/system/030-run.bats')
-rw-r--r--test/system/030-run.bats32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/system/030-run.bats b/test/system/030-run.bats
new file mode 100644
index 000000000..d1f87d554
--- /dev/null
+++ b/test/system/030-run.bats
@@ -0,0 +1,32 @@
+#!/usr/bin/env bats
+
+load helpers
+
+@test "podman run - basic tests" {
+ rand=$(random_string 30)
+ tests="
+true | 0 |
+false | 1 |
+sh -c 'exit 32' | 32 |
+echo $rand | 0 | $rand
+/no/such/command | 127 | Error: container create failed:.*exec:.* no such file or dir
+/etc | 126 | Error: container create failed:.*exec:.* permission denied
+"
+
+ while read cmd expected_rc expected_output; do
+ if [ "$expected_output" = "''" ]; then expected_output=""; fi
+
+ # THIS IS TRICKY: this is what lets us handle a quoted command.
+ # Without this incantation (and the "$@" below), the cmd string
+ # gets passed on as individual tokens: eg "sh" "-c" "'exit" "32'"
+ # (note unmatched opening and closing single-quotes in the last 2).
+ # That results in a bizarre and hard-to-understand failure
+ # in the BATS 'run' invocation.
+ # This should really be done inside parse_table; I can't find
+ # a way to do so.
+ eval set "$cmd"
+
+ run_podman $expected_rc run $PODMAN_TEST_IMAGE_FQN "$@"
+ is "$output" "$expected_output" "podman run $cmd - output"
+ done < <(parse_table "$tests")
+}