[Sheepdog] [RFC PATCH 1/4] add make check support for testing
MORITA Kazutaka
morita.kazutaka at lab.ntt.co.jp
Fri Oct 28 06:08:25 CEST 2011
If you run 'make check', it will find python scripts in 'tests'
directory and execute all methods which starts with 'test_'.
FIXME: test/Makefile.am is tricky
Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
Makefile.am | 2 +-
configure.ac | 6 +++++-
tests/Makefile.am | 40 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 46 insertions(+), 2 deletions(-)
create mode 100644 tests/Makefile.am
diff --git a/Makefile.am b/Makefile.am
index ddfbfe0..cdc7165 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,7 +17,7 @@ sheepdogsysconfdir = ${SHEEPDOGCONFDIR}
sheepdogsysconf_DATA =
-SUBDIRS = lib collie sheep include script man
+SUBDIRS = lib collie sheep include script man tests
install-exec-local:
$(INSTALL) -d $(DESTDIR)/${localstatedir}/lib/sheepdog
diff --git a/configure.ac b/configure.ac
index ca33fab..d25be28 100644
--- a/configure.ac
+++ b/configure.ac
@@ -30,6 +30,7 @@ AM_INIT_AUTOMAKE([-Wno-portability])
AC_CONFIG_SRCDIR([collie/collie.c])
AC_CONFIG_HEADER([include/config.h])
+AC_CONFIG_TESTDIR([tests])
AC_CANONICAL_HOST
@@ -69,6 +70,8 @@ AC_PROG_MAKE_SET
AC_PROG_RANLIB
AC_CHECK_PROGS([GROFF], [groff])
+AM_MISSING_PROG(AUTOM4TE, autom4te, $missing_dir)
+
# Checks for libraries.
AC_CHECK_LIB([socket], [socket])
@@ -122,7 +125,8 @@ AC_CONFIG_FILES([Makefile
include/Makefile
script/Makefile
lib/Makefile
- man/Makefile])
+ man/Makefile
+ tests/Makefile])
### Local business
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644
index 0000000..3dafe9f
--- /dev/null
+++ b/tests/Makefile.am
@@ -0,0 +1,40 @@
+$(srcdir)/package.m4: $(top_srcdir)/configure.ac
+ @{ \
+ echo '# Signature of the current package.'; \
+ echo 'm4_define([AT_PACKAGE_NAME], [$(PACKAGE_NAME)])'; \
+ echo 'm4_define([AT_PACKAGE_TARNAME], [$(PACKAGE_TARNAME)])'; \
+ echo 'm4_define([AT_PACKAGE_VERSION], [$(PACKAGE_VERSION)])'; \
+ echo 'm4_define([AT_PACKAGE_STRING], [$(PACKAGE_STRING)])'; \
+ echo 'm4_define([AT_PACKAGE_BUGREPORT], [$(PACKAGE_BUGREPORT)])'; \
+ echo 'm4_define([AT_PACKAGE_URL], [$(PACKAGE_URL)])'; \
+ } > '$(srcdir)/package.m4'
+
+EXTRA_DIST =
+TESTSUITE = $(srcdir)/testsuite
+AUTOTEST = $(AUTOM4TE) --language=autotest
+
+check-local: atconfig $(srcdir)/package.m4
+ @{ \
+ echo 'AT_INIT()'; \
+ echo 'AT_COLOR_TESTS'; \
+ for f in *.py; do \
+ f=$${f%.py}; \
+ echo "AT_BANNER([$$f])"; \
+ python -c "import $$f; import sys; \
+ [sys.stdout.write( \
+ 'AT_SETUP([' + f + '])\n' + \
+ 'AT_CHECK([ \
+ PYTHONPATH=$(abs_srcdir) \
+ SHEEP=$(abs_top_builddir)/sheep/sheep \
+ COLLIE=$(abs_top_builddir)/collie/collie \
+ python -c \'import $$f; $$f.' + f + '()\' \
+ ],,stdout,stderr)\n' + \
+ 'AT_CLEANUP()\n' \
+ ) for f in dir($$f) if f.startswith('test_')]"; \
+ done \
+ } > '$(TESTSUITE).at'
+ $(AUTOTEST) -I '$(srcdir)' -o '$(TESTSUITE)' '$(TESTSUITE).at'
+ $(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
+
+clean-local:
+ test ! -f '$(TESTSUITE)' || $(SHELL) '$(TESTSUITE)' --clean
--
1.7.2.5
More information about the sheepdog
mailing list