new: only allow documented test group names
authorDarrick J. Wong <djwong@kernel.org>
Fri, 17 Sep 2021 00:39:46 +0000 (17:39 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 26 Sep 2021 13:34:23 +0000 (21:34 +0800)
Now that we require all group names to be listed in doc/group-names.txt,
we can use that (instead of running mkgroupfile) to check if the group
name(s) supplied by the user actually exist.  This has the secondary
effect of being a second nudge towards keeping the description of groups
up to date.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
new

diff --git a/new b/new
index 2097a883d1587b7e5885781f81c06801b2654ae9..6b7dc5d4840341a6017c554b52da38457dcbb8fb 100755 (executable)
--- a/new
+++ b/new
@@ -83,6 +83,14 @@ then
     exit 1
 fi
 
+# Extract group names from the documentation.
+group_names() {
+       awk '/^[[:lower:][:digit:]_]/ {
+               if ($1 != "" && $1 != "Group" && $2 != "Name:" && $1 != "all")
+                       printf("%s\n", $1);
+       }' doc/group-names.txt
+}
+
 if [ $# -eq 0 ]
 then
 
@@ -93,16 +101,7 @@ then
        [ -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
+           echo $(group_names)
        else
            # only allow lower cases, spaces, digits and underscore in group
            inval=`echo $ans | tr -d '[:lower:][:space:][:digit:]_'`
@@ -120,11 +119,10 @@ then
 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"
+       if ! grep -q "^$g" doc/group-names.txt; then
+           echo "Warning: group \"$g\" not defined in documentation"
        fi
     done
     ans="$*"