]> git.draconx.ca Git - dxcommon.git/blob - tests/macros.at
Fix DX_BASEDIR substitution test.
[dxcommon.git] / tests / macros.at
1 dnl Copyright © 2014-2015, 2018-2019, 2021 Nick Bowler
2 dnl
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.
6
7 AT_BANNER([Autoconf macros])
8
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])
13
14 AT_DATA([test.in],
15 [[@TEST@
16 ]])
17
18 TEST_CONFIGURE_AC(
19 [[AC_SUBST([TEST], 'm4@&t@_dquote(DX_BASEDIR)')
20 AC_CONFIG_FILES([test])
21 ]])
22 TEST_AUTORECONF
23 TEST_CONFIGURE
24
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])
28
29 AT_CLEANUP
30
31 dnl Verify that DX_BASEDIR is correctly AC_SUBSTed
32 AT_SETUP([DX_BASEDIR output substitution])
33 AT_KEYWORDS([DX_BASEDIR macro])
34
35 AT_DATA([test.in],
36 [[@DX_BASEDIR@
37 ]])
38
39 TEST_CONFIGURE_AC(
40 [[DX_INIT
41 AC_CONFIG_FILES([test])
42 ]])
43 TEST_AUTORECONF
44 TEST_CONFIGURE
45
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])
49
50 AT_CLEANUP
51
52 dnl Verify that DX_BASEDIR is set correctly implicitly
53 AT_SETUP([DX_BASEDIR implicit definition])
54 AT_KEYWORDS([DX_BASEDIR macro])
55
56 AT_DATA([test.in],
57 [[@DX_BASEDIR@
58 ]])
59
60 TEST_CONFIGURE_AC(
61 [[DX_EXPORTED_SH
62 AC_CONFIG_FILES([test])
63 ]])
64 TEST_AUTORECONF
65 TEST_CONFIGURE
66
67 AT_CLEANUP
68
69 AT_SETUP([DX_COMMAND_OUTPUT])
70 AT_KEYWORDS([DX_COMMAND_OUTPUT macro])
71
72 AT_DATA([expout],
73 [[   leading whitespace
74 trailing whitespace     @&t@
75 embedded\ backslashes
76       @&t@
77 backslash\
78 newline
79 ]])
80
81 TEST_CONFIGURE_AC(
82 [[DX_COMMAND_OUTPUT([var], [cat expout])
83 AS@&t@_ECHO(["$var"]) >test.out
84 ]])
85 TEST_AUTORECONF
86 TEST_CONFIGURE
87
88 AT_CHECK([cat test.out], [0], [expout])
89
90 AT_CLEANUP
91
92 AT_SETUP([DX_DO quoting])
93 AT_KEYWORDS([DX_DO macro])
94
95 TEST_CONFIGURE_AC(
96 [[m4@&t@_define([FOO])
97 :; { DX_DO([AS@&t@_ECHO_N(["[FOO]"])],
98            [AS@&t@_ECHO_N(["[FOO]"])],
99            [AS@&t@_ECHO(["[FOO]"])])
100 } >test.out
101 ]])
102
103 dnl TEST_CONFIGURE_AC(
104 dnl [[DX_DO([AS@&t@_ECHO_N([hello,world])],[AS@&t@_ECHO_N([goodbye,world])])
105 dnl ]])
106 TEST_AUTORECONF
107 TEST_CONFIGURE
108 AT_CHECK([cat test.out], [0], [[FOOFOOFOO
109 ]])
110
111 AT_CLEANUP
112
113 AT_SETUP([DX_LINGUAS unused country variants])
114 AT_KEYWORDS([DX_LINGUAS macro])
115
116 echo : >config.rpath
117 chmod +x config.rpath
118
119 mkdir po
120 AT_DATA([po/LINGUAS], [[en
121 ]])
122
123 AT_DATA([test.in], [[POFILES = @POFILES@
124 MOFILES = @MOFILES@
125 ]])
126
127 TEST_CONFIGURE_AC(
128 [[m4@&t@_traceoff([AM_GNU_GETTEXT])
129 AM_GNU_GETTEXT([external])
130 DX_LINGUAS
131 AC_CONFIG_FILES([test])
132 ]])
133
134 TEST_AUTORECONF
135 export LINGUAS='en_CA en'; TEST_CONFIGURE
136
137 AT_CHECK([cat test], [0], [[POFILES = po/en.po
138 MOFILES = po/en.mo
139 ]])
140
141 AT_CLEANUP
142
143 AT_SETUP([DX_LINGUAS default install all])
144 AT_KEYWORDS([DX_LINGUAS macro])
145
146 AS_UNSET([LINGUAS])
147 AT_SKIP_IF([test ${LINGUAS+y}])
148
149 echo : >config.rpath
150 chmod +x config.rpath
151
152 mkdir po
153 AT_DATA([po/LINGUAS], [[en ja # a comment ko
154 zh
155 ]])
156
157 AT_DATA([test.in], [[POFILES = @POFILES@
158 MOFILES = @MOFILES@
159 ]])
160
161 TEST_CONFIGURE_AC(
162 [[m4@&t@_traceoff([AM_GNU_GETTEXT])
163 AM_GNU_GETTEXT([external])
164 DX_LINGUAS
165 AC_CONFIG_FILES([test])
166 ]])
167
168 TEST_AUTORECONF
169 TEST_CONFIGURE
170
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
174 ]])
175
176 AT_CLEANUP
177
178 AT_SETUP([DX_LINGUAS selections])
179 AT_KEYWORDS([DX_LINGUAS macro])
180
181 echo : >config.rpath
182 chmod +x config.rpath
183
184 mkdir po
185 AT_DATA([po/LINGUAS], [[en ja # a comment ko
186 zh en_US
187 ]])
188
189 AT_DATA([test.in], [[POFILES = @POFILES@
190 MOFILES = @MOFILES@
191 ]])
192
193 TEST_CONFIGURE_AC(
194 [[m4@&t@_traceoff([AM_GNU_GETTEXT])
195 AM_GNU_GETTEXT([external])
196 DX_LINGUAS
197 AC_CONFIG_FILES([test])
198 ]])
199 TEST_AUTORECONF
200
201 export LINGUAS="en"; TEST_CONFIGURE
202 AT_CHECK([cat test], [0],
203 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
204 MOFILES = po/en.mo
205 ]])
206
207 export LINGUAS="en_US"; 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
211 ]])
212
213 export LINGUAS="en_CA"; TEST_CONFIGURE
214 AT_CHECK([cat test], [0],
215 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
216 MOFILES = po/en.mo
217 ]])
218
219 export LINGUAS="ja ko"; TEST_CONFIGURE
220 AT_CHECK([cat test], [0],
221 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
222 MOFILES = po/ja.mo
223 ]])
224
225 export LINGUAS="ja ko"; TEST_CONFIGURE
226 AT_CHECK([cat test], [0],
227 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
228 MOFILES = po/ja.mo
229 ]])
230
231 export LINGUAS="ja_JP ko_KR"; TEST_CONFIGURE
232 AT_CHECK([cat test], [0],
233 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
234 MOFILES = po/ja.mo
235 ]])
236
237 export LINGUAS=""; TEST_CONFIGURE
238 AT_CHECK([cat test], [0],
239 [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
240 MOFILES = @&t@
241 ]])
242
243 AT_CLEANUP