-#! /bin/sh
-#
-# Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it would be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-# Further, this software is distributed without any warranty that it is
-# free of the rightful claim of any third person regarding infringement
-# or the like. Any license provided herein, whether implied or
-# otherwise, applies only to this software file. Patent licenses, if
-# any, provided herein do not apply to combinations of this program with
-# other software, or any other product whatsoever.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write the Free Software Foundation, Inc., 59
-# Temple Place - Suite 330, Boston MA 02111-1307, USA.
-#
-# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
-# Mountain View, CA 94043, or:
-#
-# http://www.sgi.com
-#
-# For further information regarding this notice, see:
-#
-# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
-#
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved.
#
# Make a new test
#
# generic initialization
iam=new
-. ./common.rc
+. ./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()
{
:
}
-if [ ! -f group ]
-then
- echo "Creating the group index ..."
- cat <<'End-of-File' >group
-# QA groups control
-#
-# define groups and default group owners
-# do not start group name with a digit
-#
-
-# catch-all
-#
-other some-user-login
+SRC_GROUPS=`find tests -not -path tests -type d -printf "%f "`
+usage()
+{
+ echo "Usage $0 test_dir|test_dir_and_name"
+ echo "Available dirs are: $SRC_GROUPS"
+ exit
+}
-# test-group association ... one line per test
-#
-End-of-File
-fi
+[ $# -eq 0 ] && usage
-if [ ! -w group ]
-then
- chmod u+w group
- echo "Warning: making the index file \"group\" writeable"
+if echo "$1" | grep -q '/'; then
+ if [ -e "tests/$1" ]; then
+ echo "$1: test already exists."
+ exit 1
+ fi
+ tdir="tests/$(echo "$1" | cut -d '/' -f 1)"
+ id="$(echo "$1" | cut -d '/' -f 2)"
+else
+ tdir=tests/$1
+ id="$(basename "$(./tools/nextid "$1")")"
fi
-if make
-then
- :
-else
- echo "Warning: make failed -- some tests may be missing"
+i=0
+line=0
+eof=1
+[ -d "$tdir/" ] || usage
+
+export AWK_PROG="$(type -P awk)"
+[ "$AWK_PROG" = "" ] && { echo "awk not found"; exit; }
+
+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
+ # get the new name from user
+ name=""
+ while [ "$name" = "" ]; do
+ read -p "Enter the name: "
+ if [ "$REPLY" = "" ]; then
+ echo "For canceling, use ctrl+c."
+ elif echo "$id-$REPLY" | grep -q "^$VALID_TEST_NAME$"; then
+ if [ -e "$tdir/$id-$REPLY" ]; then
+ echo "File '$id-$REPLY' already exists, use another one."
+ echo
+ else
+ name="$REPLY"
+ fi
+ else
+ echo "A name can contain only alphanumeric symbols and dash!"
+ echo
+ fi
+ done
+
+ id="$id-$name"
fi
-last=`grep '^[0-9][0-9]* ' group | sort | tail -1 | sed -e 's/[ ].*//'`
-# get rid of leading 0s as can be interpreted as octal
-last=`echo $last | sed 's/^0*//'`
-id=`$AWK_PROG </dev/null 'BEGIN{printf "%03d\n",'$last'+1}'`
-echo "Next test is $id"
+echo "Creating test file '$id'"
-if [ -f $id ]
+if [ -f $tdir/$id ]
then
echo "Error: test $id already exists!"
_cleanup
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 ..."
-cat <<End-of-File >$id
-#! /bin/sh
-# XFS QA Test No. $id
+year=`date +%Y`
+
+cat <<End-of-File >$tdir/$id
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) $year YOUR NAME HERE. All Rights Reserved.
#
-# what am I here for?
+# FS QA Test $id
#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it would be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-# Further, this software is distributed without any warranty that it is
-# free of the rightful claim of any third person regarding infringement
-# or the like. Any license provided herein, whether implied or
-# otherwise, applies only to this software file. Patent licenses, if
-# any, provided herein do not apply to combinations of this program with
-# other software, or any other product whatsoever.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write the Free Software Foundation, Inc., 59
-# Temple Place - Suite 330, Boston MA 02111-1307, USA.
-#
-# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
-# Mountain View, CA 94043, or:
-#
-# http://www.sgi.com
-#
-# For further information regarding this notice, see:
-#
-# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
-#-----------------------------------------------------------------------
+# what am I here for?
#
-# creator
-owner=$USER@`_get_fqdn`
-
-seq=\`basename \$0\`
-echo "QA output created by \$seq"
+. ./common/preamble
+_begin_fstest $ans
-here=\`pwd\`
-tmp=/tmp/\$\$
-status=1 # failure is the default!
-trap "rm -f \$tmp.*; exit \\\$status" 0 1 2 3 15
+# Override the default cleanup function.
+# _cleanup()
+# {
+# cd /
+# rm -r -f \$tmp.*
+# }
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
+# Import common functions.
+# . ./common/filter
# real QA test starts here
+# Modify as appropriate.
+_supported_fs generic
+_require_test
+
# if error
exit
# optional stuff if your test has verbose output to help resolve problems
#echo
-#echo "If failure, check \$seq.full (this) and \$seq.full.ok (reference)"
+#echo "If failure, check \$seqres.full (this) and \$seqres.full.ok (reference)"
# success, all done
status=0
sleep 2 # latency to read messages to this point
echo ""
-chmod 755 $id
-${EDITOR-vi} $id
+chmod 755 $tdir/$id
+${EDITOR-vi} $tdir/$id
-if [ $# -eq 0 ]
-then
- while true
- do
- echo -n "Add to group(s) [other] (? for list): "
- read ans
- [ -z "$ans" ] && ans=other
- if [ "X$ans" = "X?" ]
- then
- $AWK_PROG <group '
-BEGIN { text = "# ???" }
-/^[a-zA-z]/ { printf "%-16.16s %s\n",$1,text; text = "# ???"; next }
-NF < 2 { next }
- { text = $0 }' \
- | sort
- else
- break
- fi
- done
-else
- # expert mode, groups are on the command line
- #
- for g in $*
- do
- if grep "^$g[ ]" group >/dev/null
- then
- :
- else
- echo "Warning: group \"$g\" not defined in ./group"
- fi
- done
- ans="$*"
-fi
+# Create default .out file
+cat <<End-of-File >$tdir/$id.out
+QA output created by $id
+Silence is golden
+End-of-File
-echo -n "Adding $id to group index ..."
-echo "$id $ans" >>group
echo " done."
-
exit 0