From: "Jan Ťulák" <jtulak@redhat.com>
To: fstests@vger.kernel.org
Cc: david@fromorbit.com, eguan@redhat.com
Subject: [PATCH v10] fstests: Tests can use any name now, not 3 digits only.
Date: Wed, 1 Apr 2015 15:17:13 +0200 [thread overview]
Message-ID: <1427894233-10338-1-git-send-email-jtulak@redhat.com> (raw)
In-Reply-To: <20150401043542.GD8465@dastard>
Tests can use any name now, not 3 digits only.
(e.g. a test can be named "tests/generic/001-some-name")
Names are limited to alphanumeric characters and dash and are always prefixed
with an unique id for easier identification of a specific test.
Signed-off-by: Jan Ťulák <jtulak@redhat.com>
---
./new:
- input validation is moved before file check
- no longer printing regex to user
- removed name comparison, as we have unique IDs.
- better string cutting
edited README, changed regex for valid test names
README | 8 +++++++-
check | 9 ++++-----
common/rc | 10 ++++++++++
new | 54 +++++++++++++++++++++++++++++++++++++++++++++++++-----
4 files changed, 70 insertions(+), 11 deletions(-)
diff --git a/README b/README
index 0c9449a..f8a878c 100644
--- a/README
+++ b/README
@@ -202,10 +202,16 @@ Test script environment:
- When calling getfacl in a test, pass the "-n" argument so
that numeric rather than symbolic identifiers are used in
the output.
+ - When creating a new test, it is possible to enter a custom name
+ for the file. Filenames are in form NNN-custom-name, where NNN
+ is automatically added by the ./new script as an unique ID,
+ and "custom-name" is the optional string entered into a prompt
+ in the ./new script. It can contain only alphanumeric characters
+ and dash. Note the "NNN-" part is added automatically.
Verified output:
- Each test script has a numerical name, e.g. 007, and an associated
+ Each test script has a name, e.g. 007, and an associated
verified output, e.g. 007.out.
It is important that the verified output is deterministic, and
diff --git a/check b/check
index 0830e0c..4fa96ed 100755
--- a/check
+++ b/check
@@ -58,7 +58,6 @@ then
exit 1
fi
-SUPPORTED_TESTS="[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]"
SRC_GROUPS="generic shared"
export SRC_DIR="tests"
@@ -96,21 +95,21 @@ get_group_list()
l=$(sed -n < $SRC_DIR/$d/group \
-e 's/#.*//' \
-e 's/$/ /' \
- -e "s;\(^[0-9][0-9][0-9]\).* $grp .*;$SRC_DIR/$d/\1;p")
+ -e "s;^\($VALID_TEST_NAME\).* $grp .*;$SRC_DIR/$d/\1;p")
grpl="$grpl $l"
done
echo $grpl
}
-# find all tests, excluding files that are test metadata such as group files.
-# This assumes that tests are defined purely by alphanumeric filenames with no
-# ".xyz" extensions in the name.
+# Find all tests, excluding files that are test metadata such as group files.
+# It matches test names against $VALID_TEST_NAME defined in common/rc
get_all_tests()
{
touch $tmp.list
for d in $SRC_GROUPS $FSTYP; do
ls $SRC_DIR/$d/* | \
grep -v "\..*" | \
+ grep "^$SRC_DIR/$d/$VALID_TEST_NAME"| \
grep -v "group\|Makefile" >> $tmp.list 2>/dev/null
done
}
diff --git a/common/rc b/common/rc
index 857308a..869b56b 100644
--- a/common/rc
+++ b/common/rc
@@ -22,6 +22,16 @@
BC=$(which bc 2> /dev/null) || BC=
+# 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_NAME="[0-9]\{3\}-\?[[:alnum:]-]*"
+
_require_math()
{
if [ -z "$BC" ]; then
diff --git a/new b/new
index d1f8939..c734bdc 100755
--- a/new
+++ b/new
@@ -81,11 +81,14 @@ line=0
eof=1
[ -f "$tdir/group" ] || usage
-for found in `cat $tdir/group | $AWK_PROG '{ print $1 }'`
+for found in `cat $tdir/group | tr - ' ' | $AWK_PROG '{ print $1 }'`
do
line=$((line+1))
- if [ -z "$found" ] || [ "$found" == "#" ];then
- continue
+ 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`
@@ -100,7 +103,48 @@ if [ $eof -eq 1 ]; then
id=`printf "%03d" $i`
fi
-echo "Next test is $id"
+echo "Next test id is $id"
+
+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
+
+ # 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 ]
then
@@ -115,7 +159,7 @@ year=`date +%Y`
cat <<End-of-File >$tdir/$id
#! /bin/bash
-# FS QA Test No. $id
+# FS QA Test $id
#
# what am I here for?
#
--
2.1.0
next prev parent reply other threads:[~2015-04-01 13:17 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-04 15:55 [PATCH] Tests can use any name now, not 3 digits only Jan Ťulák
2015-03-18 18:01 ` Jan Tulak
2015-03-20 11:13 ` Eryu Guan
2015-03-20 15:03 ` [PATCH] fstests: tests " Jan Ťulák
2015-03-21 4:49 ` Eryu Guan
2015-03-21 12:02 ` Jan Tulak
2015-03-21 13:11 ` Eryu Guan
2015-03-25 13:27 ` [PATCH] fstests: Tests " Jan Ťulák
2015-03-25 13:32 ` Jan Tulak
2015-03-25 14:44 ` David Sterba
2015-03-25 15:20 ` Lukáš Czerner
2015-03-25 15:27 ` Jan Tulak
2015-03-25 15:43 ` Lukáš Czerner
2015-03-26 13:32 ` Jan Tulak
2015-03-25 17:09 ` Eryu Guan
2015-03-25 17:39 ` Jan Tulak
2015-03-26 13:35 ` Jan Ťulák
2015-03-26 14:41 ` David Sterba
2015-03-26 15:16 ` Jan Tulak
2015-03-26 15:44 ` David Sterba
2015-03-26 15:33 ` [PATCH v6] " Jan Ťulák
2015-03-27 7:25 ` Eryu Guan
2015-03-27 9:15 ` Jan Tulak
2015-03-27 9:19 ` Eryu Guan
2015-03-27 9:15 ` [PATCH v7] " Jan Ťulák
2015-03-27 9:39 ` Eryu Guan
2015-03-27 9:48 ` Jan Tulak
2015-03-27 11:15 ` Eryu Guan
2015-03-27 11:30 ` Jan Tulak
2015-03-27 11:29 ` [PATCH v8] " Jan Ťulák
2015-03-27 11:49 ` [PATCH v9] " Jan Ťulák
2015-03-27 14:33 ` Eryu Guan
2015-03-30 13:44 ` David Sterba
2015-04-01 4:35 ` Dave Chinner
2015-04-01 12:09 ` Jan Tulak
2015-04-01 12:15 ` Lukáš Czerner
2015-04-01 13:17 ` Jan Ťulák [this message]
2015-03-20 15:04 ` [PATCH] " Jan Tulak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1427894233-10338-1-git-send-email-jtulak@redhat.com \
--to=jtulak@redhat.com \
--cc=david@fromorbit.com \
--cc=eguan@redhat.com \
--cc=fstests@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.