]> git.draconx.ca Git - dxcommon.git/blobdiff - tests/macros.at
Add library test for libdiscid
[dxcommon.git] / tests / macros.at
index 9986d75ffd0274b3ffc73d03d59b380d1c575599..3b851fc09793227fa24210e097a36a40f7d57caa 100644 (file)
@@ -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