From bfd5de309f92f6a7dd6ed006daf11ed761b3fd2a Mon Sep 17 00:00:00 2001 From: Ricardo Branco Date: Wed, 23 Apr 2025 16:42:05 +0200 Subject: [PATCH] hack/bats: Fix to allow multiple tests Signed-off-by: Ricardo Branco --- hack/bats | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/hack/bats b/hack/bats index d886ebdb4e..e6638e6801 100755 --- a/hack/bats +++ b/hack/bats @@ -6,7 +6,7 @@ ############################################################################### # BEGIN usage message -usage="Usage: $0 [--root] [--rootless] [FILENAME-PATTERN[:TEST-PATTERN]] +usage="Usage: $0 [--root] [--rootless] [FILENAME-PATTERN[:TEST-PATTERN]]... $0 is a wrapper for invoking podman system tests. @@ -63,7 +63,7 @@ export PODMAN=${PODMAN:-$(pwd)/bin/podman} export QUADLET=${QUADLET:-$(pwd)/bin/quadlet} # Directory in which -TESTS=test/system +TESTS_DIR=test/system REMOTE= TEST_ROOT=1 @@ -73,6 +73,8 @@ declare -a bats_opts=() declare -a bats_filter=() +declare -a TESTS + for i;do value=`expr "$i" : '[^=]*=\(.*\)'` case "$i" in @@ -85,20 +87,24 @@ for i;do if [[ "$value" = "ci:parallel" ]]; then bats_opts+=("--jobs" $(nproc)) fi;; - */*.bats) TESTS=$i ;; + */*.bats) TESTS+=("$i") ;; *) if [[ $i =~ : ]]; then tname=${i%:*} # network:localhost -> network filt=${i#*:} # network:localhost -> localhost - TESTS=$(echo $TESTS/*$tname*.bats) + TESTS+=($(echo $TESTS_DIR/*$tname*.bats)) bats_filter=("--filter" "$filt") else - TESTS=$(echo $TESTS/*$i*.bats) + TESTS+=($(echo $TESTS_DIR/*$i*.bats)) fi ;; esac done +if [ ${#TESTS[@]} -eq 0 ] ; then + TESTS=("$TESTS_DIR") +fi + # With --remote, use correct binary and make sure daem--I mean server--is live if [[ "$REMOTE" ]]; then if ! [[ $PODMAN =~ -remote ]]; then @@ -131,21 +137,21 @@ export PODMAN_BATS_LEAK_CHECK=1 # Root if [[ "$TEST_ROOT" ]]; then - echo "# bats ${bats_opts[*]} ${bats_filter[*]} $TESTS" + echo "# bats ${bats_opts[*]} ${bats_filter[*]} ${TESTS[*]}" sudo --preserve-env=PODMAN \ --preserve-env=QUADLET \ --preserve-env=PODMAN_TEST_DEBUG \ --preserve-env=CONTAINERS_HELPER_BINARY_DIR \ --preserve-env=PODMAN_ROOTLESS_USER \ - bats "${bats_opts[@]}" "${bats_filter[@]}" $TESTS + bats "${bats_opts[@]}" "${bats_filter[@]}" "${TESTS[@]}" rc=$? fi # Rootless. (Only if we're not already root) if [[ "$TEST_ROOTLESS" && "$(id -u)" != 0 ]]; then echo "--------------------------------------------------" - echo "\$ bats ${bats_opts[*]} ${bats_filter[*]} $TESTS" - bats "${bats_opts[@]}" "${bats_filter[@]}" $TESTS + echo "\$ bats ${bats_opts[*]} ${bats_filter[*]} ${TESTS[@]}" + bats "${bats_opts[@]}" "${bats_filter[@]}" "${TESTS[@]}" rc=$((rc | $?)) fi