Files
apfstests/new
T
Darrick J. Wong 810df5225b fstests: adapt the new test script to our new group tagging scheme
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 <djwong@kernel.org>
Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2021-06-27 22:50:15 +08:00

181 lines
3.5 KiB
Bash
Executable File

#! /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/test_names
tmpfile="/tmp/$$."
trap "rm -f $tmpfile; exit" 0 1 2 3 15
_cleanup()
{
:
}
SRC_GROUPS=`find tests -not -path tests -type d -printf "%f "`
usage()
{
echo "Usage $0 test_dir"
echo "Available dirs are: $SRC_GROUPS"
exit
}
[ $# -eq 0 ] && usage
tdir=tests/$1
i=0
line=0
eof=1
[ -d "$tdir/" ] || usage
export AWK_PROG="$(type -P awk)"
[ "$AWK_PROG" = "" ] && { echo "awk not found"; exit; }
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
# 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
echo "Creating test file '$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 ..."
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.
#
# FS QA Test $id
#
# what am I here for?
#
. ./common/preamble
_begin_fstest $ans
# Override the default cleanup function.
# _cleanup()
# {
# cd /
# rm -r -f \$tmp.*
# }
# 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 \$seqres.full (this) and \$seqres.full.ok (reference)"
# success, all done
status=0
exit
End-of-File
sleep 2 # latency to read messages to this point
echo ""
chmod 755 $tdir/$id
${EDITOR-vi} $tdir/$id
# Create default .out file
cat <<End-of-File >$tdir/$id.out
QA output created by $id
Silence is golden
End-of-File
echo " done."
exit 0