From acef46b6295bea61439fbd77b84a5f6a0d7a7b22 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 16 Sep 2022 10:26:29 +0200 Subject: [PATCH] add the capability to run several tests at once --- DEVELOPER_INSTRUCTIONS.md | 2 +- README.md | 2 ++ util/run-gnu-test.sh | 18 ++++++++++++++---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/DEVELOPER_INSTRUCTIONS.md b/DEVELOPER_INSTRUCTIONS.md index c007fba7e..d6171bef8 100644 --- a/DEVELOPER_INSTRUCTIONS.md +++ b/DEVELOPER_INSTRUCTIONS.md @@ -21,7 +21,7 @@ Running GNU tests At the end you should have uutils, gnu and gnulib checked out next to each other. - Run `cd uutils && ./util/build-gnu.sh && cd ..` to get everything ready (this may take a while) -- Finally, you can run tests with `bash uutils/util/run-gnu-test.sh `. Instead of `` insert the test you want to run, e.g. `tests/misc/wc-proc.sh`. +- Finally, you can run tests with `bash uutils/util/run-gnu-test.sh `. Instead of `` insert the tests you want to run, e.g. `tests/misc/wc-proc.sh`. Code Coverage Report Generation diff --git a/README.md b/README.md index 0bf8ca039..f04c58cea 100644 --- a/README.md +++ b/README.md @@ -369,6 +369,8 @@ $ bash util/build-gnu.sh $ bash util/run-gnu-test.sh # To run a single test: $ bash util/run-gnu-test.sh tests/touch/not-owner.sh # for example +# To run several tests: +$ bash util/run-gnu-test.sh tests/touch/not-owner.sh tests/rm/no-give-up.sh # for example # If this is a perl (.pl) test, to run in debug: $ DEBUG=1 bash util/run-gnu-test.sh tests/misc/sm3sum.pl ``` diff --git a/util/run-gnu-test.sh b/util/run-gnu-test.sh index 9b784699c..fdd928221 100755 --- a/util/run-gnu-test.sh +++ b/util/run-gnu-test.sh @@ -31,16 +31,26 @@ cd "${path_GNU}" && echo "[ pwd:'${PWD}' ]" export RUST_BACKTRACE=1 -if test -n "$1"; then - # if set, run only the test passed - export RUN_TEST="TESTS=$1" +if test $# -ge 1; then + # if set, run only the tests passed + SPECIFIC_TESTS="" + for t in "$@"; do + SPECIFIC_TESTS="$SPECIFIC_TESTS $t" + done + # trim it + SPECIFIC_TESTS=$(echo $SPECIFIC_TESTS| xargs) + echo "Running specific tests: $SPECIFIC_TESTS" fi # * timeout used to kill occasionally errant/"stuck" processes (note: 'release' testing takes ~1 hour; 'debug' testing takes ~2.5 hours) # * `gl_public_submodule_commit=` disables testing for use of a "public" gnulib commit (which will fail when using shallow gnulib checkouts) # * `srcdir=..` specifies the GNU source directory for tests (fixing failing/confused 'tests/factor/tNN.sh' tests and causing no harm to other tests) #shellcheck disable=SC2086 -timeout -sKILL 4h make -j "$(nproc)" check ${RUN_TEST} SUBDIRS=. RUN_EXPENSIVE_TESTS=yes RUN_VERY_EXPENSIVE_TESTS=yes VERBOSE=no gl_public_submodule_commit="" srcdir="${path_GNU}" || : # Kill after 4 hours in case something gets stuck in make +if test $# -ge 1; then + timeout -sKILL 4h make -j "$(nproc)" check TESTS="$SPECIFIC_TESTS" SUBDIRS=. RUN_EXPENSIVE_TESTS=yes RUN_VERY_EXPENSIVE_TESTS=yes VERBOSE=no gl_public_submodule_commit="" srcdir="${path_GNU}" || : # Kill after 4 hours in case something gets stuck in make +else + timeout -sKILL 4h make -j "$(nproc)" check SUBDIRS=. RUN_EXPENSIVE_TESTS=yes RUN_VERY_EXPENSIVE_TESTS=yes VERBOSE=no gl_public_submodule_commit="" srcdir="${path_GNU}" || : # Kill after 4 hours in case something gets stuck in make +fi if test -z "$1" && test -n "$CI"; then sudo make -j "$(nproc)" check-root SUBDIRS=. RUN_EXPENSIVE_TESTS=yes RUN_VERY_EXPENSIVE_TESTS=yes VERBOSE=no gl_public_submodule_commit="" srcdir="${path_GNU}" TEST_SUITE_LOG="tests/test-suite-root.log" || :