fstests: update 'new' script

- Update script to support new test cheme tests/$fs_type/$TEST_IDX
- Try to use first unused ID

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Dmitry Monakhov
2014-11-10 18:01:10 +11:00
committed by Dave Chinner
parent 181ba03728
commit fd730cff44
+62 -23
View File
@@ -32,10 +32,22 @@ _cleanup()
:
}
if [ ! -f group ]
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
shift
if [ ! -f $tdir/group ]
then
echo "Creating the group index ..."
cat <<'End-of-File' >group
echo "Creating the $tdir/group index ..."
cat <<'End-of-File' >$tdir/group
# QA groups control
#
# define groups and default group owners
@@ -51,10 +63,10 @@ other some-user-login
End-of-File
fi
if [ ! -w group ]
if [ ! -w $tdir/group ]
then
chmod u+w group
echo "Warning: making the index file \"group\" writeable"
chmod u+w $tdir/group
echo "Warning: making the index file \"$tdir/group\" writeable"
fi
if make
@@ -64,13 +76,33 @@ else
echo "Warning: make failed -- some tests may be missing"
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}'`
i=0
line=0
eof=1
[ -f "$tdir/group" ] || usage
for found in `cat $tdir/group | $AWK_PROG '{ print $1 }'`
do
line=$((line+1))
if [ -z "$found" ] || [ "$found" == "#" ];then
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
echo "Next test is $id"
if [ -f $id ]
if [ -f $tdir/$id ]
then
echo "Error: test $id already exists!"
_cleanup
@@ -81,7 +113,7 @@ echo -n "Creating skeletal script for you to edit ..."
year=`date +%Y`
cat <<End-of-File >$id
cat <<End-of-File >$tdir/$id
#! /bin/bash
# FS QA Test No. $id
#
@@ -146,11 +178,12 @@ End-of-File
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): "
@@ -158,12 +191,15 @@ then
[ -z "$ans" ] && ans=other
if [ "X$ans" = "X?" ]
then
$AWK_PROG <group '
BEGIN { text = "# ???" }
/^[a-z]/ { printf "%-16.16s %s\n",$1,text; text = "# ???"; next }
NF < 2 { next }
{ text = $0 }' \
| sort
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
break
fi
@@ -173,18 +209,21 @@ else
#
for g in $*
do
if grep "^$g[ ]" group >/dev/null
if grep "^$g[ ]" $tdir/group >/dev/null
then
:
else
echo "Warning: group \"$g\" not defined in ./group"
echo "Warning: group \"$g\" not defined in $tdir/group"
fi
done
ans="$*"
fi
echo -n "Adding $id to group index ..."
echo "$id $ans" >>group
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