Message ID | 162317281137.653489.16228043613270527911.stgit@locust (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fstests: move test group lists into test files | expand |
On 08 Jun 2021 at 22:50, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > 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 <djwong@kernel.org> > --- > new | 179 ++++++++++++++++++++----------------------------------------------- > 1 file changed, 54 insertions(+), 125 deletions(-) > > > diff --git a/new b/new > index 16e7c782..cdd909ad 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=$(set -n < "$tmpfile" \ The above should have been "sed" instead of "set". Apart from the above nit, the rest looks good to me. Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
On 6/8/21 10:20 AM, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > 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 <djwong@kernel.org> Other than the sed nit, looks ok to me Reviewed-by: Allison Henderson <allison.henderson@oracle.com> > --- > new | 179 ++++++++++++++++++++----------------------------------------------- > 1 file changed, 54 insertions(+), 125 deletions(-) > > > diff --git a/new b/new > index 16e7c782..cdd909ad 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=$(set -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 <<End-of-File >$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 >
diff --git a/new b/new index 16e7c782..cdd909ad 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=$(set -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 <<End-of-File >$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