X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/2e73a3913ac0e08253254477c444aeeb1b815943..8399cb7be4ef4ad57f6a4ef507e8c0fab4c9a78a:/tests/macros.at diff --git a/tests/macros.at b/tests/macros.at index f3ada45..e5eb8ff 100644 --- a/tests/macros.at +++ b/tests/macros.at @@ -1,4 +1,4 @@ -dnl Copyright © 2014-2015, 2018 Nick Bowler +dnl Copyright © 2014-2015, 2018-2019, 2021-2022 Nick Bowler dnl dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2. dnl This is free software: you are free to do what the fuck you want to. @@ -6,22 +6,6 @@ dnl There is NO WARRANTY, to the extent permitted by law. AT_BANNER([Autoconf macros]) -m4_define([TEST_CONFIGURE_AC], [AT_DATA([configure.ac], -[[AC_INIT([test], [0]) -]$1[ -AC_OUTPUT -]]) -cp "$srcdir/install-sh" \ - "$srcdir/config.guess" \ - "$srcdir/config.sub" \ - . -]) - -m4_define([TEST_AUTORECONF], - [AT_CHECK([autoreconf -I "$srcdir/m4"], [0], [], [stderr])]) - -m4_define([TEST_CONFIGURE], [AT_CHECK([./configure $1], [0], [ignore])]) - dnl Verify that the DX_BASEDIR macro expands correctly during argument dnl collection. Crucially, the output must not contain any other text. AT_SETUP([DX_BASEDIR during argument collection]) @@ -59,8 +43,8 @@ AC_CONFIG_FILES([test]) TEST_AUTORECONF TEST_CONFIGURE -printf '%s\n' "$srcdir" | sed -e 's:/\./:/:g' -e 's:/\.$::g' \ - -e 's:\(.\)//*:\1/:g' >expout +printf '${top_srcdir}/%s\n' "$srcdir" | sed -e 's:/\./:/:g' -e 's:/\.$::g' \ + -e 's:\(.\)//*:\1/:g' >expout AT_CHECK([cat test], [0], [expout]) AT_CLEANUP @@ -125,3 +109,346 @@ AT_CHECK([cat test.out], [0], [[FOOFOOFOO ]]) AT_CLEANUP + +AT_SETUP([DX_LINGUAS unused country variants]) +AT_KEYWORDS([DX_LINGUAS macro]) + +echo : >config.rpath +chmod +x config.rpath + +mkdir po +AT_DATA([po/LINGUAS], [[en +]]) + +AT_DATA([test.in], [[POFILES = @POFILES@ +MOFILES = @MOFILES@ +]]) + +TEST_CONFIGURE_AC( +[[m4@&t@_traceoff([AM_GNU_GETTEXT]) +AM_GNU_GETTEXT([external]) +DX_LINGUAS +AC_CONFIG_FILES([test]) +]]) + +TEST_AUTORECONF +LINGUAS='en_CA en'; export LINGUAS; TEST_CONFIGURE + +AT_CHECK([cat test], [0], [[POFILES = po/en.po +MOFILES = po/en.mo +]]) + +AT_CLEANUP + +AT_SETUP([DX_LINGUAS default install all]) +AT_KEYWORDS([DX_LINGUAS macro]) + +AS_UNSET([LINGUAS]) +AT_SKIP_IF([test ${LINGUAS+y}]) + +echo : >config.rpath +chmod +x config.rpath + +mkdir po +AT_DATA([po/LINGUAS], [[en ja # a comment ko +zh +]]) + +AT_DATA([test.in], [[POFILES = @POFILES@ +MOFILES = @MOFILES@ +]]) + +TEST_CONFIGURE_AC( +[[m4@&t@_traceoff([AM_GNU_GETTEXT]) +AM_GNU_GETTEXT([external]) +DX_LINGUAS +AC_CONFIG_FILES([test]) +]]) + +TEST_AUTORECONF +TEST_CONFIGURE + +AT_CHECK([cat test], [0], +[[POFILES = po/en.po po/ja.po po/zh.po +MOFILES = po/en.mo po/ja.mo po/zh.mo +]]) + +AT_CLEANUP + +AT_SETUP([DX_LINGUAS selections]) +AT_KEYWORDS([DX_LINGUAS macro]) + +echo : >config.rpath +chmod +x config.rpath + +mkdir po +AT_DATA([po/LINGUAS], [[en ja # a comment ko +zh en_US +]]) + +AT_DATA([test.in], [[POFILES = @POFILES@ +MOFILES = @MOFILES@ +]]) + +TEST_CONFIGURE_AC( +[[m4@&t@_traceoff([AM_GNU_GETTEXT]) +AM_GNU_GETTEXT([external]) +DX_LINGUAS +AC_CONFIG_FILES([test]) +]]) +TEST_AUTORECONF + +LINGUAS='en'; export LINGUAS; TEST_CONFIGURE +AT_CHECK([cat test], [0], +[[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po +MOFILES = po/en.mo +]]) + +LINGUAS='en_US'; export LINGUAS; TEST_CONFIGURE +AT_CHECK([cat test], [0], +[[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po +MOFILES = po/en.mo po/en_US.mo +]]) + +LINGUAS='en_CA'; export LINGUAS; TEST_CONFIGURE +AT_CHECK([cat test], [0], +[[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po +MOFILES = po/en.mo +]]) + +LINGUAS='ja ko'; export LINGUAS; TEST_CONFIGURE +AT_CHECK([cat test], [0], +[[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po +MOFILES = po/ja.mo +]]) + +LINGUAS='ja_JP ko_KR'; export LINGUAS; TEST_CONFIGURE +AT_CHECK([cat test], [0], +[[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po +MOFILES = po/ja.mo +]]) + +LINGUAS=''; export LINGUAS; TEST_CONFIGURE +AT_CHECK([cat test], [0], +[[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po +MOFILES = @&t@ +]]) + +AT_CLEANUP + +AT_SETUP([DX_LINGUAS with broken "join" utility]) +AT_KEYWORDS([DX_LINGUAS macro]) + +echo : >config.rpath +chmod +x config.rpath + +mkdir bin +cat >bin/join <compile +TEST_CONFIGURE_AC([[AM_INIT_AUTOMAKE([foreign]) +AM_PROG_CC_C_O +AC_SUBST([GLSRC], [.]) +DX_AUTOMAKE_COMPAT +DX_GNULIB_SYMFILES([symfiles.lst]) +AC_CONFIG_FILES([Makefile]) +]]) + +cp "$srcdir/snippet/glconfig.mk" . +AT_DATA([Makefile.am], +[[CLEANFILES = +DISTCLEANFILES = + +# automake won't emit this without sources but we expect it to be set +am__depfiles_maybe = depfiles +am__maybe_remake_depfiles = depfiles + +gnulib_headers = +gnulib_objects = a.o c.o b.o e.o d.o +gnulib_all_symfiles = $(gnulib_objects:.o=.glsym) +gnulib_symfiles = $(gnulib_all_symfiles) + +do_test: + printf '%s\n' $(gnulib_symfiles) | LC_ALL=C sort; \ + echo ///; printf '%s\n' $(gnulib_extra_objects) | LC_ALL=C sort +.PHONY: do_test + +include $(top_srcdir)/glconfig.mk +]])]) + +AT_SETUP([DX_GNULIB_SYMFILES]) +AT_KEYWORDS([DX_GNULIB_SYMFILES macro]) + +TEST_SYMFILES_INIT +AT_DATA([symfiles.lst], +[[b.foo +d.bar +]]) +TEST_AUTORECONF + +TEST_CONFIGURE +AT_CHECK([make -s do_test], [0], [[b.glsym +d.glsym +/// +a.o +c.o +e.o +]]) + +dnl verify rebuild rule insertion +sed '/^gnulib_objects/s/b[[.]]o//' Makefile.in >tmp +mv -f tmp Makefile.in +AT_CHECK([make -s do_test >rebuild.out && + sed '/^config.status:/,$!d' rebuild.out], [0], +[[config.status: creating Makefile +config.status: executing depfiles commands +config.status: executing gnulib-symfiles commands +d.glsym +/// +a.o +c.o +e.o +]]) + +AT_CLEANUP + +AT_SETUP([DX_GNULIB_SYMFILES separate srcdir]) +AT_KEYWORDS([DX_GNULIB_SYMFILES macro vpath]) + +TEST_SYMFILES_INIT +AT_DATA([symfiles.lst]) +TEST_AUTORECONF + +mkdir build && cd build +TEST_CONFIGURE([], [../configure]) +AT_CHECK([make -s do_test], [0], [[ +/// +a.o +b.o +c.o +d.o +e.o +]]) +cd .. + +AT_CLEANUP + +AT_SETUP([DX_GNULIB_SYMFILES distribution]) +AT_KEYWORDS([DX_GNULIB_SYMFILES macro]) + +TEST_CONFIGURE_AC([[AM_INIT_AUTOMAKE([foreign]) +DX_GNULIB_SYMFILES([symfiles.lst]) +AC_CONFIG_FILES([Makefile]) +]]) + +AT_DATA([symfiles.lst]) +AT_DATA([Makefile.am], +[[foo: ; printf '%s\n' $(top_srcdir) $(DISTFILES) +]]) +TEST_AUTORECONF + +TEST_CONFIGURE +AT_CHECK([make -s foo], [0], [stdout]) +AT_CHECK([exec 3