From patchwork Mon Jun 21 23:10:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 12335959 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3372DC4743C for ; Mon, 21 Jun 2021 23:10:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1E0FA61164 for ; Mon, 21 Jun 2021 23:10:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231128AbhFUXNL (ORCPT ); Mon, 21 Jun 2021 19:13:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:33052 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231246AbhFUXNK (ORCPT ); Mon, 21 Jun 2021 19:13:10 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2428560FDB; Mon, 21 Jun 2021 23:10:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1624317056; bh=uoj3umBM0S8ULTxG7t7QXfsBTca2AocJlJn+jhlAEE0=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=bVXlHvBuLjimb37gddr0MlajV3nYOQCQbP8rh4XuDHn3eLzYNCjdptSKzXBhjjUjL eOu30GoqnnRFYewFN5d4acuyQHwVav2SrdzQZ3UJgNidNDRduouUpkn4noARfA3Kzq OvaOZfp1O0d9nKqGNw69ACCQVcQxox5HEoeYEZFmT7pCTYPlCkZ12+Jkz7LDW7xnca l4gIEZY90UTrbAmCByI5VljshZXyFPqKgB2Ry5tZjiE4nTsyo2/KwOMZRWNu/lySnc VaqJs3aVwsBIVHJMeEKESAYk7PScKIB1vNw/UKHEP1VP6aGwn2ImQOUTL5TzMcIr2b YZHf/jQNAOPiA== Subject: [PATCH 09/13] fstests: adapt the new test script to our new group tagging scheme From: "Darrick J. Wong" To: djwong@kernel.org, guaneryu@gmail.com Cc: Chandan Babu R , Allison Henderson , linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me, amir73il@gmail.com, ebiggers@kernel.org Date: Mon, 21 Jun 2021 16:10:55 -0700 Message-ID: <162431705586.4090790.4739380907901738103.stgit@locust> In-Reply-To: <162431700639.4090790.11684371602638166127.stgit@locust> References: <162431700639.4090790.11684371602638166127.stgit@locust> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org From: Darrick J. Wong 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 --- new | 179 ++++++++++++++++++++----------------------------------------------- 1 file changed, 54 insertions(+), 125 deletions(-) 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