From fbe0ef56fb4d4f89a254546dd368caf44b5f65ec Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Wed, 5 Nov 2014 10:46:31 +0100 Subject: controller: add basic testsuite Copied from 'postgresql-setup' package. Also do some 'make dist' fixes. * controller/Makefile.am: Use $TEST_GEN_FILES_LIST. Also create the share/ directory during build. * controller/configure.ac: Initialize testsuite. * controller/tests/Makefile.am: Bureaucracy for testsuite. * controller/tests/atlocal.in: Likewise. * controller/tests/testsuite.at: Add two tests copied from postgresql-setup project. --- controller/Makefile.am | 22 +++++++++++++++------ controller/configure.ac | 7 +++++++ controller/tests/Makefile.am | 45 +++++++++++++++++++++++++++++++++++++++++++ controller/tests/atlocal.in | 1 + controller/tests/testsuite.at | 36 ++++++++++++++++++++++++++++++++++ 5 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 controller/tests/Makefile.am create mode 100644 controller/tests/atlocal.in create mode 100644 controller/tests/testsuite.at (limited to 'controller') diff --git a/controller/Makefile.am b/controller/Makefile.am index a5d227d..0df88b8 100644 --- a/controller/Makefile.am +++ b/controller/Makefile.am @@ -1,3 +1,5 @@ +SUBDIRS = . tests + bin_SCRIPTS = \ bin/dtf-run-remote \ bin/dtf-get-machine \ @@ -13,11 +15,12 @@ libexec_SCRIPTS = libexec/dtf-wait-for-ssh \ libexec/dtf-result-stats \ libexec/dtf-nova +noinst_DATA = $(TEST_GEN_FILES_LIST) ansiblevarsdir = $(pkgdatadir)/ansible/vars ansibleplaybooksdir = $(pkgdatadir)/ansible/playbooks -ansiblevars_DATA = $(srcdir)/share/dtf-controller/ansible/vars/generated-vars.yml +ansiblevars_DATA = share/dtf-controller/ansible/vars/generated-vars.yml dtfplaybookdir = $(pkgdatadir)/ansible/playbooks ansibleplaybooks_DATA = $(srcdir)/share/dtf-controller/ansible/playbooks/fedora.yml @@ -30,7 +33,7 @@ share/dtf-controller/ansible/vars/generated-vars.yml: \ $(INSTANTIATE) .dep: $(c_s) - mkdir -p bin libexec etc + $(MKDIR_P) bin libexec etc share/dtf-controller/ansible/vars touch .dep libexec/dtf-commit-results: $(srcdir)/libexec/dtf-commit-results.in .dep @@ -83,8 +86,15 @@ CONTROLLERDATA = \ $(srcdir)/share/dtf-controller/ansible/dummy-wrapper.yml -EXTRA_DIST = $(srcdir)/libexec/dtf-wait-for-ssh \ - $(CONTROLLERSOURCES) \ - $(CONTROLLERDATA) +EXTRA_DIST = \ + $(CONTROLLERSOURCES) \ + $(CONTROLLERDATA) \ + $(srcdir)/libexec/dtf-wait-for-ssh + +CLEANFILES = $(GENERATED_FILES) .dep $(TEST_GEN_FILES_LIST) -CLEANFILES = $(GENERATED_FILES) .dep +$(TEST_GEN_FILES_LIST): $(GENERATED_FILES) + $(AM_V_GEN)rm -rf $(TEST_GEN_FILES_LIST) && \ + for i in $(GENERATED_FILES); do \ + echo $$i >> $@ ; \ + done diff --git a/controller/configure.ac b/controller/configure.ac index 0c85544..334cb4f 100644 --- a/controller/configure.ac +++ b/controller/configure.ac @@ -6,6 +6,12 @@ AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile]) +# Initialize the test suite. +AC_CONFIG_TESTDIR(tests) +AC_CONFIG_FILES([tests/Makefile]) +AM_MISSING_PROG([AUTOM4TE], [autom4te]) +AC_SUBST([TEST_GEN_FILES_LIST], [.generated_files]) + AC_PATH_PROG([SED], [sed]) m4_define([sed_subst_var_pattern], [ -e 's|@$1[[@]]|\$($1)|g' \\]) SED_RULES="\\ @@ -20,6 +26,7 @@ sed_subst_var_pattern(pkgname) sed_subst_var_pattern(prefix) sed_subst_var_pattern(resulttemplatedir) sed_subst_var_pattern(sysconfdir) +sed_subst_var_pattern(TEST_GEN_FILES_LIST) sed_subst_var_pattern(top_srcdir) -e 's|@__FILE__[[@]]|\$@|g'" SED_CALL="\$(SED) \$(SED_RULES)" diff --git a/controller/tests/Makefile.am b/controller/tests/Makefile.am new file mode 100644 index 0000000..28197e4 --- /dev/null +++ b/controller/tests/Makefile.am @@ -0,0 +1,45 @@ +EXTRA_DIST = testsuite.at \ + package.m4 \ + $(TESTSUITE) \ + atlocal.in + +$(srcdir)/package.m4: $(top_srcdir)/configure.ac + $(AM_V_GEN):;{ \ + echo '# Signature of the current package.' && \ + echo 'm4_define([AT_PACKAGE_NAME],' && \ + echo ' [$(PACKAGE_NAME)])' && \ + echo 'm4_define([AT_PACKAGE_TARNAME],' && \ + echo ' [$(PACKAGE_TARNAME)])' && \ + echo 'm4_define([AT_PACKAGE_VERSION],' && \ + echo ' [$(PACKAGE_VERSION)])' && \ + echo 'm4_define([AT_PACKAGE_STRING],' && \ + echo ' [$(PACKAGE_STRING)])' && \ + echo 'm4_define([AT_PACKAGE_BUGREPORT],' && \ + echo ' [$(PACKAGE_BUGREPORT)])'; \ + echo 'm4_define([AT_PACKAGE_URL],' && \ + echo ' [$(PACKAGE_URL)])'; \ + } >'$(srcdir)/package.m4' + +TESTSUITE = $(srcdir)/testsuite +CHECK_DEPS = atconfig atlocal $(TESTSUITE) $(srcdir)/../$(TEST_GEN_FILES_LIST) + +atlocal: atlocal.in $(c_s) + $(INSTANTIATE) + +check-local: $(CHECK_DEPS) + $(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS) + +installcheck-local: $(CHECK_DEPS) + $(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(bindir)' $(TESTSUITEFLAGS) + +clean-local: + test ! -f '$(TESTSUITE)' || \ + $(SHELL) '$(TESTSUITE)' --clean + +AUTOTEST = $(AUTOM4TE) --language=autotest + +$(TESTSUITE): $(srcdir)/testsuite.at $(srcdir)/package.m4 + $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o $@.tmp $@.at && \ + mv $@.tmp $@ + +DISTCLEANFILES = atconfig atlocal diff --git a/controller/tests/atlocal.in b/controller/tests/atlocal.in new file mode 100644 index 0000000..6015f6b --- /dev/null +++ b/controller/tests/atlocal.in @@ -0,0 +1 @@ +TEST_GEN_FILES_LIST=@TEST_GEN_FILES_LIST@ diff --git a/controller/tests/testsuite.at b/controller/tests/testsuite.at new file mode 100644 index 0000000..ade0eea --- /dev/null +++ b/controller/tests/testsuite.at @@ -0,0 +1,36 @@ +AT_INIT +AT_COLOR_TESTS + +m4_define([gen_file_list], [$abs_top_builddir/$TEST_GEN_FILES_LIST]) + +AT_SETUP([Files instantiated correctly]) +AT_CHECK([ +test -f "gen_file_list" || { echo "no such file 'gen_file_list'" ; exit 1 ; } + +pattern='@[[a-zA-Z0-9_]]*@' + +while read file; do + file=$abs_top_builddir/$file + test ! -f "$file" && exit 1 + grep $pattern $file && echo "file $file is incomplete" && exit 1 +done < gen_file_list +exit 0 +]) +AT_CLEANUP + +AT_SETUP([Basic bash syntax check]) +AT_CHECK([file_list=$abs_top_builddir/$TEST_GEN_FILES_LIST +while read file; do + file=$abs_top_builddir/$file + line="`head -1 $file`" + case "$line" in + "#!/bin/bash") + bash -n $file || exit 1 + ;; + "#!/bin/sh") + sh -n $file || exit 1 + ;; + esac +done < gen_file_list +]) +AT_CLEANUP -- cgit