From: Darrick J. Wong Date: Mon, 21 Jun 2021 15:56:00 +0000 (-0700) Subject: fstests: adapt the new test script to our new group tagging scheme X-Git-Tag: v2022.05.01~361 X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=commitdiff_plain;h=810df5225bae2eadea549f7150189030d42d8ea2 fstests: adapt the new test script to our new group tagging scheme Now that we autogenerate group files, adapt the new test creation script to use autogenerated group files and to set the group data in the new test. Signed-off-by: Darrick J. Wong Reviewed-by: Chandan Babu R Reviewed-by: Allison Henderson Signed-off-by: Eryu Guan --- diff --git a/new b/new index 531fd123..07144399 100755 --- a/new +++ b/new @@ -9,7 +9,8 @@ iam=new . ./common/test_names -trap "rm -f /tmp/$$.; exit" 0 1 2 3 15 +tmpfile="/tmp/$$." +trap "rm -f $tmpfile; exit" 0 1 2 3 15 _cleanup() { @@ -26,71 +27,18 @@ usage() [ $# -eq 0 ] && usage tdir=tests/$1 -shift - -if [ ! -f $tdir/group ] -then - echo "Creating the $tdir/group index ..." - cat <<'End-of-File' >$tdir/group -# QA groups control -# -# define groups and default group owners -# do not start group name with a digit -# - -# catch-all -# -other some-user-login - -# test-group association ... one line per test -# -End-of-File -fi - -if [ ! -w $tdir/group ] -then - chmod u+w $tdir/group - echo "Warning: making the index file \"$tdir/group\" writeable" -fi - -if make -then - : -else - echo "Warning: make failed -- some tests may be missing" -fi i=0 line=0 eof=1 -[ -f "$tdir/group" ] || usage +[ -d "$tdir/" ] || usage export AWK_PROG="$(type -P awk)" [ "$AWK_PROG" = "" ] && { echo "awk not found"; exit; } -for found in `cat $tdir/group | tr - ' ' | $AWK_PROG '{ print $1 }'` -do - line=$((line+1)) - if [ -z "$found" ] || [ "$found" == "#" ]; then - continue - elif ! echo "$found" | grep -q "^$VALID_TEST_NAME$"; then - # this one is for tests not named by a number - continue - fi - i=$((i+1)) - id=`printf "%03d" $i` - if [ "$id" != "$found" ];then - eof=0 - break - fi -done -if [ $eof -eq 1 ]; then - line=$((line+1)) - i=$((i+1)) - id=`printf "%03d" $i` -fi - +id="$(basename "$(./tools/nextid "$1")")" echo "Next test id is $id" +shift read -p "Append a name to the ID? Test name will be $id-\$name. y,[n]: " -r if [[ $REPLY = [Yy] ]]; then @@ -113,24 +61,9 @@ if [[ $REPLY = [Yy] ]]; then fi done - # now find where to insert this name - eof=1 - for found in `tail -n +$line $tdir/group | $AWK_PROG '{ print $1 }'`; do - found_id=$(echo "$found" | cut -d "-" -f 1 - ) - line=$((line+1)) - if [ -z "$found" ] || [ "$found" == "#" ]; then - continue - elif [ $found_id -gt $id ]; then - eof=0 - break - fi - done - if [ $eof -eq 0 ]; then - # If place wasn't found, let $line be the end of the file - line=$((line-1)) - fi id="$id-$name" fi + echo "Creating test file '$id'" if [ -f $tdir/$id ] @@ -140,6 +73,53 @@ then exit 1 fi +if [ $# -eq 0 ] +then + + while true + do + echo -n "Add to group(s) [other] (separate by space, ? for list): " + read ans + [ -z "$ans" ] && ans=other + if [ "X$ans" = "X?" ] + then + for d in $SRC_GROUPS; do + (cd "tests/$d/" ; ../../tools/mkgroupfile "$tmpfile") + l=$(sed -n < "$tmpfile" \ + -e 's/#.*//' \ + -e 's/$/ /' \ + -e 's;\(^[0-9][0-9][0-9]\)\(.*$\);\2;p') + grpl="$grpl $l" + done + lst=`for word in $grpl; do echo $word; done | sort| uniq ` + echo $lst + else + # only allow lower cases, spaces, digits and underscore in group + inval=`echo $ans | tr -d '[:lower:][:space:][:digit:]_'` + if [ "$inval" != "" ]; then + echo "Invalid characters in group(s): $inval" + echo "Only lower cases, digits and underscore are allowed in groups, separated by space" + continue + else + # remove redundant spaces/tabs + ans=`echo "$ans" | sed 's/\s\+/ /g'` + break + fi + fi + done +else + # expert mode, groups are on the command line + # + (cd "$tdir" ; ../../tools/mkgroupfile "$tmpfile") + for g in $* + do + if ! grep -q "[[:space:]]$g" "$tmpfile"; then + echo "Warning: group \"$g\" not defined in $tdir tests" + fi + done + ans="$*" +fi + echo -n "Creating skeletal script for you to edit ..." year=`date +%Y` @@ -154,7 +134,7 @@ cat <$tdir/$id # what am I here for? # . ./common/preamble -_begin_fstest group list here +_begin_fstest $ans # Override the default cleanup function. # _cleanup() @@ -196,56 +176,5 @@ QA output created by $id Silence is golden End-of-File -if [ $# -eq 0 ] -then - - while true - do - echo -n "Add to group(s) [other] (separate by space, ? for list): " - read ans - [ -z "$ans" ] && ans=other - if [ "X$ans" = "X?" ] - then - for d in $SRC_GROUPS; do - l=$(sed -n < tests/$d/group \ - -e 's/#.*//' \ - -e 's/$/ /' \ - -e 's;\(^[0-9][0-9][0-9]\)\(.*$\);\2;p') - grpl="$grpl $l" - done - lst=`for word in $grpl; do echo $word; done | sort| uniq ` - echo $lst - else - # only allow lower cases, spaces, digits and underscore in group - inval=`echo $ans | tr -d '[:lower:][:space:][:digit:]_'` - if [ "$inval" != "" ]; then - echo "Invalid characters in group(s): $inval" - echo "Only lower cases, digits and underscore are allowed in groups, separated by space" - continue - else - # remove redundant spaces/tabs - ans=`echo "$ans" | sed 's/\s\+/ /g'` - break - fi - fi - done -else - # expert mode, groups are on the command line - # - for g in $* - do - if ! grep -q "[[:space:]]$g" "$tdir/group"; then - echo "Warning: group \"$g\" not defined in $tdir/group" - fi - done - ans="$*" -fi - -echo -n "Adding $id to group index ..." -head -n $(($line-1)) $tdir/group > /tmp/$$.group -echo "$id $ans" >> /tmp/$$.group -tail -n +$((line)) $tdir/group >> /tmp/$$.group -mv /tmp/$$.group $tdir/group echo " done." - exit 0