1 dnl Copyright © 2014-2015, 2018-2019, 2021 Nick Bowler
3 dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2.
4 dnl This is free software: you are free to do what the fuck you want to.
5 dnl There is NO WARRANTY, to the extent permitted by law.
7 AT_BANNER([Autoconf macros])
9 dnl Verify that the DX_BASEDIR macro expands correctly during argument
10 dnl collection. Crucially, the output must not contain any other text.
11 AT_SETUP([DX_BASEDIR during argument collection])
12 AT_KEYWORDS([DX_BASEDIR macro])
19 [[AC_SUBST([TEST], 'm4@&t@_dquote(DX_BASEDIR)')
20 AC_CONFIG_FILES([test])
25 printf '%s\n' "$srcdir" | sed -e 's:/\./:/:g' -e 's:/\.$::g' \
26 -e 's:\(.\)//*:\1/:g' >expout
27 AT_CHECK([cat test], [0], [expout])
31 dnl Verify that DX_BASEDIR is correctly AC_SUBSTed
32 AT_SETUP([DX_BASEDIR output substitution])
33 AT_KEYWORDS([DX_BASEDIR macro])
41 AC_CONFIG_FILES([test])
46 printf '${top_srcdir}/%s\n' "$srcdir" | sed -e 's:/\./:/:g' -e 's:/\.$::g' \
47 -e 's:\(.\)//*:\1/:g' >expout
48 AT_CHECK([cat test], [0], [expout])
52 dnl Verify that DX_BASEDIR is set correctly implicitly
53 AT_SETUP([DX_BASEDIR implicit definition])
54 AT_KEYWORDS([DX_BASEDIR macro])
62 AC_CONFIG_FILES([test])
69 AT_SETUP([DX_COMMAND_OUTPUT])
70 AT_KEYWORDS([DX_COMMAND_OUTPUT macro])
74 trailing whitespace @&t@
82 [[DX_COMMAND_OUTPUT([var], [cat expout])
83 AS@&t@_ECHO(["$var"]) >test.out
88 AT_CHECK([cat test.out], [0], [expout])
92 AT_SETUP([DX_DO quoting])
93 AT_KEYWORDS([DX_DO macro])
96 [[m4@&t@_define([FOO])
97 :; { DX_DO([AS@&t@_ECHO_N(["[FOO]"])],
98 [AS@&t@_ECHO_N(["[FOO]"])],
99 [AS@&t@_ECHO(["[FOO]"])])
103 dnl TEST_CONFIGURE_AC(
104 dnl [[DX_DO([AS@&t@_ECHO_N([hello,world])],[AS@&t@_ECHO_N([goodbye,world])])
108 AT_CHECK([cat test.out], [0], [[FOOFOOFOO
113 AT_SETUP([DX_LINGUAS unused country variants])
114 AT_KEYWORDS([DX_LINGUAS macro])
117 chmod +x config.rpath
120 AT_DATA([po/LINGUAS], [[en
123 AT_DATA([test.in], [[POFILES = @POFILES@
128 [[m4@&t@_traceoff([AM_GNU_GETTEXT])
129 AM_GNU_GETTEXT([external])
131 AC_CONFIG_FILES([test])
135 LINGUAS='en_CA en'; export LINGUAS; TEST_CONFIGURE
137 AT_CHECK([cat test], [0], [[POFILES = po/en.po
143 AT_SETUP([DX_LINGUAS default install all])
144 AT_KEYWORDS([DX_LINGUAS macro])
147 AT_SKIP_IF([test ${LINGUAS+y}])
150 chmod +x config.rpath
153 AT_DATA([po/LINGUAS], [[en ja # a comment ko
157 AT_DATA([test.in], [[POFILES = @POFILES@
162 [[m4@&t@_traceoff([AM_GNU_GETTEXT])
163 AM_GNU_GETTEXT([external])
165 AC_CONFIG_FILES([test])
171 AT_CHECK([cat test], [0],
172 [[POFILES = po/en.po po/ja.po po/zh.po
173 MOFILES = po/en.mo po/ja.mo po/zh.mo
178 AT_SETUP([DX_LINGUAS selections])
179 AT_KEYWORDS([DX_LINGUAS macro])
182 chmod +x config.rpath
185 AT_DATA([po/LINGUAS], [[en ja # a comment ko
189 AT_DATA([test.in], [[POFILES = @POFILES@
194 [[m4@&t@_traceoff([AM_GNU_GETTEXT])
195 AM_GNU_GETTEXT([external])
197 AC_CONFIG_FILES([test])
201 LINGUAS='en'; export LINGUAS; TEST_CONFIGURE
202 AT_CHECK([cat test], [0],
203 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
207 LINGUAS='en_US'; export LINGUAS; TEST_CONFIGURE
208 AT_CHECK([cat test], [0],
209 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
210 MOFILES = po/en.mo po/en_US.mo
213 LINGUAS='en_CA'; export LINGUAS; TEST_CONFIGURE
214 AT_CHECK([cat test], [0],
215 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
219 LINGUAS='ja ko'; export LINGUAS; TEST_CONFIGURE
220 AT_CHECK([cat test], [0],
221 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
225 LINGUAS='ja_JP ko_KR'; export LINGUAS; TEST_CONFIGURE
226 AT_CHECK([cat test], [0],
227 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
231 LINGUAS=''; export LINGUAS; TEST_CONFIGURE
232 AT_CHECK([cat test], [0],
233 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
239 AT_SETUP([DX_BASENAME])
240 AT_KEYWORDS([DX_BASENAME macro])
242 AT_DATA([test.in], [[@base0@
249 [[DX_BASENAME([base0], ["hello"])
250 DX_BASENAME([base1], ["foo/bar"])
251 DX_BASENAME([base2], ["/foo/bar/baz"])
252 DX_BASENAME([base3], ["hello world"])
257 AC_CONFIG_FILES([test])
262 AT_CHECK([cat test], [0], [hello