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