Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion hack/bats
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ $0 is a wrapper for invoking podman system tests.
match that string.

--tag=TAG Passed on to bats as '--filter-tags TAG'
As of 2023-07-26 the only tag used is 'distro-integration'
As of 2025-09-01 the only tag used is 'ci:parallel'

-t, --tap Passed on to bats, which will format output in TAP format

Expand Down
3 changes: 0 additions & 3 deletions test/system/001-basic.bats
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ function setup() {

#### DO NOT ADD ANY TESTS HERE! ADD NEW TESTS AT BOTTOM!

# bats test_tags=distro-integration
@test "podman version emits reasonable output" {
run_podman version

Expand All @@ -37,7 +36,6 @@ function setup() {
is "$output" "podman.*version \+" "'Version line' in output"
}

# bats test_tags=distro-integration
@test "podman info" {
# These will be displayed on the test output stream, offering an
# at-a-glance overview of important system configuration details
Expand Down Expand Up @@ -72,7 +70,6 @@ function setup() {
"--context=swarm should fail"
}

# bats test_tags=distro-integration
@test "podman can pull an image" {
run_podman rmi -a -f

Expand Down
7 changes: 3 additions & 4 deletions test/system/030-run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ load helpers
load helpers.network
load helpers.registry

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman run - basic tests" {
rand=$(random_string 30)

Expand Down Expand Up @@ -352,7 +352,7 @@ echo $rand | 0 | $rand
}

# #6829 : add username to /etc/passwd inside container if --userns=keep-id
# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman run : add username to /etc/passwd if --userns=keep-id" {
skip_if_not_rootless "--userns=keep-id only works in rootless mode"
# Default: always run as root
Expand Down Expand Up @@ -829,7 +829,6 @@ json-file | f
# podman exec may truncate stdout/stderr; actually a bug in conmon:
# https://github.com/containers/conmon/issues/236
# CANNOT BE PARALLELIZED due to "-l"
# bats test_tags=distro-integration
@test "podman run - does not truncate or hang with big output" {
# Size, in bytes, to dd and to expect in return
char_count=700000
Expand Down Expand Up @@ -1147,7 +1146,7 @@ EOF
run_podman rm $output
}

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman run --device-read-bps" {
skip_if_rootless "cannot use this flag in rootless mode"

Expand Down
2 changes: 0 additions & 2 deletions test/system/032-sig-proxy.bats
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ load helpers
load helpers.sig-proxy

# Each of the tests below does some setup, then invokes the helper from helpers.sig-proxy.bash.

# bats test_tags=distro-integration
@test "podman sigproxy test: run" {
# We're forced to use $PODMAN because run_podman cannot be backgrounded
$PODMAN run -i --name c_run $IMAGE sh -c "$SLEEPLOOP" &
Expand Down
4 changes: 2 additions & 2 deletions test/system/035-logs.bats
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ timeout: sending signal TERM to command.*" "logs --since -f on running container
_log_test_follow_since k8s-file
}

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman logs - --since --follow journald" {
# We can't use journald on RHEL as rootless: rhbz#1895105
skip_if_journald_unavailable
Expand Down Expand Up @@ -398,7 +398,7 @@ $content--2.*" "logs --until -f on running container works"
_log_test_follow_until k8s-file
}

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman logs - --until --follow journald" {
# We can't use journald on RHEL as rootless: rhbz#1895105
skip_if_journald_unavailable
Expand Down
2 changes: 1 addition & 1 deletion test/system/060-mount.bats
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ EOF
is "$output" "bar1.*bar2.*bar3" "Should match multiple source files on single destination directory"
}

# bats test_tags=distro-integration,ci:parallel
# bats test_tags=ci:parallel
@test "podman mount noswap memory mounts" {
# tmpfs+noswap new in kernel 6.x, mid-2023; likely not in RHEL for a while
if ! is_rootless; then
Expand Down
28 changes: 24 additions & 4 deletions test/system/070-build.bats
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
#

load helpers
load helpers.network

# bats test_tags=distro-integration
@test "podman build - basic test" {
rand_filename=$(random_string 20)
rand_content=$(random_string 50)
Expand Down Expand Up @@ -279,24 +279,44 @@ EOF
tmpdir=$PODMAN_TMPDIR/build-test
mkdir -p $tmpdir

# Create a test file with random content
INDEX=$PODMAN_TMPDIR/index.txt
local content="test-$(random_string)"
echo "$content" > $INDEX
echo READY > $PODMAN_TMPDIR/ready

# Setup local webserver
local host_port=$(random_free_port)
local server=http://127.0.0.1:$host_port
serverctr="c1-$(safename)"
run_podman run -d --name $serverctr -p "$host_port:80" \
-v $INDEX:/var/www/index.txt:Z \
-v $PODMAN_TMPDIR/ready:/var/www/ready:Z \
-w /var/www \
$IMAGE /bin/busybox-extras httpd -f -p 80

wait_for_command_output "curl -s -S $server/ready" "READY"

cat >$tmpdir/Dockerfile <<EOF
FROM $IMAGE
ADD https://github.com/containers/podman/blob/main/README.md /tmp/
ADD $server/index.txt /tmp/
EOF

imgname="b-$(safename)"
run_podman build -t $imgname $tmpdir
run_podman run --rm $imgname stat /tmp/README.md
run_podman run --rm $imgname cat /tmp/index.txt
assert "$output" == "$content" "file has right content"
run_podman rmi -f $imgname

# Now test COPY. That should fail.
sed -i -e 's/ADD/COPY/' $tmpdir/Dockerfile
run_podman 125 build -t $imgname $tmpdir
is "$output" ".* building at STEP .*: source can't be a URL for COPY"

run_podman rm -f -t0 $serverctr
}


# bats test_tags=distro-integration
@test "podman build - workdir, cmd, env, label" {
tmpdir=$PODMAN_TMPDIR/build-test
mkdir -p $tmpdir
Expand Down
3 changes: 1 addition & 2 deletions test/system/075-exec.bats
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

load helpers

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman exec - basic test" {
rand_filename=$(random_string 20)
rand_content=$(random_string 50)
Expand Down Expand Up @@ -47,7 +47,6 @@ load helpers
run_podman rm $cid
}

# bats test_tags=distro-integration
@test "podman exec - leak check" {
skip_if_remote "test is meaningless over remote"

Expand Down
3 changes: 1 addition & 2 deletions test/system/080-pause.bats
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
load helpers
load helpers.systemd

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman pause/unpause" {
if is_rootless && ! is_cgroupsv2; then
skip "'podman pause' (rootless) only works with cgroups v2"
Expand Down Expand Up @@ -65,7 +65,6 @@ load helpers.systemd
}

# CANNOT BE PARALLELIZED! (because of unpause --all)
# bats test_tags=distro-integration
@test "podman unpause --all" {
if is_rootless && ! is_cgroupsv2; then
skip "'podman pause' (rootless) only works with cgroups v2"
Expand Down
6 changes: 3 additions & 3 deletions test/system/090-events.bats
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
load helpers
load helpers.network

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "events with a filter by label and --no-trunc option" {
cname=test-$(safename)
labelname=labelname-$(safename)
Expand Down Expand Up @@ -161,7 +161,7 @@ function _events_disjunctive_filters() {
_events_disjunctive_filters ""
}

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "events with events_logfile_path in containers.conf" {
skip_if_remote "remote does not support --events-backend"
events_file=$PODMAN_TMPDIR/events.log
Expand All @@ -183,7 +183,7 @@ function _populate_events_file() {
done
}

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "events log-file rotation" {
skip_if_remote "setting CONTAINERS_CONF_OVERRIDE logger options does not affect remote client"

Expand Down
20 changes: 15 additions & 5 deletions test/system/120-load.bats
Original file line number Diff line number Diff line change
Expand Up @@ -220,23 +220,33 @@ verify_iid_and_name() {
}

@test "podman load - from URL" {
get_iid_and_name
run_podman save $img_name -o $archive
run_podman rmi $iid
# Use a different image, not $IMAGE, as we need that for the webserver container.
img1=${PODMAN_NONLOCAL_IMAGE_FQN}
_prefetch $img1

run_podman images -a --format '{{.ID}} {{.Repository}}:{{.Tag}}' $img1
images_output="$output"

archive=$PODMAN_TMPDIR/myimage-$(safename).tar
run_podman save $img1 -o $archive
run_podman rmi $img1

HOST_PORT=$(random_free_port)
SERVER=http://127.0.0.1:$HOST_PORT

# Bind-mount the archive to a container running httpd
local cname="cweb=$(safename)"
run_podman run -d --name myweb -p "$HOST_PORT:80" \
-v $archive:/var/www/image.tar:Z \
-w /var/www \
$IMAGE /bin/busybox-extras httpd -f -p 80

run_podman load -i $SERVER/image.tar
verify_iid_and_name $img_name

run_podman rm -f -t0 myweb
run_podman images -a --format '{{.ID}} {{.Repository}}:{{.Tag}}' $img1
assert "$output" == "$images_output"

run_podman rm -f -t0 $cname
}

@test "podman load - redirect corrupt payload" {
Expand Down
2 changes: 1 addition & 1 deletion test/system/125-import.bats
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ load helpers
}

# Integration tag to catch future breakage in tar, e.g. #19407
# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman export, alter tarball, re-import" {
# Create a test file following test
mkdir $PODMAN_TMPDIR/tmp
Expand Down
2 changes: 1 addition & 1 deletion test/system/130-kill.bats
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

load helpers

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman kill - test signal handling in containers" {
local cname=c-$(safename)
local fifo=${PODMAN_TMPDIR}/podman-kill-fifo.$(random_string 10)
Expand Down
1 change: 0 additions & 1 deletion test/system/160-volumes.bats
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,6 @@ EOF
is "$output" "" "no more volumes to prune"
}

# bats test_tags=distro-integration
@test "podman volume type=bind" {
myvoldir=${PODMAN_TMPDIR}/volume_$(random_string)
mkdir $myvoldir
Expand Down
2 changes: 0 additions & 2 deletions test/system/161-volume-quotas.bats
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
#
# podman volume XFS quota tests
#
# bats file_tags=distro-integration
#

load helpers

Expand Down
2 changes: 0 additions & 2 deletions test/system/170-run-userns.bats
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
#
# Tests for podman build
#
# bats file_tags=distro-integration
#

load helpers

Expand Down
2 changes: 0 additions & 2 deletions test/system/180-blkio.bats
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
#
# podman blkio-related tests
#
# bats file_tags=distro-integration
#

load helpers

Expand Down
2 changes: 0 additions & 2 deletions test/system/190-run-ipcns.bats
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
#
# Tests for podman build
#
# bats file_tags=distro-integration
#

load helpers

Expand Down
2 changes: 1 addition & 1 deletion test/system/195-run-namespaces.bats
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

load helpers

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman test all namespaces" {
# format is nsname | option name
tests="
Expand Down
1 change: 0 additions & 1 deletion test/system/252-quadlet.bats
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,6 @@ function wait_for_journal() {
die "Timed out waiting for '$expect_str' in journalctl output"
}

# bats test_tags=distro-integration
@test "quadlet - basic" {
# Network=none is to work around a Pasta bug, can be removed once a patched Pasta is available.
# Ref https://github.com/containers/podman/pull/21563#issuecomment-1965145324
Expand Down
6 changes: 3 additions & 3 deletions test/system/260-sdnotify.bats
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ function _assert_mainpid_is_conmon() {
_stop_socat
}

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "sdnotify : conmon" {
export NOTIFY_SOCKET=$PODMAN_TMPDIR/conmon.sock
_start_socat
Expand Down Expand Up @@ -155,7 +155,7 @@ READY=1" "sdnotify sent MAINPID and READY"

# These tests can fail in dev. environment because of SELinux.
# quick fix: chcon -t container_runtime_exec_t ./bin/podman
# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "sdnotify : container" {
_prefetch $SYSTEMD_IMAGE

Expand Down Expand Up @@ -479,7 +479,7 @@ spec:
" > $fname
}

# bats test_tags=distro-integration, ci:parallel
# bats test_tags=ci:parallel
@test "podman kube play - exit-code propagation" {
fname=$PODMAN_TMPDIR/$(random_string).yaml

Expand Down
1 change: 0 additions & 1 deletion test/system/280-update.bats
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ function teardown() {
}


# bats test_tags=distro-integration
@test "podman update - test all options" {
local cgv=1
if is_cgroupsv2; then
Expand Down
Loading