On Mon, Nov 16, 2015 at 03:51:11PM -0800, Darrick J. Wong wrote: > On Tue, Nov 17, 2015 at 07:58:45AM +1100, Dave Chinner wrote: > > On Fri, Nov 13, 2015 at 01:36:50PM -0800, Darrick J. Wong wrote: > > > Add two scripts: "nextid" finds the next available test ID number in a > > > group, and "mvtest" relocates a test, fixes the golden output, and > > > moves the group entry for that test. > > > > > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > > --- > > > mvtest | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > nextid | 35 +++++++++++++++++++++++++++++++++++ > > > > These should be placed in the "tools" directory. > > <nod> > > > > > > create mode 100755 mvtest > > > create mode 100755 nextid > > > > > > > > > diff --git a/mvtest b/mvtest > > > new file mode 100755 > > > index 0000000..b5406d1 > > > --- /dev/null > > > +++ b/mvtest > > > @@ -0,0 +1,58 @@ > > > +#!/bin/sh > > > + > > > +# Renumber a test > > > + > > > +if [ -z "$1" ] || [ "$1" = "--help" ]; then > > > + echo "Usage: $0 path_to_test new_path_to_test" > > > + exit 1 > > > +fi > > > + > > > +src="$1" > > > +dest="$2" > > > + > > > +die() { > > > + echo "$@" > > > + exit 1 > > > +} > > > + > > > +nsort() { > > > + sort -g < "$1" > "$2" > > > +} > > > + > > > +append() { > > > + out="$1" > > > + shift > > > + echo "$@" >> "${out}" > > > +} > > > + > > > +test "${src}" != "${dest}" || die "Test \"${src}\" is the same as dest." > > > +test -e "tests/${src}" || die "Test \"${src}\" does not exist." > > > +test ! -e "tests/${dest}" || die "Test \"${src}\" already exists." > > > + > > > +sid="$(basename "${src}")" > > > +did="$(basename "${dest}")" > > > + > > > +sgroup="$(basename "$(dirname "tests/${src}")")" > > > +dgroup="$(basename "$(dirname "tests/${dest}")")" > > > + > > > +sgroupfile="tests/${sgroup}/group" > > > +dgroupfile="tests/${sgroup}/group" > > > + > > > +$DBG git mv "tests/${src}" "tests/${dest}" > > > > $DBG? > > "DBG=echo ./mvtest foo bar" to see what it would have run, more or less. > > (I suppose I could getopt a --dry-run, but I could also just get rid of them.) > > > > > .... > > > +$DBG sed -e "/^${sid}.*$/d" -i "${sgroupfile}" > > > +$DBG cp "${dgroupfile}" "${dgroupfile}.new" > > > +$DBG append "${dgroupfile}.new" "${newgrpline}" > > > +$DBG nsort "${dgroupfile}.new" "${dgroupfile}" > > > > What does this do to comments in the group file? > > Eats them. I don't know of a good way to sort just the uncommented lines > in the file, short of writing a python script to do that. > > I guess it's not that hard; I've sort of needed one here and there over > the years, but never wrote one, and $google doesn't immediately provide > any such thing. > > > > > ... > > > > > diff --git a/nextid b/nextid > > > new file mode 100755 > > > index 0000000..285b549 > > > --- /dev/null > > > +++ b/nextid > > > @@ -0,0 +1,35 @@ > > > +#!/bin/sh > > > + > > > +# Given a group name, find the next available test number. > > > + > > > +if [ -z "$1" ] || [ "$1" = "--help" ]; then > > > + echo "Usage: $0 groupname[/start_looking_at_this_number]" > > > + exit 1 > > > +fi > > > + > > > +die() { > > > + echo "$@" > > > + exit 1 > > > +} > > > + > > > +if [ "$(basename "$1")" != "$1" ]; then > > > + group="$(dirname "$1")" > > > + id="$(basename "$1")" > > > +else > > > + group="$1" > > > + id=1 > > > +fi > > > +test -e "tests/${group}/group" || die "Unknown group \"${group}\"." > > > + > > > +while test "${id}" -lt 1000; do > > > + name="$(printf "%.03d" "${id}")" > > > + if [ ! -e "tests/${group}/${name}" ]; then > > > + echo "${group}/${name}" > > > + exit 0 > > > + fi > > > + id=$((id + 1)) > > > +done > > > + > > > +echo "No free IDs less than ${id} in group \"${group}\"." > > > > So the "new" script does this differently, by reading the group > > file and looking for the first non-contiguous ID in the file. It > > doesn't need scan ID limits because EOF triggers that. Wouldn't it > > be better to to factor the code out of the "new" script to find the > > next id, and then have the new script call that? > > Sure! In the end I wrote a short Python program to sort group files and it wasn't much harder to reuse the code to implement nextid, so I did that instead. I'll probably post this and a patch to fix the error codes in generic/157 later this week. --D > > --D > > > > > Cheers, > > > > Dave. > > -- > > Dave Chinner > > david@xxxxxxxxxxxxx > > > > _______________________________________________ > > xfs mailing list > > xfs@xxxxxxxxxxx > > http://oss.sgi.com/mailman/listinfo/xfs > -- > To unsubscribe from this list: send the line "unsubscribe fstests" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html