Re: [PATCH 08/13] fstests: convert nextid to use automatic group generation

Darrick J. Wong
2021-06-12T00:40:42Z

On Fri, Jun 11, 2021 at 04:46:27PM -0700, Eric Biggers wrote:
> On Tue, Jun 08, 2021 at 10:20:05AM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Convert the nextid script to use the automatic group file generation to
> > figure out the next available test id.
> >
> > Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> > ---
> > tools/nextid | 1 -
> > tools/nextid | 39 +++++++++++++++++++++++++++++++++++++++
> > 2 files changed, 39 insertions(+), 1 deletion(-)
> > delete mode 120000 tools/nextid
> > create mode 100755 tools/nextid
> >
> >
> > diff --git a/tools/nextid b/tools/nextid
> > deleted file mode 120000
> > index 5c31d602..00000000
> > --- a/tools/nextid
> > +++ /dev/null
> > @@ -1 +0,0 @@
> > -sort-group
> > \ No newline at end of file
> > diff --git a/tools/nextid b/tools/nextid
> > new file mode 100755
> > index 00000000..a65348e8
> > --- /dev/null
> > +++ b/tools/nextid
> > @@ -0,0 +1,39 @@
> > +#!/bin/bash
> > +
> > +# Compute the next available test id in a given test directory.
> > +
> > +if [ -z "$1" ] || [ "$1" = "--help" ] || [ -n "$2" ] || [ ! -d "tests/$1/" ]; then
> > + echo "Usage: $0 test_dir"
> > + exit 1
> > +fi
>
> [ $# != 1 ] would be simpler than [ -z "$1" ] || [ -n "$2" ].
>
> > +line=0
>
> The 'line' variable isn't needed.

Both fixed.

>
> > +i=0
> > +eof=1
> > +
> > +while read found other_junk;
> > +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 < <(cd "tests/$1/" ; ../../tools/mkgroupfile | tr - ' ')
>
> The first token matching $VALID_TEST_NAME already implies that it is non-empty
> and not "#". Also, this could be handled by piping to grep:
>
> while read found other_junk; do
> i=$((i+1))
> id=`printf "%03d" $i`
> if [ "$id" != "$found" ]; then
> eof=0
> break
> fi
> done < <(cd "tests/$1/" ; ../../tools/mkgroupfile | \
> grep "^$VALID_TEST_NAME\>" | tr - ' ')

I'm glad your regexfu is higher than mine. Thanks for the suggestions!

--D

>
> - Eric