mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
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>
This commit is contained in:
committed by
Eryu Guan
parent
5a5f95007a
commit
810df5225b
@@ -9,7 +9,8 @@
|
||||
iam=new
|
||||
. ./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()
|
||||
{
|
||||
@@ -26,71 +27,18 @@ usage()
|
||||
|
||||
[ $# -eq 0 ] && usage
|
||||
tdir=tests/$1
|
||||
shift
|
||||
|
||||
if [ ! -f $tdir/group ]
|
||||
then
|
||||
echo "Creating the $tdir/group index ..."
|
||||
cat <<'End-of-File' >$tdir/group
|
||||
# QA groups control
|
||||
#
|
||||
# define groups and default group owners
|
||||
# do not start group name with a digit
|
||||
#
|
||||
|
||||
# catch-all
|
||||
#
|
||||
other some-user-login
|
||||
|
||||
# test-group association ... one line per test
|
||||
#
|
||||
End-of-File
|
||||
fi
|
||||
|
||||
if [ ! -w $tdir/group ]
|
||||
then
|
||||
chmod u+w $tdir/group
|
||||
echo "Warning: making the index file \"$tdir/group\" writeable"
|
||||
fi
|
||||
|
||||
if make
|
||||
then
|
||||
:
|
||||
else
|
||||
echo "Warning: make failed -- some tests may be missing"
|
||||
fi
|
||||
|
||||
i=0
|
||||
line=0
|
||||
eof=1
|
||||
[ -f "$tdir/group" ] || usage
|
||||
[ -d "$tdir/" ] || 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))
|
||||
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
|
||||
if [ $eof -eq 1 ]; then
|
||||
line=$((line+1))
|
||||
i=$((i+1))
|
||||
id=`printf "%03d" $i`
|
||||
fi
|
||||
|
||||
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
|
||||
@@ -113,24 +61,9 @@ if [[ $REPLY = [Yy] ]]; then
|
||||
fi
|
||||
done
|
||||
|
||||
# now find where to insert this name
|
||||
eof=1
|
||||
for found in `tail -n +$line $tdir/group | $AWK_PROG '{ print $1 }'`; do
|
||||
found_id=$(echo "$found" | cut -d "-" -f 1 - )
|
||||
line=$((line+1))
|
||||
if [ -z "$found" ] || [ "$found" == "#" ]; then
|
||||
continue
|
||||
elif [ $found_id -gt $id ]; then
|
||||
eof=0
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ $eof -eq 0 ]; then
|
||||
# If place wasn't found, let $line be the end of the file
|
||||
line=$((line-1))
|
||||
fi
|
||||
id="$id-$name"
|
||||
fi
|
||||
|
||||
echo "Creating test file '$id'"
|
||||
|
||||
if [ -f $tdir/$id ]
|
||||
@@ -140,6 +73,53 @@ then
|
||||
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`
|
||||
@@ -154,7 +134,7 @@ cat <<End-of-File >$tdir/$id
|
||||
# what am I here for?
|
||||
#
|
||||
. ./common/preamble
|
||||
_begin_fstest group list here
|
||||
_begin_fstest $ans
|
||||
|
||||
# Override the default cleanup function.
|
||||
# _cleanup()
|
||||
@@ -196,56 +176,5 @@ QA output created by $id
|
||||
Silence is golden
|
||||
End-of-File
|
||||
|
||||
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
|
||||
l=$(sed -n < tests/$d/group \
|
||||
-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
|
||||
#
|
||||
for g in $*
|
||||
do
|
||||
if ! grep -q "[[:space:]]$g" "$tdir/group"; then
|
||||
echo "Warning: group \"$g\" not defined in $tdir/group"
|
||||
fi
|
||||
done
|
||||
ans="$*"
|
||||
fi
|
||||
|
||||
echo -n "Adding $id to group index ..."
|
||||
head -n $(($line-1)) $tdir/group > /tmp/$$.group
|
||||
echo "$id $ans" >> /tmp/$$.group
|
||||
tail -n +$((line)) $tdir/group >> /tmp/$$.group
|
||||
mv /tmp/$$.group $tdir/group
|
||||
echo " done."
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user