diff --git a/tests/run-tests.sh b/tests/run-tests.sh index b9917d4f..f8294fca 100755 --- a/tests/run-tests.sh +++ b/tests/run-tests.sh @@ -69,6 +69,7 @@ $(basename $0) options: -r | Specify the directory in which to store results of | test runs. The directory will be created if it doesn't | exist. Previous results will be deleted as each test runs. + -R | shuffle the test order randomly using shuf -s | Skip git repo checkouts. -t | Enabled trace events that match the given glob argument. | Multiple options enable multiple globbed events. @@ -164,6 +165,9 @@ while true; do T_RESULTS="$2" shift ;; + -R) + T_SHUF="1" + ;; -s) T_SKIP_CHECKOUT="1" ;; @@ -261,13 +265,26 @@ for e in T_META_DEVICE T_DATA_DEVICE T_EX_META_DEV T_EX_DATA_DEV T_KMOD T_RESULT eval $e=\"$(readlink -f "${!e}")\" done +# permute sequence? +T_SEQUENCE=sequence +if [ -n "$T_SHUF" ]; then + msg "shuffling test order" + shuf sequence -o sequence.shuf + # keep xfstests at the end + if grep -q 'xfstests.sh' sequence.shuf ; then + sed -i '/xfstests.sh/d' sequence.shuf + echo "xfstests.sh" >> sequence.shuf + fi + T_SEQUENCE=sequence.shuf +fi + # include everything by default test -z "$T_INCLUDE" && T_INCLUDE="-e '.*'" # (quickly) exclude nothing by default test -z "$T_EXCLUDE" && T_EXCLUDE="-e '\Zx'" # eval to strip re ticks but not expand -tests=$(grep -v "^#" sequence | +tests=$(grep -v "^#" $T_SEQUENCE | eval grep "$T_INCLUDE" | eval grep -v "$T_EXCLUDE") test -z "$tests" && \ die "no tests found by including $T_INCLUDE and excluding $T_EXCLUDE"