[augeas-devel] augeas: master - tests: divide test-lenses.sh into its 54 independent tests

David Lutterkort lutter at fedoraproject.org
Sat Jun 27 04:59:08 UTC 2009


Gitweb:        http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=63274de1dd018dd374abf2aa20acb5b9e47e0313
Commit:        63274de1dd018dd374abf2aa20acb5b9e47e0313
Parent:        6bb97a7e3c733116ea2cd54a473550a9f2dd900b
Author:        Jim Meyering <meyering at redhat.com>
AuthorDate:    Mon Jun 15 14:28:15 2009 +0200
Committer:     David Lutterkort <lutter at redhat.com>
CommitterDate: Fri Jun 26 21:52:56 2009 -0700

tests: divide test-lenses.sh into its 54 independent tests

This permits these tests to be run in parallel.
* tests/lens-test-1: New file.
* tests/Makefile.am (lens_tests): Define.
(check-lens-tests): New rule, to ensure that the above stays in
sync with reality.
(check): Depend on check-lens-tests.
($(lens_tests)): New rule.  Generate these files.
(check_SCRIPTS): Remove test-lenses.sh.  Add $(lens_tests).
(EXTRA_DIST): Add lens-test-1.
* tests/test-lenses.sh: Remove file.
* tests/.gitignore: suppress lens-*.sh files
---
 tests/.gitignore     |    1 +
 tests/Makefile.am    |   99 ++++++++++++++++++++++++++++++++++++++++++++++----
 tests/lens-test-1    |   12 ++++++
 tests/test-lenses.sh |   38 -------------------
 4 files changed, 105 insertions(+), 45 deletions(-)

diff --git a/tests/.gitignore b/tests/.gitignore
new file mode 100644
index 0000000..c6c59c8
--- /dev/null
+++ b/tests/.gitignore
@@ -0,0 +1 @@
+lens-*.sh
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 1f5d1ef..8c13bcf 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -9,13 +9,98 @@ AM_CFLAGS = $(AUGEAS_CFLAGS) $(WARN_CFLAGS) $(GNULIB_CFLAGS) \
 valgrind: fatest
 	libtool --mode=execute valgrind --quiet --leak-check=full ./fatest
 
-check_SCRIPTS=test-lenses.sh test-interpreter.sh test-get.sh \
-              test-put-symlink.sh test-save-empty.sh test-mv.sh \
-              test-bug-1.sh test-idempotent.sh test-preserve.sh \
-	      test-events-saved.sh test-save-mode.sh test-unlink-error.sh
+lens_tests =			\
+  lens-sudoers.sh		\
+  lens-aliases.sh		\
+  lens-aptpreferences.sh	\
+  lens-aptsource.sh		\
+  lens-bbhosts.sh		\
+  lens-cron.sh			\
+  lens-darkice.sh		\
+  lens-dhclient.sh		\
+  lens-dnsmasq.sh		\
+  lens-dpkg.sh			\
+  lens-dput.sh			\
+  lens-exports.sh		\
+  lens-fstab.sh			\
+  lens-gdm.sh			\
+  lens-group.sh			\
+  lens-hosts.sh			\
+  lens-inifile.sh		\
+  lens-inittab.sh		\
+  lens-interfaces.sh		\
+  lens-iptables.sh		\
+  lens-krb5.sh			\
+  lens-ldap.sh			\
+  lens-limits.sh		\
+  lens-logrotate.sh		\
+  lens-lokkit.sh		\
+  lens-modprobe.sh		\
+  lens-monit.sh			\
+  lens-ntp.sh			\
+  lens-openvpn.sh		\
+  lens-pam.sh			\
+  lens-passwd.sh		\
+  lens-pbuilder.sh		\
+  lens-php.sh			\
+  lens-phpvars.sh		\
+  lens-postfix_main.sh		\
+  lens-postfix_master.sh	\
+  lens-puppet.sh		\
+  lens-rsyncd.sh		\
+  lens-rx.sh			\
+  lens-samba.sh			\
+  lens-services.sh		\
+  lens-shellvars.sh		\
+  lens-slapd.sh			\
+  lens-soma.sh			\
+  lens-spacevars.sh		\
+  lens-squid.sh			\
+  lens-sshd.sh			\
+  lens-sysctl.sh		\
+  lens-vsftpd.sh		\
+  lens-webmin.sh		\
+  lens-xinetd.sh		\
+  lens-xorg.sh			\
+  lens-grub.sh			\
+  lens-yum.sh
 
