summaryrefslogtreecommitdiff
path: root/test/system/030-run.bats
diff options
context:
space:
mode:
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")
+}