X-Git-Url: https://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/2d17f059aa8a1e4670b9dad3f24556c7d97f6d45..4967f55159b228c15e19dbe9d7436bbe76da0b87:/tests/macros.at diff --git a/tests/macros.at b/tests/macros.at index 9986d75..3b851fc 100644 --- a/tests/macros.at +++ b/tests/macros.at @@ -1,4 +1,4 @@ -dnl Copyright © 2015 Nick Bowler +dnl Copyright © 2014-2015, 2018 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,34 +6,38 @@ 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 +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]) +AT_KEYWORDS([DX_BASEDIR macro]) + +AT_DATA([test.in], +[[@TEST@ ]]) -cp "$srcdir/install-sh" \ - "$srcdir/config.guess" \ - "$srcdir/config.sub" \ - . -]) -m4_define([TEST_AUTORECONF], - [AT_CHECK([autoreconf -I "$srcdir/m4"], [0], [], [stderr])]) +TEST_CONFIGURE_AC( +[[AC_SUBST([TEST], 'm4@&t@_dquote(DX_BASEDIR)') +AC_CONFIG_FILES([test]) +]]) +TEST_AUTORECONF +TEST_CONFIGURE -m4_define([TEST_CONFIGURE], [AT_CHECK([./configure $1], [0], [ignore])]) +printf '%s\n' "$srcdir" | sed -e 's:/\./:/:g' -e 's:/\.$::g' \ + -e 's:\(.\)//*:\1/:g' >expout +AT_CHECK([cat test], [0], [expout]) -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]) +AT_CLEANUP -AT_XFAIL_IF([:]) +dnl Verify that DX_BASEDIR is correctly AC_SUBSTed +AT_SETUP([DX_BASEDIR output substitution]) +AT_KEYWORDS([DX_BASEDIR macro]) AT_DATA([test.in], -[[@TEST@ +[[@DX_BASEDIR@ ]]) TEST_CONFIGURE_AC( -[[AC@&t@_SUBST([TEST], 'm4@&t@_dquote(DX_BASEDIR)') +[[DX_INIT AC_CONFIG_FILES([test]) ]]) TEST_AUTORECONF @@ -44,3 +48,64 @@ printf '%s\n' "$srcdir" | sed -e 's:/\./:/:g' -e 's:/\.$::g' \ AT_CHECK([cat test], [0], [expout]) AT_CLEANUP + +dnl Verify that DX_BASEDIR is set correctly implicitly +AT_SETUP([DX_BASEDIR implicit definition]) +AT_KEYWORDS([DX_BASEDIR macro]) + +AT_DATA([test.in], +[[@DX_BASEDIR@ +]]) + +TEST_CONFIGURE_AC( +[[DX_EXPORTED_SH +AC_CONFIG_FILES([test]) +]]) +TEST_AUTORECONF +TEST_CONFIGURE + +AT_CLEANUP + +AT_SETUP([DX_COMMAND_OUTPUT]) +AT_KEYWORDS([DX_COMMAND_OUTPUT macro]) + +AT_DATA([expout], +[[ leading whitespace +trailing whitespace @&t@ +embedded\ backslashes + @&t@ +backslash\ +newline +]]) + +TEST_CONFIGURE_AC( +[[DX_COMMAND_OUTPUT([var], [cat expout]) +AS@&t@_ECHO(["$var"]) >test.out +]]) +TEST_AUTORECONF +TEST_CONFIGURE + +AT_CHECK([cat test.out], [0], [expout]) + +AT_CLEANUP + +AT_SETUP([DX_DO quoting]) +AT_KEYWORDS([DX_DO macro]) + +TEST_CONFIGURE_AC( +[[m4@&t@_define([FOO]) +:; { DX_DO([AS@&t@_ECHO_N(["[FOO]"])], + [AS@&t@_ECHO_N(["[FOO]"])], + [AS@&t@_ECHO(["[FOO]"])]) +} >test.out +]]) + +dnl TEST_CONFIGURE_AC( +dnl [[DX_DO([AS@&t@_ECHO_N([hello,world])],[AS@&t@_ECHO_N([goodbye,world])]) +dnl ]]) +TEST_AUTORECONF +TEST_CONFIGURE +AT_CHECK([cat test.out], [0], [[FOOFOOFOO +]]) + +AT_CLEANUP