]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
check: fix excluding test groups
authorAmir Goldstein <amir73il@gmail.com>
Fri, 9 Dec 2016 08:50:46 +0000 (10:50 +0200)
committerEryu Guan <eguan@redhat.com>
Mon, 12 Dec 2016 04:50:37 +0000 (12:50 +0800)
The -x flag is used to exclude tests that belong to
certain groups from the test args list.

When the test args list is expressed as a match pattern,
-x fails to exclude the tests that match the pattern
and belong to excluded groups.

For example:
$ ./check -n xfs/??? | wc -l
341
$ ./check -n -x fuzzers,dangerous_fuzzers xfs/??? | wc -l
341

After the fix:
$ ./check -n -x fuzzers,dangerous_fuzzers xfs/??? | wc -l
315

This bug seems to date back to this git repo epoc.

The fix also sorts out filtering of test that are not found
in group files for the patten match input.

For example:
$ ./check xfs/001*
...
xfs/001  2s
xfs/001.out  [failed, exit status 127] - no qualified output

After the fix:
$ ./check -n xfs/001*
xfs/001.out - unknown test, ignored
...
xfs/001 2s

[eguan: use grep -q and fix if-then-fi style]

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
check

diff --git a/check b/check
index 76eb0548b7efd0bf7e1d5d35aaf92e3b1b7e1e08..cf6379bb4e7d94e685dfdaeb7cead7e0b50fa1e7 100755 (executable)
--- a/check
+++ b/check
@@ -281,18 +281,23 @@ if $have_test_arg; then
                        status=1
                        exit $status
                        ;;
-               *)      test_dir=`dirname $1`
-                       test_dir=${test_dir#$SRC_DIR/*}
-                       test_name=`basename $1`
-                       group_file=$SRC_DIR/$test_dir/group
-
-                       if egrep "^$test_name" $group_file >/dev/null ; then
-                               # in group file ... OK
-                               echo $SRC_DIR/$test_dir/$test_name >>$tmp.arglist
-                       else
-                               # oops
-                               echo "$1 - unknown test, ignored"
-                       fi
+               *)      # Expand test pattern (e.g. xfs/???, *fs/001)
+                       list=$(cd $SRC_DIR; echo $1)
+                       for t in $list; do
+                               test_dir=`dirname $t`
+                               test_dir=${test_dir#$SRC_DIR/*}
+                               test_name=`basename $t`
+                               group_file=$SRC_DIR/$test_dir/group
+
+                               if egrep -q "^$test_name" $group_file; then
+                                       # in group file ... OK
+                                       echo $SRC_DIR/$test_dir/$test_name \
+                                               >>$tmp.arglist
+                               else
+                                       # oops
+                                       echo "$t - unknown test, ignored"
+                               fi
+                       done
                        ;;
                esac