Add the ability to exclude a test or whole test group from a test
run. Thus a user can explicitly decide which tests to skip like in
this example where one wants all of the 'block' group but block/001.
block/002 (remove a device while running blktrace)
0.835s ...
runtime + test ...
[ 363.132053] run blktests block/002 at 2017-05-19 13:01:56
[ 363.136844] scsi host0: scsi_debug: version 1.86 [20160430]
[ 363.136844] dev_size_mb=8, opts=0x0, submit_queues=1, statistics=0
[ 363.138819] scsi 0:0:0:0: Direct-Access Linux scsi_debug 0186
PQ: 0 ANSI: 7
[ 363.199172] sd 0:0:0:0: [sda] 16384 512-byte logical blocks: (8.39 MB/8.00
MiB)
[ 363.207053] sd 0:0:0:0: [sda] Write Protect is off
block/002 (remove a device while running blktrace) [passed]
Signed-off-by: Johannes Thumshirn <[email protected]>
---
check | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/check b/check
index 26c5189b6e27..b1e7fab0aaa0 100755
--- a/check
+++ b/check
@@ -17,6 +17,17 @@
. common/rc
+_test_is_excluded() {
+ local e
+ for e in "${@:2}"; do
+ if [[ "$e" == "$1" ]]; then
+ return 0
+ fi
+ done
+
+ return 1
+}
+
_found_test() {
local test_name="$1"
local explicit="$2"
@@ -51,6 +62,10 @@ _found_test() {
return
fi
+ if _test_is_excluded $test_name ${EXCLUDE[@]}; then
+ return 1
+ fi
+
printf '%s\0' "$test_name"
}
@@ -58,6 +73,11 @@ _found_group() {
local group="$1"
local test_path
+
+ if _test_is_excluded $group ${EXCLUDE[@]}; then
+ return
+ fi
+
while IFS= read -r -d '' test_path; do
_found_test "${test_path#tests/}" 0
done < <(find "tests/$group" -type f -name '[0-9][0-9][0-9]' -print0)
@@ -518,6 +538,9 @@ Test runs:
runtime of longer tests to the given timeout,
defaulting to 30 seconds)
+ -x, --exclude=test exclude a test (or test group) from the list of
+ tests to run
+
Miscellaneous:
-h, --help display this help message and exit"
@@ -533,7 +556,7 @@ Miscellaneous:
esac
}
-TEMP=$(getopt -o 'q::h' --long 'quick::,help' -n "$0" -- "$@")
+TEMP=$(getopt -o 'x:q::h' --long 'quick::,exclude::,help' -n "$0" -- "$@")
if [[ $? -ne 0 ]]; then
exit 1
fi
@@ -542,6 +565,7 @@ eval set -- "$TEMP"
unset TEMP
QUICK_RUN=0
+EXCLUDE=()
while true; do
case "$1" in
'-q'|'--quick')
@@ -549,6 +573,10 @@ while true; do
TIMEOUT="${2:-30}"
shift 2
;;
+ '-x'|'--exclude')
+ EXCLUDE+=("$2")
+ shift 2
+ ;;
'-h'|'--help')
usage out
;;
--
2.12.0