[Libvir] PATCH: Use macros to remove duplicate test code
Jim Meyering
jim at meyering.net
Fri Apr 18 09:54:43 UTC 2008
"Daniel P. Berrange" <berrange at redhat.com> wrote:
...
> Index: test_conf.sh
> ===================================================================
> RCS file: /data/cvs/libvirt/tests/test_conf.sh,v
> retrieving revision 1.4
> diff -u -p -r1.4 test_conf.sh
> --- test_conf.sh 5 Feb 2008 19:27:37 -0000 1.4
> +++ test_conf.sh 18 Apr 2008 00:29:55 -0000
> @@ -1,8 +1,15 @@
> #!/bin/bash
> -set -x
> +#set -x
> +set -e
> +if [ -z "$abs_srcdir" ]; then
> + abs_srcdir=`pwd`
> +fi
> +
> NOK=0
> -for f in $abs_top_srcdir/tests/confdata/*.conf
> +i=1
> +for f in $abs_srcdir/confdata/*.conf
> do
> + n=`echo $f | sed -e "s,$abs_srcdir/confdata/,,"`
> ./conftest $f > conftest.$$
> outfile=`echo "$f" | sed s+\.conf$+\.out+`
> diff $outfile conftest.$$ > /dev/null
> @@ -11,11 +18,12 @@ do
> if [ -n "$DEBUG_TESTS" ]; then
> diff -u $outfile conftest.$$
> fi
> - echo "$f FAILED"
> + printf "%2d) %-60s ... %s\n" $i $n "FAILED"
> NOK=1
> else
> - echo "$f OK"
> + printf "%2d) %-60s ... %s\n" $i $n "OK"
> fi
> + i=`expr $i + 1`
> done
> rm -f conftest.$$
> exit $NOK
Actually, I went to factor out the duplicate printf uses, then
noticed some underquoting problems (i.e., when $abs_srcdir expands
to something pathological, including e.g., semicolons or other shell
meta-characters), so started to fix those, and then went ahead and
converted to using test-lib.sh, so that this test now creates temporaries
in its own private directory (better for running tests in parallel).
As such, it doesn't have to use temp file names including ".$$" and
no longer has to remove them explicitly. Also, there's no need to
rely on /bin/bash in this particular case.
Here's the new version.
It also required the following small changes to TEST_ENVIRONMENT
in Makefile.am.
(however, if an older automake we care about doesn't have abs_srcdir,
the RHS will have to be `cd '$(srcdir)'; pwd` instead)
Dan, you're welcome to fold these changes into your patch.
Or just commit what you have and I'll do this separately.
----------------------------------
#!/bin/sh
if test "$VERBOSE" = yes; then
set -x
virsh --version
fi
. $srcdir/test-lib.sh
set -e
if test "x$abs_srcdir" = x; then
abs_srcdir=`pwd`
abs_builddir=`pwd`
fi
fail=0
i=1
data_dir=$abs_srcdir/confdata
for f in $(cd "$data_dir" && echo *.conf)
do
"$abs_builddir/conftest" "$data_dir/$f" > "$f-actual"
expected="$data_dir"/`echo "$f" | sed s+\.conf$+\.out+`
if compare "$expected" "$f-actual"; then
msg=OK
else
msg=FAILED
fail=1
fi
printf "%2d) %-60s ... %s\n" $i "$f" $msg
i=`expr $i + 1`
done
(exit $fail); exit $fail
----------------------------------
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ca12b84..95ca4e5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -64,6 +64,8 @@ path_add = $$abs_top_builddir/src$(PATH_SEPARATOR)$$abs_top_builddir/qemud
# abs_top_{src/build}dir variables, so don't rely
# on them here. Fake them with 'pwd'
TESTS_ENVIRONMENT = \
+ abs_srcdir='$(abs_srcdir)' \
+ abs_builddir=`cd '$(builddir)'; pwd` \
abs_top_builddir=`cd '$(top_builddir)'; pwd` \
abs_top_srcdir=`cd '$(top_srcdir)'; pwd` \
PATH="$(path_add)$(PATH_SEPARATOR)$$PATH" \
More information about the libvir-list
mailing list