xfs
[Top] [All Lists]

[PATCH 2/3] xfstests: Refactor code for obtaining test list

To: xfs@xxxxxxxxxxx
Subject: [PATCH 2/3] xfstests: Refactor code for obtaining test list
From: Lukas Czerner <lczerner@xxxxxxxxxx>
Date: Fri, 28 Jun 2013 15:23:44 +0200
Cc: Lukas Czerner <lczerner@xxxxxxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1372425825-19252-1-git-send-email-lczerner@xxxxxxxxxx>
References: <1372425825-19252-1-git-send-email-lczerner@xxxxxxxxxx>
Put the code for obtaining the list of test into one place which makes
things more readable. It will also allow us to re-init the list in the
future if we need it.

Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx>
---
 check | 97 ++++++++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 52 insertions(+), 45 deletions(-)

diff --git a/check b/check
index 71b179b..1fded37 100755
--- a/check
+++ b/check
@@ -154,45 +154,70 @@ _timestamp()
     echo -n " [$now]"
 }
 
-# Process command arguments first.
-while [ $# -gt 0 ]; do
-       case "$1" in
-       -\? | -h | --help) usage ;;
-
-       -udf)   FSTYP=udf ;;
-       -xfs)   FSTYP=xfs ;;
-       -nfs)   FSTYP=nfs ;;
+_prepare_test_list()
+{
+       # Tests specified on the command line
+       if [ -s $tmp.arglist ]; then
+               cat $tmp.arglist > $tmp.list
+       else
+               touch $tmp.list
+       fi
 
-       -g)     group=$2 ; shift ;
-               group_list=$(get_group_list $group)
-               if [ -z "$group_list" ]; then
+       # Specified groups to include
+       for group in $GROUP_LIST; do
+               list=$(get_group_list $group)
+               if [ -z "$list" ]; then
                    echo "Group \"$group\" is empty or not defined?"
                    exit 1
                fi
 
-               [ ! -s $tmp.list ] && touch $tmp.list
-               for t in $group_list; do
+               for t in $list; do
                        grep -s "^$t\$" $tmp.list >/dev/null || \
                                                        echo "$t" >>$tmp.list
                done
+       done
 
-               ;;
-
-       -x)     xgroup=$2 ; shift ;
-
-               # Note: behaviour is dependent on command line ordering of
-               # -g and -x parameters. If there are no preceding -g commands,
-               # this works on all tests, otherwise just the tests specified by
-               # the early -g inclusions.
-               [ ! -s $tmp.list ] && get_all_tests
+       if [ ! $have_test_arg ] && [ -z "$GROUP_LIST" ]; then
+               # no test numbers, do everything
+               get_all_tests
+       fi
 
-               group_list=$(get_group_list $xgroup)
-               if [ -z "$group_list" ]; then
+       # Specified groups to exclude
+       for xgroup in $XGROUP_LIST; do
+               list=$(get_group_list $xgroup)
+               if [ -z "$list" ]; then
                    echo "Group \"$xgroup\" is empty or not defined?"
                    exit 1
                fi
 
-               trim_test_list $group_list
+               trim_test_list $list
+       done
+
+       # sort the list of tests into numeric order
+       list=`sort -n $tmp.list | uniq`
+       rm -f $tmp.list $tmp.tmp $tmp.grep
+
+       if $randomize
+       then
+           list=`echo $list | awk -f randomize.awk`
+       fi
+}
+
+# Process command arguments first.
+while [ $# -gt 0 ]; do
+       case "$1" in
+       -\? | -h | --help) usage ;;
+
+       -udf)   FSTYP=udf ;;
+       -xfs)   FSTYP=xfs ;;
+       -nfs)   FSTYP=nfs ;;
+
+       -g)     group=$2 ; shift ;
+               GROUP_LIST="$GROUP_LIST $group"
+               ;;
+
+       -x)     xgroup=$2 ; shift ;
+               XGROUP_LIST="$XGROUP_LIST $xgroup"
                ;;
 
        -X)     xfile=$2; shift ;
@@ -244,7 +269,7 @@ if $have_test_arg; then
 
                        if egrep "^$test_name" $group_file >/dev/null ; then
                                # in group file ... OK
-                               echo $SRC_DIR/$1 >>$tmp.list
+                               echo $SRC_DIR/$1 >>$tmp.arglist
                        else
                                # oops
                                echo "$1 - unknown test, ignored"
@@ -256,25 +281,7 @@ if $have_test_arg; then
        done
 fi
 
-if [ -s $tmp.list ]; then
-    # found some valid test numbers ... this is good
-    :
-elif $have_test_arg; then
-       # had test numbers, but none in group file ... do nothing
-       touch $tmp.list
-else
-       # no test numbers, do everything
-       get_all_tests
-fi
-
-# sort the list of tests into numeric order
-list=`sort -n $tmp.list`
-rm -f $tmp.list $tmp.tmp $tmp.grep
-
-if $randomize
-then
-    list=`echo $list | awk -f randomize.awk`
-fi
+_prepare_test_list
 
 # we need common/rc
 if ! . ./common/rc
-- 
1.8.2.1

<Prev in Thread] Current Thread [Next in Thread>