fstests: Make ./new work for non-root user
authorJan Kara <jack@suse.cz>
Tue, 29 May 2018 16:51:19 +0000 (18:51 +0200)
committerEryu Guan <guaneryu@gmail.com>
Sun, 3 Jun 2018 14:16:15 +0000 (22:16 +0800)
Currently 'new' script sources common/config which tries to find
mkfs and fails if not found (which is likely for non-root user).
This is inconvenient as development usually does not happen as root.
In fact the vast majority of setup in common/config and common/rc is
not necessary for 'new'. Split out the necessary bits into new
common/test_names and use it in 'new'. Cleanup common/rc and
common/config now that they're only used from 'check' and 'setup'.

Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
check
common/config
common/rc
common/test_names [new file with mode: 0644]
new

diff --git a/check b/check
index f6fb352bcbb9553a45b3f1d0d030d0c8b8b2ee78..a8cb7289b3208c9d16dd0c50cbc5ae9ae24f0ccd 100755 (executable)
--- a/check
+++ b/check
@@ -331,10 +331,10 @@ while [ $# -gt 0 ]; do
        shift
 done
 
        shift
 done
 
-# we need common/config, source it after processing args, overlay needs FSTYP
-# set before sourcing common/config
-if ! . ./common/config; then
-       echo "$iam: failed to source common/config"
+# we need common/rc, that also sources common/config. We need to source it
+# after processing args, overlay needs FSTYP set before sourcing common/config
+if ! . ./common/rc; then
+       echo "check: failed to source common/rc"
        exit 1
 fi
 
        exit 1
 fi
 
@@ -374,13 +374,6 @@ elif [ -z "$GROUP_LIST" ]; then
        GROUP_LIST="auto"
 fi
 
        GROUP_LIST="auto"
 fi
 
-# we need common/rc
-if ! . ./common/rc
-then
-    echo "check: failed to source common/rc"
-    exit 1
-fi
-
 if [ `id -u` -ne 0 ]
 then
     echo "check: QA must be run as root"
 if [ `id -u` -ne 0 ]
 then
     echo "check: QA must be run as root"
index e1cd8fad4ad57cb097671353ab14c60d79463536..4807e6cd7890cea79a6274a4cb68f3adbed0f09c 100644 (file)
@@ -47,6 +47,8 @@
 #   validity or mountedness.
 #
 
 #   validity or mountedness.
 #
 
+. common/test_names
+
 # all tests should use a common language setting to prevent golden
 # output mismatches.
 export LANG=C
 # all tests should use a common language setting to prevent golden
 # output mismatches.
 export LANG=C
@@ -269,11 +271,6 @@ fi
 rm -f /tmp/crc_check.img
 export XFS_MKFS_HAS_NO_META_SUPPORT
 
 rm -f /tmp/crc_check.img
 export XFS_MKFS_HAS_NO_META_SUPPORT
 
-# new doesn't need config file parsed, we can stop here
-if [ "$iam" == "new" ]; then
-       return 0
-fi
-
 _mount_opts()
 {
        case $FSTYP in
 _mount_opts()
 {
        case $FSTYP in
index 52b128982e98c09587aeaee053579331f40ed38e..9273ff75c9dc2213df1993953d07f90317700289 100644 (file)
--- a/common/rc
+++ b/common/rc
 #  Mountain View, CA 94043, USA, or: http://www.sgi.com
 #-----------------------------------------------------------------------
 
 #  Mountain View, CA 94043, USA, or: http://www.sgi.com
 #-----------------------------------------------------------------------
 
-BC=$(which bc 2> /dev/null) || BC=
+. common/config
 
 
-# Valid test names start with 3 digits "NNN":
-#  "[0-9]\{3\}"
-# followed by an optional "-":
-#  "-\?"
-# followed by an optional combination of alphanumeric and "-" chars:
-#  "[[:alnum:]-]*"
-# e.g. 999-the-mark-of-fstests
-#
-VALID_TEST_ID="[0-9]\{3\}"
-VALID_TEST_NAME="$VALID_TEST_ID-\?[[:alnum:]-]*"
+BC=$(which bc 2> /dev/null) || BC=
 
 # Some tests are not relevant or functional when testing XFS realtime
 # subvolumes along with the rtinherit=1 mkfs option.  In these cases,
 
 # Some tests are not relevant or functional when testing XFS realtime
 # subvolumes along with the rtinherit=1 mkfs option.  In these cases,
@@ -110,16 +101,6 @@ _ls_l()
        ls -l $* | sed "s/\(^[-rwxdlbcpsStT]*\)\. /\1 /" | grep -v 'lost+found'
 }
 
        ls -l $* | sed "s/\(^[-rwxdlbcpsStT]*\)\. /\1 /" | grep -v 'lost+found'
 }
 
-# we need common/config
-if [ "$iam" != "check" ]
-then
-    if ! . ./common/config
-        then
-        echo "$iam: failed to source common/config"
-        exit 1
-    fi
-fi
-
 _dump_err()
 {
     _err_msg="$*"
 _dump_err()
 {
     _err_msg="$*"
@@ -3574,10 +3555,6 @@ _disable_dmesg_check()
 
 init_rc()
 {
 
 init_rc()
 {
-       if [ "$iam" == new ]
-       then
-               return
-       fi
        # make some further configuration checks here
        if [ "$TEST_DEV" = ""  ]
        then
        # make some further configuration checks here
        if [ "$TEST_DEV" = ""  ]
        then
diff --git a/common/test_names b/common/test_names
new file mode 100644 (file)
index 0000000..98af40c
--- /dev/null
@@ -0,0 +1,12 @@
+##/bin/bash
+
+# Valid test names start with 3 digits "NNN":
+#  "[0-9]\{3\}"
+# followed by an optional "-":
+#  "-\?"
+# followed by an optional combination of alphanumeric and "-" chars:
+#  "[[:alnum:]-]*"
+# e.g. 999-the-mark-of-fstests
+#
+VALID_TEST_ID="[0-9]\{3\}"
+VALID_TEST_NAME="$VALID_TEST_ID-\?[[:alnum:]-]*"
diff --git a/new b/new
index 4eacccd3bf8b1fbac145c5e72a13b01077beeca0..112a63d5b9f8379fbfa1fe4f75f732efc6b2316a 100755 (executable)
--- a/new
+++ b/new
@@ -23,7 +23,7 @@
 
 # generic initialization
 iam=new
 
 # generic initialization
 iam=new
-. ./common/rc
+. ./common/test_names
 
 trap "rm -f /tmp/$$.; exit" 0 1 2 3 15
 
 
 trap "rm -f /tmp/$$.; exit" 0 1 2 3 15
 
@@ -81,6 +81,9 @@ line=0
 eof=1
 [ -f "$tdir/group" ] || usage
 
 eof=1
 [ -f "$tdir/group" ] || 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))
 for found in `cat $tdir/group | tr - ' ' | $AWK_PROG '{ print $1 }'`
 do
     line=$((line+1))