summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Raiskup <praiskup@redhat.com>2014-11-05 10:46:31 +0100
committerPavel Raiskup <praiskup@redhat.com>2014-11-05 10:46:31 +0100
commitfbe0ef56fb4d4f89a254546dd368caf44b5f65ec (patch)
treecfc64bd713ba662cd9b36099accd3fe3988821a3
parentf45d146cb70d09be1face87ddede306302627349 (diff)
downloadpostgresql-setup-tests-fbe0ef56fb4d4f89a254546dd368caf44b5f65ec.tar.gz
postgresql-setup-tests-fbe0ef56fb4d4f89a254546dd368caf44b5f65ec.tar.xz
postgresql-setup-tests-fbe0ef56fb4d4f89a254546dd368caf44b5f65ec.zip
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.
-rw-r--r--controller/Makefile.am22
-rw-r--r--controller/configure.ac7
-rw-r--r--controller/tests/Makefile.am45
-rw-r--r--controller/tests/atlocal.in1
-rw-r--r--controller/tests/testsuite.at36
5 files changed, 105 insertions, 6 deletions
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