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! --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 linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html