-dnl Copyright © 2015 Nick Bowler
+dnl Copyright © 2015, 2018 Nick Bowler
dnl
dnl Assorted helper macros
dnl
dnl DX_DO(arg, ...)
dnl Expand each argument in sequence, inserting newlines between them.
-AC_DEFUN([DX_DO], [m4_do([$1], [m4_map([m4_newline], m4_cdr($@))])])
+AC_DEFUN([DX_DO], [m4_do([$1], [m4_map_args([m4_newline], m4_shift($@))])])
-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.
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@
dnl Verify that DX_BASEDIR is correctly AC_SUBSTed
AT_SETUP([DX_BASEDIR output substitution])
+AT_KEYWORDS([DX_BASEDIR macro])
AT_DATA([test.in],
[[@DX_BASEDIR@
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@
AT_CLEANUP
AT_SETUP([DX_COMMAND_OUTPUT])
+AT_KEYWORDS([DX_COMMAND_OUTPUT macro])
AT_DATA([expout],
[[ leading whitespace
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