-EXTRA_DIST=augtest $(AUGTESTS) root \
-	   $(check_SCRIPTS) $(wildcard modules/*.aug) xpath.tests
+ME = tests/Makefile.am
+
+# Ensure that the above list stays up to date:
+# Construct two lists: list of lens-*.sh from lens_tests = ... above,
+# and the list of ../lenses/tests/test_*.aug names.
+# If they're not the same, print the new or removed names and fail.
+check: check-lens-tests
+.PHONY: check-lens-tests
+_v = lens_tests
+check-lens-tests:
+	@u=$$({ sed -n '/^$(_v) =[	 ]*\\$$/,/[^\]$$/p'		\
+		$(srcdir)/Makefile.am					\
+	    | sed 's/^  *//;/^\$$.*/d;/^$(_v) =/d'			\
+	    | sed 's,\.sh.*\\,.sh,';					\
+	  ls -1 $(srcdir)/../lenses/tests/test_*.aug			\
+	    | sed 's,.*/test_\([^./]*\)\.aug$$,lens-\1.sh,';		\
+	} | LC_ALL=C sort | uniq -u);					\
+	test "x$$u" = x && :						\
+	  || { printf '%s\n' "$$u" >&2;					\
+	       echo '$(ME): new test(s)?  update lens_tests' >&2; exit 1; }
+
+DISTCLEANFILES = $(lens_tests)
+$(lens_tests): lens-test-1
+	$(LN_S) $< $@
+
+check_SCRIPTS = \
+  test-interpreter.sh \
+  $(lens_tests) \
+  test-get.sh \
+  test-put-symlink.sh test-save-empty.sh test-mv.sh \
+  test-bug-1.sh test-idempotent.sh test-preserve.sh \
+  test-events-saved.sh test-save-mode.sh test-unlink-error.sh
+
+EXTRA_DIST = \
+  augtest $(AUGTESTS) root lens-test-1 \
+  $(check_SCRIPTS) $(wildcard modules/*.aug) xpath.tests
 
 noinst_SCRIPTS = $(check_SCRIPTS)
 
@@ -26,7 +111,7 @@ TESTS_ENVIRONMENT = \
   abs_top_builddir='$(abs_top_builddir)' \
   abs_top_srcdir='$(abs_top_srcdir)'
 
-TESTS = $(check_SCRIPTS) $(check_PROGRAMS) augtest
+TESTS = augtest $(check_SCRIPTS) $(check_PROGRAMS)
 
 INCLUDES = -I$(top_srcdir)/src
 
diff --git a/tests/lens-test-1 b/tests/lens-test-1
new file mode 100755
index 0000000..6f2a09f
--- /dev/null
+++ b/tests/lens-test-1
@@ -0,0 +1,12 @@
+#! /bin/sh
+# Run one lens test.
+# Derive names of inputs from the name of this script.
+
+TOPDIR=$(cd $(dirname $0)/.. && pwd)
+[ -n "$abs_top_srcdir" ] || abs_top_srcdir=$TOPDIR
+LENS_DIR=$abs_top_srcdir/lenses
+
+me=$(echo "$0"|sed 's,.*/lens-\(.*\)\.sh$,\1,')
+
+t=$LENS_DIR/tests/test_$me.aug
+exec augparse --nostdinc -I "$LENS_DIR" "$t"
diff --git a/tests/test-lenses.sh b/tests/test-lenses.sh
deleted file mode 100755
index acba64c..0000000
--- a/tests/test-lenses.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/sh
-
-set -e
-
-VERBOSE=n
-if [ "x$1" = "x-v" ]; then
-    VERBOSE=y
-fi
-
-TOPDIR=$(cd $(dirname $0)/.. && pwd)
-[ -n "$abs_top_srcdir" ] || top_srcdir=$TOPDIR
-
-
-LENS_DIR=$abs_top_srcdir/lenses
-TESTS=$LENS_DIR/tests/test_*.aug
-
-LOG=$(mktemp /tmp/test-lenses.XXXXXX)
-trap 'rm "$LOG"' EXIT
-
-result=0
-for t in $TESTS
-do
-  printf "%-30s ... " $(basename "$t" .aug)
-  set +e
-  augparse --nostdinc -I "$LENS_DIR" "$t" > "$LOG" 2>&1
-  ret=$?
-  set -e
-  if [ ! $ret -eq 0 ]; then
-    echo FAIL
-    result=1
-  elif [ $ret -eq 0 ]; then
-    echo PASS
-  fi
-  if [ "$VERBOSE" = "y" ] ; then
-     cat "$LOG"
-  fi
-done
-exit $result




More information about the augeas-devel mailing list