Skip to content

Commit

Permalink
System tests: light cleanup
Browse files Browse the repository at this point in the history
Followup to containers#15895:
 - add a normal-case test, to ensure that --privileged without
   systemd continues to pass through /dev/ttyN devices
 - explain why we die() if host has no ttyN devices
 - I find grep -vx slightly easier to read than sed backslash-slash
 - run cleanup with '-t 0', to shave ten seconds from CI run

Signed-off-by: Ed Santiago <[email protected]>
  • Loading branch information
edsantiago committed Sep 27, 2022
1 parent f51aeb4 commit 3e80931
Showing 1 changed file with 23 additions and 10 deletions.
33 changes: 23 additions & 10 deletions test/system/030-run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -901,22 +901,35 @@ $IMAGE--c_ok" \
run_podman rm $ctr_name
}

# 15895: --privileged + --systemd = hide /dev/ttyNN
@test "podman run --privileged as root with systemd will not mount /dev/tty" {
skip_if_rootless "this test only makes sense as root"

ctr_name="container-$(random_string 5)"
run_podman run --rm -d --privileged --systemd=always --name "$ctr_name" "$IMAGE" /home/podman/pause
# First, confirm that we _have_ /dev/ttyNN devices on the host.
# ('skip' would be nicer in some sense... but could hide a regression.
# Fedora, RHEL, Debian, Ubuntu, Gentoo, all have /dev/ttyN, so if
# this ever triggers, it means a real problem we should know about.)
assert "$(ls /dev/tty* | grep -vx /dev/tty)" != "" \
"Expected at least one /dev/ttyN device on host"

TTYs=$(ls /dev/tty*|sed '/^\/dev\/tty$/d')
# Ok now confirm that without --systemd, podman exposes ttyNN devices
run_podman run --rm -d --privileged $IMAGE ./pause
cid="$output"

if [[ $TTYs = "" ]]; then
die "Did not find any /dev/ttyN devices on local host"
else
run_podman exec "$ctr_name" ls /dev/
assert "$(grep tty <<<$output)" = "tty" "There must be no /dev/ttyN devices in the container"
fi
run_podman exec $cid sh -c 'ls /dev/tty*'
assert "$output" != "/dev/tty" \
"ls /dev/tty* without systemd; should have lots of ttyN devices"
run_podman stop -t 0 $cid

# Actual test for 15895: with --systemd, no ttyN devices are passed through
run_podman run --rm -d --privileged --systemd=always $IMAGE ./pause
cid="$output"

run_podman exec $cid sh -c 'ls /dev/tty*'
assert "$output" = "/dev/tty" \
"ls /dev/tty* with --systemd=always: should have no ttyN devices"

run_podman stop "$ctr_name"
run_podman stop -t 0 $cid
}

# vim: filetype=sh

0 comments on commit 3e80931

Please sign in to comment.