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 | 100 ++++++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 54 insertions(+), 46 deletions(-) diff --git a/check b/check index 71b179b..dc972d7 100755 --- a/check +++ b/check @@ -154,6 +154,56 @@ _timestamp() echo -n " [$now]" } +_prepare_test_list() +{ + unset list + # Tests specified on the command line + if [ -s $tmp.arglist ]; then + cat $tmp.arglist > $tmp.list + else + touch $tmp.list + fi + + # 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 + + for t in $list; do + grep -s "^$t\$" $tmp.list >/dev/null || \ + echo "$t" >>$tmp.list + done + done + + if ! $have_test_arg && [ -z "$GROUP_LIST" ]; then + # no test numbers, do everything + get_all_tests + fi + + # 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 $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 @@ -164,35 +214,11 @@ while [ $# -gt 0 ]; do -nfs) FSTYP=nfs ;; -g) group=$2 ; shift ; - group_list=$(get_group_list $group) - if [ -z "$group_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 - grep -s "^$t\$" $tmp.list >/dev/null || \ - echo "$t" >>$tmp.list - done - + GROUP_LIST="$GROUP_LIST $group" ;; -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 - - group_list=$(get_group_list $xgroup) - if [ -z "$group_list" ]; then - echo "Group \"$xgroup\" is empty or not defined?" - exit 1 - fi - - trim_test_list $group_list + XGROUP_LIST="$XGROUP_LIST $xgroup" ;; -X) xfile=$2; shift ; @@ -244,7 +270,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 +282,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.3.1 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs