diff options
-rw-r--r-- | .gitignore | 20 | ||||
-rw-r--r-- | Makefile.am | 66 | ||||
-rw-r--r-- | configure.ac | 51 | ||||
-rw-r--r-- | tests/Makefile.am | 44 | ||||
-rw-r--r-- | tests/atlocal.in | 1 | ||||
-rw-r--r-- | tests/testsuite.at | 17 |
6 files changed, 145 insertions, 54 deletions
@@ -1,19 +1,25 @@ -Makefile -Makefile.in +*.tar.gz +*.log +.generated_files aclocal.m4 +atconfig +atlocal autom4te.cache/ config.log config.status configure +conf/postgresql* +INSTALL install-sh +Makefile +Makefile.in missing -*.log -INSTALL +package.m4 postgresql*-check-db-dir postgresql*-ctl +postgresql*.service postgresql*-setup postgresql*-setup.1 -*.tar.gz -conf/postgresql* -postgresql*.service README.rpm-dist +testsuite +testsuite.dir/ diff --git a/Makefile.am b/Makefile.am index 3efcc7c..1f165a7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ pkgname = postgresql$(DISTSUFF) -SUBDIRS = . doc +SUBDIRS = . doc tests bin_SCRIPTS = postgresql$(DISTSUFF)-setup @@ -14,52 +14,16 @@ nodist_systemdunits_DATA = postgresql$(DISTSUFF).service postgresql$(DISTSUFF)@. nodist_pgdoc_DATA = README.rpm-dist -# Encouraged by autoconf documentation itself. When we use config.status -# directly, e.g. libexecdir may result into '${exec_prefix}/libexec' -- but we -# need fully expanded strings there. -SED_RULES = \ - -e 's|@__FILE__[@]|$@|g' \ - -e 's|@bindir[@]|$(bindir)|g' \ - -e 's|@DISTSUFF[@]|$(DISTSUFF)|g' \ - -e 's|@docdir[@]|$(docdir)|g' \ - -e 's|@libdir[@]|$(libdir)|g' \ - -e 's|@libexecdir[@]|$(libexecdir)|g' \ - -e 's|@PG_CTL_BIN[@]|$(PG_CTL_BIN)|g' \ - -e 's|@PGDATADIR[@]|$(PGDATADIR)|g' \ - -e 's|@pgcontribdocdir[@]|$(pgcontribdocdir)|g' \ - -e 's|@pgdocdir[@]|$(pgdocdir)|g' \ - -e 's|@PGENGINE[@]|$(PGENGINE)|g' \ - -e 's|@pkgname[@]|$(pkgname)|g' \ - -e 's|@PGMAJORVERSION[@]|$(PGMAJORVERSION)|g' \ - -e 's|@PGVERSION[@]|$(PGVERSION)|g' \ - -e 's|@PKGCONFIG_DIR[@]|$(PKGCONFIG_DIR)|g' \ - -e 's|@POSTGRES_HOMEDIR[@]|$(POSTGRES_HOMEDIR)|g' \ - -e 's|@PREVMAJORVERSION[@]|$(PREVMAJORVERSION)|g' \ - -e 's|@PREVPGENGINE[@]|$(PREVPGENGINE)|g' \ - -e 's|@README_DIST[@]|$(README_DIST)|g' \ - -e 's|@SU[@]|$(SU)|g' \ - -e 's|@systemdunitsdir[@]|$(systemdunitsdir)|' \ - -e 's|@userunitsdir[@]|$(userunitsdir)|' \ - -e 's|@VERSION[@]|$(VERSION)|g' - -SED_CALL = $(SED) $(SED_RULES) - -edit = $(SED_CALL) $< > $@ - -c_s = $(top_srcdir)/config.status - -c_s_gen = $(AM_V_GEN)$(edit) - -c_s_script_gen = $(c_s_gen) && chmod +x $@ +noinst_DATA = $(TEST_GEN_FILES_LIST) postgresql$(DISTSUFF)-ctl: postgresql-ctl.in $(c_s) - $(c_s_script_gen) + $(INSTANTIATE_SCRIPT) postgresql$(DISTSUFF)-setup: postgresql-setup.in $(c_s) - $(c_s_script_gen) + $(INSTANTIATE_SCRIPT) postgresql$(DISTSUFF)-check-db-dir: postgresql-check-db-dir.in $(c_s) - $(c_s_script_gen) + $(INSTANTIATE_SCRIPT) # In ideal world, postgresql@.service would be hardlink to postgresql.service. # That would require, however, the rhbz#1141824 resolved so we could install @@ -76,15 +40,23 @@ postgresql$(DISTSUFF).service: postgresql.service.in $(c_s) $< > $@ README.rpm-dist: README.rpm-dist.in $(c_s) - $(c_s_gen) + $(INSTANTIATE) EXTRA_DIST = *.in -CLEANFILES = $(bin_SCRIPTS) \ - $(libexec_SCRIPTS) \ - $(nodist_pgdoc_DATA) \ - $(pkgsysconf_DATA) \ - $(nodist_systemdunits_DATA) +GENERATED_FILES = $(bin_SCRIPTS) \ + $(libexec_SCRIPTS) \ + $(nodist_pgdoc_DATA) \ + $(pkgsysconf_DATA) \ + $(nodist_systemdunits_DATA) + +CLEANFILES = $(GENERATED_FILES) $(TEST_GEN_FILES_LIST) + +$(TEST_GEN_FILES_LIST): $(GENERATED_FILES) + $(AM_V_GEN)rm -rf $(TEST_GEN_FILES_LIST) && \ + for i in $(GENERATED_FILES); do \ + echo $$i >> $@ ; \ + done install-data-hook: test `id -u` -eq 0 && systemctl daemon-reload diff --git a/configure.ac b/configure.ac index a39f2f6..6abf154 100644 --- a/configure.ac +++ b/configure.ac @@ -10,6 +10,57 @@ AM_SILENT_RULES([yes]) AC_ARG_VAR([DISTSUFF], [Append string suffix to all binaries]) AC_SUBST([DISTSUFF]) +# Initialize the test suite. +AC_CONFIG_TESTDIR(tests) +AC_CONFIG_FILES([tests/Makefile]) +AM_MISSING_PROG([AUTOM4TE], [autom4te]) +AC_SUBST([TEST_GEN_FILES_LIST], [$\(top_srcdir\)/.generated_files]) + + +# Instatiating generated files by sed instead of config.status. +# This is encouraged by autoconf documentation itself because if we used +# config.status directly, e.g. libexecdir may result into +# '${exec_prefix}/libexec' -- but we need fully expanded strings. +m4_define([sed_subst_var_pattern], [ -e 's|@$1[[@]]|\$($1)|g' \\]) +SED_RULES="\\ +sed_subst_var_pattern(bindir) +sed_subst_var_pattern(DISTSUFF) +sed_subst_var_pattern(docdir) +sed_subst_var_pattern(libdir) +sed_subst_var_pattern(libexecdir) +sed_subst_var_pattern(PG_CTL_BIN) +sed_subst_var_pattern(top_srcdir) +sed_subst_var_pattern(pgcontribdocdir) +sed_subst_var_pattern(PGDATADIR) +sed_subst_var_pattern(pgdocdir) +sed_subst_var_pattern(PGENGINE) +sed_subst_var_pattern(PGVERSION) +sed_subst_var_pattern(PGMAJORVERSION) +sed_subst_var_pattern(PKGCONFIG_DIR) +sed_subst_var_pattern(pkgname) +sed_subst_var_pattern(POSTGRES_HOMEDIR) +sed_subst_var_pattern(PREVMAJORVERSION) +sed_subst_var_pattern(PREVPGENGINE) +sed_subst_var_pattern(README_DIST) +sed_subst_var_pattern(SU) +sed_subst_var_pattern(systemdunitsdir) +sed_subst_var_pattern(userunitsdir) +sed_subst_var_pattern(TEST_GEN_FILES_LIST) +sed_subst_var_pattern(VERSION) + -e 's|@__FILE__[[@]]|\$@|g'" + +SED_CALL="\$(SED) \$(SED_RULES)" +m4_pattern_allow(AM_V_GEN) +INSTANTIATE="\$(AM_V_GEN)\$(SED_CALL) \$< > \$@" +INSTANTIATE_SCRIPT="\$(INSTANTIATE) && chmod +x \$@" +c_s='$(top_srcdir)/config.status' + +AC_SUBST([SED_RULES]) +AC_SUBST([SED_CALL]) +AC_SUBST([INSTANTIATE]) +AC_SUBST([INSTANTIATE_SCRIPT]) +AC_SUBST([c_s]) + AC_PATH_PROG([SED], [sed]) test -z "$ac_cv_path_SED" && AC_MSG_ERROR([Sed is needed but not found.]) diff --git a/tests/Makefile.am b/tests/Makefile.am new file mode 100644 index 0000000..1ec404d --- /dev/null +++ b/tests/Makefile.am @@ -0,0 +1,44 @@ +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) $(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 $@ + diff --git a/tests/atlocal.in b/tests/atlocal.in new file mode 100644 index 0000000..6015f6b --- /dev/null +++ b/tests/atlocal.in @@ -0,0 +1 @@ +TEST_GEN_FILES_LIST=@TEST_GEN_FILES_LIST@ diff --git a/tests/testsuite.at b/tests/testsuite.at new file mode 100644 index 0000000..9d18b29 --- /dev/null +++ b/tests/testsuite.at @@ -0,0 +1,17 @@ +AT_INIT +AT_COLOR_TESTS + +AT_SETUP([Check files are generated correctly]) +AT_CHECK([file_list=$top_srcdir/$at_testdir/$TEST_GEN_FILES_LIST +test -f "$file_list" || { echo "no such file '$file_list'" ; exit 1 ; } + +pattern='@[[a-zA-Z0-9_]]*@' + +while read file; do + file=${top_srcdir}/$file + grep $pattern $file && echo "file $file is incomplete" && exit 1 +done < $file_list + +exit 0 +]) +AT_CLEANUP |