]> git.draconx.ca Git - dxcommon.git/blob - tests/snippets.at
DX_C_ALIGNAS: Work around bash-5 parsing bug.
[dxcommon.git] / tests / snippets.at
1 dnl Copyright © 2021-2024 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([Automake snippet tests])
8
9 m4_define([TEST_DEPFILES_INIT],
10 [TEST_CONFIGURE_AC(
11 [[AM_INIT_AUTOMAKE([foreign])
12
13 DX_PROG_AUTOTEST_AM
14
15 AM_SET_DEPDIR
16 AM_OUTPUT_DEPENDENCY_COMMANDS
17 AM_MAKE_INCLUDE
18 AM_DEP_TRACK
19
20 AC_CONFIG_FILES([Makefile])
21 ]])
22
23 cp "$srcdir/snippet/autotest.mk" .
24 AT_DATA([Makefile.am],
25 [[EXTRA_DIST =
26 DISTCLEANFILES =
27 include $(top_srcdir)/autotest.mk
28 ]])
29
30 TEST_AUTORECONF])
31
32 AT_SETUP([autotest.mk depfiles (MAKE=gmake)])
33
34 TEST_DEPFILES_INIT
35
36 # gmake sanity check
37 AT_CHECK([{ echo 'rule:; @: $(info works)' |
38               gmake --no-print-directory -f - >out 2>/dev/null &&
39             read s <out && test x"$s" = x"works"; } || exit 77])
40
41 mkdir build
42 AT_CHECK([cd build && ../configure MAKE=gmake && test -f .deps/testsuite.P],
43   [0], [ignore])
44 AT_CHECK([gmake --no-print-directory -sC build distclean &&
45   find build -type f])
46
47 AT_CLEANUP
48
49 AT_SETUP([autotest.mk depfiles (MAKE=dmake)])
50
51 TEST_DEPFILES_INIT
52
53 # dmake sanity check
54 AT_CHECK([{ echo 'rule:; @echo works' | dmake -f - >out 2>/dev/null &&
55             read s <out && test x"$s" = x"works"; } || exit 77])
56
57 AT_CHECK([./configure MAKE=dmake && test -f .deps/testsuite.P], [0], [ignore])
58
59 AT_CLEANUP
60
61 AT_SETUP([autotest.mk no depfiles])
62
63 TEST_CONFIGURE_AC(
64 [[AM_INIT_AUTOMAKE([foreign])
65
66 AM_SET_DEPDIR
67 AM_OUTPUT_DEPENDENCY_COMMANDS
68 AM_MAKE_INCLUDE
69 AM_DEP_TRACK
70
71 DX_AUTOMAKE_COMPAT
72 AM_CONDITIONAL([HAVE_AUTOTEST], [:])
73
74 AC_CONFIG_FILES([Makefile])
75 ]])
76
77 cp "$srcdir/snippet/autotest.mk" .
78 AT_DATA([Makefile.am],
79 [[DISTCLEANFILES =
80 EXTRA_DIST =
81 include $(top_srcdir)/autotest.mk
82 ]])
83 TEST_AUTORECONF
84
85 TEST_CONFIGURE([--disable-dependency-tracking])
86
87 AT_DATA([testsuite.at])
88 AT_CHECK([make -s AUTOTEST="$srcdir/t/autotest.sh" testsuite])
89
90 AT_CLEANUP
91
92 AT_SETUP([glconfig.mk no depfiles])
93
94 TEST_CONFIGURE_AC(
95 [[AM_INIT_AUTOMAKE([foreign])
96
97 AM_SET_DEPDIR
98 AM_OUTPUT_DEPENDENCY_COMMANDS
99 AM_MAKE_INCLUDE
100 AM_DEP_TRACK
101
102 DX_AUTOMAKE_COMPAT
103 AC_SUBST([GLSRC], [lib])
104
105 AC_CONFIG_FILES([Makefile])
106 ]])
107
108 cp "$srcdir/snippet/glconfig.mk" .
109 AT_DATA([Makefile.am],
110 [[CLEANFILES =
111 DISTCLEANFILES =
112 gnulib_headers =
113 include $(top_srcdir)/glconfig.mk
114 ]])
115 TEST_AUTORECONF
116
117 TEST_CONFIGURE([--disable-dependency-tracking])
118 AT_CHECK([make -s lib/glconfig.h])
119 AT_CHECK([test ! -d lib/.deps && test ! -d lib/_deps && cat lib/glconfig.h])
120
121 AT_CLEANUP
122
123 AT_SETUP([gettext.mk .mo installation])
124
125 cp "$srcdir/snippet/gettext.mk" "$srcdir/t/msgfmt.sh" .
126 touch a.po b.po
127 TEST_CONFIGURE_AC(
128 [[AM_INIT_AUTOMAKE([foreign])
129 AC_CONFIG_FILES([Makefile])
130 ]])
131
132 AT_DATA([Makefile.am],
133 [[MSGFMT = $(SHELL) $(top_srcdir)/msgfmt.sh
134 EXTRA_DIST =
135 MAINTAINERCLEANFILES =
136 POFILES = a.po b.po
137 MOFILES = a.mo b.mo
138 include $(top_srcdir)/gettext.mk
139 ]])
140 TEST_AUTORECONF
141
142 mkdir build
143 (cd build && TEST_CONFIGURE([--prefix="$at_group_dir/inst"], [../configure]))
144
145 AT_CHECK([cd build &&
146   make DESTDIR="$at_group_dir" localedir=/l0 install],
147   [0], [ignore], [ignore])
148 AT_CHECK([test -d inst || { find l0 | LC_ALL=C sort; }], [0],
149 [[l0
150 l0/a
151 l0/a/LC_MESSAGES
152 l0/a/LC_MESSAGES/test.mo
153 l0/b
154 l0/b/LC_MESSAGES
155 l0/b/LC_MESSAGES/test.mo
156 ]])
157
158 AT_CHECK([cd build &&
159   make DESTDIR="$at_group_dir" localedir=/l1 installdirs],
160   [0], [ignore], [ignore])
161 AT_CHECK([test -d inst || { find l1 | LC_ALL=C sort; }], [0],
162 [[l1
163 l1/a
164 l1/a/LC_MESSAGES
165 l1/b
166 l1/b/LC_MESSAGES
167 ]])
168
169 AT_CHECK([cd build &&
170   make DESTDIR="$at_group_dir" localedir=/l2 MOFILES= install installdirs],
171   [0], [ignore], [ignore])
172 AT_CHECK([test ! -d inst && test ! -d l2])
173
174 AT_CHECK([cd build &&
175   make DESTDIR="$at_group_dir" localedir=/l0 MOFILES= uninstall],
176   [0], [ignore], [ignore])
177 AT_CHECK([test -d inst || { find l0 | LC_ALL=C sort; }], [0],
178 [[l0
179 l0/a
180 l0/a/LC_MESSAGES
181 l0/b
182 l0/b/LC_MESSAGES
183 ]])
184
185 AT_CLEANUP
186
187 TEST_TAP_SIMPLE([test-tap.at sanity], [tapcheck.sh 4 : : : :], [], [autotest])