summaryrefslogtreecommitdiff
path: root/test/system
diff options
context:
space:
mode:
Diffstat (limited to 'test/system')
-rw-r--r--test/system/005-info.bats4
-rw-r--r--test/system/030-run.bats55
-rw-r--r--test/system/120-load.bats41
-rw-r--r--test/system/helpers.bash7
-rwxr-xr-xtest/system/helpers.t9
5 files changed, 112 insertions, 4 deletions
diff --git a/test/system/005-info.bats b/test/system/005-info.bats
index 3f1efd364..7452c1901 100644
--- a/test/system/005-info.bats
+++ b/test/system/005-info.bats
@@ -19,6 +19,8 @@ graphRoot:
graphStatus:
imageStore:\\\s\\\+number: 1
runRoot:
+cgroupManager: \\\(systemd\\\|cgroupfs\\\)
+cgroupVersion: v[12]
"
while read expect; do
is "$output" ".*$expect" "output includes '$expect'"
@@ -34,6 +36,8 @@ runRoot:
tests="
host.buildahVersion | [0-9.]
host.conmon.path | $expr_path
+host.cgroupManager | \\\(systemd\\\|cgroupfs\\\)
+host.cgroupVersion | v[12]
host.ociRuntime.path | $expr_path
store.configFile | $expr_path
store.graphDriverName | [a-z0-9]\\\+\\\$
diff --git a/test/system/030-run.bats b/test/system/030-run.bats
index 518d902a7..11edaf11c 100644
--- a/test/system/030-run.bats
+++ b/test/system/030-run.bats
@@ -61,8 +61,8 @@ echo $rand | 0 | $rand
is "$tests_run" "$(grep . <<<$tests | wc -l)" "Ran the full set of tests"
}
-@test "podman run - globle runtime option" {
- skip_if_remote "runtime flag is not passing over remote"
+@test "podman run - global runtime option" {
+ skip_if_remote "runtime flag is not passed over remote"
run_podman 126 --runtime-flag invalidflag run --rm $IMAGE
is "$output" ".*invalidflag" "failed when passing undefined flags to the runtime"
}
@@ -337,4 +337,55 @@ echo $rand | 0 | $rand
run_podman wait $cid
}
+# For #7754: json-file was equating to 'none'
+@test "podman run --log-driver" {
+ # '-' means that LogPath will be blank and there's no easy way to test
+ tests="
+none | -
+journald | -
+k8s-file | y
+json-file | f
+"
+ while read driver do_check; do
+ msg=$(random_string 15)
+ run_podman run --name myctr --log-driver $driver $IMAGE echo $msg
+
+ # Simple output check
+ # Special case: 'json-file' emits a warning, the rest do not
+ # ...but with podman-remote the warning is on the server only
+ if [[ $do_check == 'f' ]] && ! is_remote; then # 'f' for 'fallback'
+ is "${lines[0]}" ".* level=error msg=\"json-file logging specified but not supported. Choosing k8s-file logging instead\"" \
+ "Fallback warning emitted"
+ is "${lines[1]}" "$msg" "basic output sanity check (driver=$driver)"
+ else
+ is "$output" "$msg" "basic output sanity check (driver=$driver)"
+ fi
+
+ # Simply confirm that podman preserved our argument as-is
+ run_podman inspect --format '{{.HostConfig.LogConfig.Type}}' myctr
+ is "$output" "$driver" "podman inspect: driver"
+
+ # If LogPath is non-null, check that it exists and has a valid log
+ run_podman inspect --format '{{.LogPath}}' myctr
+ if [[ $do_check != '-' ]]; then
+ is "$output" "/.*" "LogPath (driver=$driver)"
+ if ! test -e "$output"; then
+ die "LogPath (driver=$driver) does not exist: $output"
+ fi
+ # eg 2020-09-23T13:34:58.644824420-06:00 stdout F 7aiYtvrqFGJWpak
+ is "$(< $output)" "[0-9T:.+-]\+ stdout F $msg" \
+ "LogPath contents (driver=$driver)"
+ else
+ is "$output" "" "LogPath (driver=$driver)"
+ fi
+ run_podman rm myctr
+ done < <(parse_table "$tests")
+
+ # Invalid log-driver argument
+ run_podman 125 run --log-driver=InvalidDriver $IMAGE true
+ is "$output" "Error: error running container create option: invalid log driver: invalid argument" \
+ "--log-driver InvalidDriver"
+}
+
+
# vim: filetype=sh
diff --git a/test/system/120-load.bats b/test/system/120-load.bats
index d7aa16d95..8ea9b1c69 100644
--- a/test/system/120-load.bats
+++ b/test/system/120-load.bats
@@ -147,4 +147,45 @@ verify_iid_and_name() {
"Diagnostic from 'podman load' without redirection or -i"
}
+@test "podman load - multi-image archive" {
+ img1="quay.io/libpod/testimage:00000000"
+ img2="quay.io/libpod/testimage:20200902"
+ archive=$PODMAN_TMPDIR/myimage-$(random_string 8).tar
+
+ run_podman pull $img1
+ run_podman pull $img2
+
+ run_podman save -m -o $archive $img1 $img2
+ run_podman rmi -f $img1 $img2
+ run_podman load -i $archive
+
+ run_podman image exists $img1
+ run_podman image exists $img2
+ run_podman rmi -f $img1 $img2
+}
+
+@test "podman load - multi-image archive with redirect" {
+ img1="quay.io/libpod/testimage:00000000"
+ img2="quay.io/libpod/testimage:20200902"
+ archive=$PODMAN_TMPDIR/myimage-$(random_string 8).tar
+
+ run_podman pull $img1
+ run_podman pull $img2
+
+ # We can't use run_podman because that uses the BATS 'run' function
+ # which redirects stdout and stderr. Here we need to guarantee
+ # that podman's stdout is a pipe, not any other form of redirection
+ $PODMAN save -m $img1 $img2 | cat >$archive
+ if [ "$status" -ne 0 ]; then
+ die "Command failed: podman save ... | cat"
+ fi
+
+ run_podman rmi -f $img1 $img2
+ run_podman load -i $archive
+
+ run_podman image exists $img1
+ run_podman image exists $img2
+ run_podman rmi -f $img1 $img2
+}
+
# vim: filetype=sh
diff --git a/test/system/helpers.bash b/test/system/helpers.bash
index 514ba249e..112b73962 100644
--- a/test/system/helpers.bash
+++ b/test/system/helpers.bash
@@ -376,7 +376,12 @@ function parse_table() {
while read col; do
dprint "col=<<$col>>"
row+=("$col")
- done < <(echo "$line" | tr '|' '\012' | sed -e 's/^ *//' -e 's/\\/\\\\/g')
+ done < <(echo "$line" | sed -E -e 's/(^|\s)\|(\s|$)/\n /g' | sed -e 's/^ *//' -e 's/\\/\\\\/g')
+ # the above seds:
+ # 1) Convert '|' to newline, but only if bracketed by spaces or
+ # at beginning/end of line (this allows 'foo|bar' in tests);
+ # 2) then remove leading whitespace;
+ # 3) then double-escape all backslashes
printf "%q " "${row[@]}"
printf "\n"
diff --git a/test/system/helpers.t b/test/system/helpers.t
index 7a331174b..190e8ba35 100755
--- a/test/system/helpers.t
+++ b/test/system/helpers.t
@@ -85,7 +85,7 @@ while read x y z; do
check_result "$x" "''" "empty string - left-hand"
check_result "$y" "''" "empty string - middle"
check_result "$z" "''" "empty string - right"
-done < <(parse_table " | |")
+done < <(parse_table " | |")
# Quotes
while read x y z;do
@@ -108,6 +108,13 @@ while read x y z;do
check_result "$3" "g" "double quotes - token split - 3"
done < <(parse_table "a 'b c' | d \"e f\" g | h")
+# Split on '|' only when bracketed by spaces or at beginning/end of line
+while read x y z;do
+ check_result "$x" "|x" "pipe in strings - pipe at start"
+ check_result "$y" "y|y1" "pipe in strings - pipe in middle"
+ check_result "$z" "z|" "pipe in strings - pipe at end"
+done < <(parse_table "|x | y|y1 | z|")
+
# END test the parse_table helper
###############################################################################
# BEGIN dprint