From 97ed067d1af60c947ea68270a3abcaa29102197f Mon Sep 17 00:00:00 2001 From: Ed Santiago Date: Tue, 19 Nov 2024 10:03:55 -0700 Subject: [PATCH] CI: --image-volume test: robustify Test is failing on 1mt because of differences between 'stat' command output and /proc/mounts. Solution: compare stat %t (hex filesystem type), not %T (human-readable). This should match no matter what kernel version or version of stat on host/container. Fixes: #24611 Signed-off-by: Ed Santiago --- test/system/160-volumes.bats | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/system/160-volumes.bats b/test/system/160-volumes.bats index a80e615bcf..e1935e7d61 100644 --- a/test/system/160-volumes.bats +++ b/test/system/160-volumes.bats @@ -516,7 +516,6 @@ NeedsChown | true FROM $IMAGE VOLUME /data EOF - fs=$(stat -f -c %T .) run_podman build -t volume_image $tmpdir containersconf=$tmpdir/containers.conf @@ -534,15 +533,16 @@ EOF CONTAINERS_CONF_OVERRIDE="$containersconf" run_podman run --rm volume_image stat -f -c %T /data is "$output" "tmpfs" "Should be tmpfs" - # get the hostfs first so we can match it below + # Get the hostfs first so we can match it below. The important check is + # the HEX filesystem type (%t); readable one (%T) is for ease of debugging. + # We can't compare %T because our alpine-based testimage doesn't grok btrfs. run_podman info --format {{.Store.GraphRoot}} - hostfs=$(stat -f -c %T $output) + hostfs=$(stat -f -c '%t %T' $output) + echo "# for debug: stat( $output ) = '$hostfs'" - # stat -f -c %T seems to just return unknown for our normal bind mount for some reason. - # Therefore manually parse /proc/mounts to get the real fs for the bind mount. - CONTAINERS_CONF_OVERRIDE="$containersconf" run_podman run --image-volume anonymous --rm volume_image \ - sh -c "grep ' /data ' /proc/mounts | cut -f3 -d' '" - assert "$output" == "$hostfs" "Should match hosts graphroot fs" + # "${foo%% *}" strips everything after the first space: "9123683e btrfs" -> "9123683e" + CONTAINERS_CONF_OVERRIDE="$containersconf" run_podman run --image-volume anonymous --rm volume_image stat -f -c '%t %T' /data + assert "${output%% *}" == "${hostfs%% *}" "/data fs type should match hosts graphroot" CONTAINERS_CONF_OVERRIDE="$containersconf" run_podman run --image-volume tmpfs --rm volume_image stat -f -c %T /data is "$output" "tmpfs" "Should be tmpfs"