xref: /freebsd/contrib/pkgconf/tests/regress.sh (revision a3cefe7f2b4df0f70ff92d4570ce18e517af43ec)
1#!/usr/bin/env atf-sh
2
3. $(atf_get_srcdir)/test_env.sh
4
5tests_init \
6	case_sensitivity \
7	depgraph_break_1 \
8	depgraph_break_2 \
9	depgraph_break_3 \
10	define_variable \
11	define_variable_override \
12	variable \
13	keep_system_libs \
14	libs \
15	libs_only \
16	libs_never_mergeback \
17	cflags_only \
18	cflags_never_mergeback \
19	incomplete_libs \
20	incomplete_cflags \
21	isystem_munge_order \
22	isystem_munge_sysroot \
23	idirafter_munge_order \
24	idirafter_munge_sysroot \
25	idirafter_ordering \
26	modversion_common_prefix \
27	modversion_fullpath \
28	modversion_provides \
29	modversion_uninstalled \
30	modversion_one_word_expression \
31	modversion_two_word_expression \
32	modversion_three_word_expression \
33	modversion_one_word_expression_no_space \
34	modversion_one_word_expression_no_space_zero \
35	pcpath \
36	virtual_variable \
37	fragment_collision \
38	malformed_1 \
39	malformed_quoting \
40	explicit_sysroot \
41	empty_tuple \
42	solver_requires_private_debounce \
43	billion_laughs \
44	define_prefix_child_prefix_1 \
45	define_prefix_child_prefix_1_env
46
47#	sysroot_munge \
48
49case_sensitivity_body()
50{
51	export PKG_CONFIG_PATH="${selfdir}/lib1"
52	atf_check \
53		-o inline:"3\n" \
54		pkgconf --variable=foo case-sensitivity
55	atf_check \
56		-o inline:"4\n" \
57		pkgconf --variable=Foo case-sensitivity
58}
59
60depgraph_break_1_body()
61{
62	export PKG_CONFIG_PATH="${selfdir}/lib1"
63	atf_check -s exit:1 -e ignore \
64		pkgconf --exists --print-errors 'foo > 0.6.0 foo < 0.8.0'
65}
66
67depgraph_break_2_body()
68{
69	export PKG_CONFIG_PATH="${selfdir}/lib1"
70	atf_check -s exit:1 -e ignore \
71		pkgconf --exists --print-errors 'nonexisting foo <= 3'
72}
73
74depgraph_break_3_body()
75{
76	export PKG_CONFIG_PATH="${selfdir}/lib1"
77	atf_check -s exit:1 -e ignore \
78		pkgconf --exists --print-errors 'depgraph-break'
79}
80
81define_variable_body()
82{
83	export PKG_CONFIG_PATH="${selfdir}/lib1"
84	atf_check -o inline:"\\\${libdir}/typelibdir\n" \
85		pkgconf --variable=typelibdir --define-variable='libdir=\${libdir}' typelibdir
86}
87
88define_variable_override_body()
89{
90	export PKG_CONFIG_PATH="${selfdir}/lib1"
91	atf_check -o inline:"/test\n" \
92		pkgconf --variable=prefix --define-variable='prefix=/test' typelibdir
93}
94
95variable_body()
96{
97	export PKG_CONFIG_PATH="${selfdir}/lib1"
98	atf_check \
99		-o inline:"/test/include\n" \
100		pkgconf --variable=includedir foo
101}
102
103keep_system_libs_body()
104{
105	export PKG_CONFIG_PATH="${selfdir}/lib1"
106	eval export "$LIBRARY_PATH_ENV"="/test/local/lib"
107	atf_check \
108		-o inline:"\n" \
109		pkgconf --libs-only-L cflags-libs-only
110
111	atf_check \
112		-o inline:"-L/test/local/lib\n" \
113		pkgconf --libs-only-L --keep-system-libs cflags-libs-only
114}
115
116libs_body()
117{
118	export PKG_CONFIG_PATH="${selfdir}/lib1"
119	atf_check \
120		-o inline:"-L/test/local/lib -lfoo\n" \
121		pkgconf --libs cflags-libs-only
122}
123
124libs_only_body()
125{
126	export PKG_CONFIG_PATH="${selfdir}/lib1"
127	atf_check \
128		-o inline:"-L/test/local/lib -lfoo\n" \
129		pkgconf --libs-only-L --libs-only-l cflags-libs-only
130}
131
132libs_never_mergeback_body()
133{
134	export PKG_CONFIG_PATH="${selfdir}/lib1"
135	atf_check \
136		-o inline:"-L/test/bar/lib -lfoo1\n" \
137		pkgconf --libs prefix-foo1
138	atf_check \
139		-o inline:"-L/test/bar/lib -lfoo1 -lfoo2\n" \
140		pkgconf --libs prefix-foo1 prefix-foo2
141}
142
143cflags_only_body()
144{
145	export PKG_CONFIG_PATH="${selfdir}/lib1"
146	atf_check \
147		-o inline:"-I/test/local/include/foo\n" \
148		pkgconf --cflags-only-I --cflags-only-other cflags-libs-only
149}
150
151cflags_never_mergeback_body()
152{
153	export PKG_CONFIG_PATH="${selfdir}/lib1"
154	atf_check \
155		-o inline:"-I/test/bar/include/foo -DBAR -fPIC -DFOO\n" \
156		pkgconf --cflags prefix-foo1 prefix-foo2
157}
158
159incomplete_libs_body()
160{
161	export PKG_CONFIG_PATH="${selfdir}/lib1"
162	atf_check \
163		-o inline:"\n" \
164		pkgconf --libs incomplete
165}
166
167incomplete_cflags_body()
168{
169	export PKG_CONFIG_PATH="${selfdir}/lib1"
170	atf_check \
171		-o inline:"\n" \
172		pkgconf --cflags incomplete
173}
174
175isystem_munge_order_body()
176{
177	export PKG_CONFIG_PATH="${selfdir}/lib1"
178	atf_check \
179		-o inline:"-isystem /opt/bad/include -isystem /opt/bad2/include\n" \
180		pkgconf --cflags isystem
181}
182
183isystem_munge_sysroot_body()
184{
185	export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR="${selfdir}"
186	atf_check \
187		-o match:"-isystem ${selfdir}/opt/bad/include" \
188		pkgconf --cflags isystem
189}
190
191idirafter_munge_order_body()
192{
193	export PKG_CONFIG_PATH="${selfdir}/lib1"
194	atf_check \
195		-o inline:"-idirafter /opt/bad/include -idirafter /opt/bad2/include\n" \
196		pkgconf --cflags idirafter
197}
198
199idirafter_munge_sysroot_body()
200{
201	export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR="${selfdir}"
202	atf_check \
203		-o match:"-idirafter ${selfdir}/opt/bad/include" \
204		pkgconf --cflags idirafter
205}
206
207idirafter_ordering_body()
208{
209	export PKG_CONFIG_PATH="${selfdir}/lib1"
210	atf_check \
211		-o inline:"-I/opt/bad/include1 -idirafter -I/opt/bad/include2 -I/opt/bad/include3\n" \
212		pkgconf --cflags idirafter-ordering
213}
214
215pcpath_body()
216{
217	export PKG_CONFIG_PATH="${selfdir}/lib2"
218	atf_check \
219		-o inline:"-fPIC -I/test/include/foo\n" \
220		pkgconf --cflags ${selfdir}/lib3/bar.pc
221}
222
223sysroot_munge_body()
224{
225	sed "s|/sysroot/|${selfdir}/|g" ${selfdir}/lib1/sysroot-dir.pc > ${selfdir}/lib1/sysroot-dir-selfdir.pc
226	export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR="${selfdir}"
227	atf_check \
228		-o inline:"-L${selfdir}/lib -lfoo\n" \
229		pkgconf --libs sysroot-dir-selfdir
230}
231
232virtual_variable_body()
233{
234	atf_check -s exit:0 \
235		pkgconf --exists pkg-config
236	atf_check -s exit:0 \
237		pkgconf --exists pkgconf
238
239	atf_check -o inline:"${pcpath}\n" \
240		pkgconf --variable=pc_path pkg-config
241	atf_check -o inline:"${pcpath}\n" \
242		pkgconf --variable=pc_path pkgconf
243}
244
245fragment_collision_body()
246{
247	atf_check -o inline:"-D_BAZ -D_BAR -D_FOO -D_THREAD_SAFE -pthread\n" \
248		pkgconf --with-path="${selfdir}/lib1" --cflags fragment-collision
249}
250
251malformed_1_body()
252{
253	atf_check -s exit:1 -o ignore \
254		pkgconf --validate --with-path="${selfdir}/lib1" malformed-1
255}
256
257malformed_quoting_body()
258{
259	atf_check -s exit:0 -o ignore \
260		pkgconf --validate --with-path="${selfdir}/lib1" malformed-quoting
261}
262
263explicit_sysroot_body()
264{
265	export PKG_CONFIG_SYSROOT_DIR=${selfdir}
266	atf_check -o inline:"${selfdir}/usr/share/test\n" \
267		pkgconf --with-path="${selfdir}/lib1" --variable=pkgdatadir explicit-sysroot
268}
269
270empty_tuple_body()
271{
272	atf_check -o inline:"\n" \
273		pkgconf --with-path="${selfdir}/lib1" --cflags empty-tuple
274}
275
276solver_requires_private_debounce_body()
277{
278	atf_check -o inline:"-I/metapackage-1 -I/metapackage-2 -lmetapackage-1 -lmetapackage-2\n" \
279		pkgconf --with-path="${selfdir}/lib1" --cflags --libs metapackage
280}
281
282billion_laughs_body()
283{
284	atf_check -o inline:"warning: truncating very long variable to 64KB\nwarning: truncating very long variable to 64KB\nwarning: truncating very long variable to 64KB\nwarning: truncating very long variable to 64KB\nwarning: truncating very long variable to 64KB\n" \
285		pkgconf --with-path="${selfdir}/lib1" --validate billion-laughs
286}
287
288modversion_common_prefix_body()
289{
290	atf_check -o inline:"foo: 1.2.3\nfoobar: 3.2.1\n" \
291		pkgconf --with-path="${selfdir}/lib1" --modversion --verbose foo foobar
292}
293
294modversion_fullpath_body()
295{
296	atf_check -o inline:"1.2.3\n" \
297		pkgconf --modversion "${selfdir}/lib1/foo.pc"
298}
299
300modversion_provides_body()
301{
302	atf_check -o inline:"1.2.3\n" \
303		pkgconf --with-path="${selfdir}/lib1" --modversion unavailable
304}
305
306modversion_uninstalled_body()
307{
308	atf_check -o inline:"1.2.3\n" \
309		pkgconf --with-path="${selfdir}/lib1" --modversion omg
310}
311
312modversion_one_word_expression_body()
313{
314	atf_check -o inline:"1.2.3\n" \
315		pkgconf --with-path="${selfdir}/lib1" --modversion "foo > 1.0"
316}
317
318modversion_two_word_expression_body()
319{
320	atf_check -o inline:"1.2.3\n" \
321		pkgconf --with-path="${selfdir}/lib1" --modversion foo "> 1.0"
322}
323
324modversion_three_word_expression_body()
325{
326	atf_check -o inline:"1.2.3\n" \
327		pkgconf --with-path="${selfdir}/lib1" --modversion foo ">" 1.0
328}
329
330modversion_one_word_expression_no_space_body()
331{
332	atf_check -o inline:"1.2.3\n" \
333		pkgconf --with-path="${selfdir}/lib1" --modversion "foo >1.0"
334}
335
336modversion_one_word_expression_no_space_zero_body()
337{
338	atf_check -o inline:"1.2.3\n" \
339		pkgconf --with-path="${selfdir}/lib1" --modversion "foo >0.5"
340}
341
342define_prefix_child_prefix_1_body()
343{
344	atf_check -o inline:"-I${selfdir}/lib1/include/child-prefix-1 -L${selfdir}/lib1/lib64 -lchild-prefix-1\n" \
345		pkgconf --with-path="${selfdir}/lib1/child-prefix/pkgconfig" --define-prefix --cflags --libs child-prefix-1
346}
347
348define_prefix_child_prefix_1_env_body()
349{
350	export PKG_CONFIG_PATH="${selfdir}/lib1/child-prefix/pkgconfig"
351	export PKG_CONFIG_RELOCATE_PATHS=1
352	atf_check -o inline:"-I${selfdir}/lib1/include/child-prefix-1 -L${selfdir}/lib1/lib64 -lchild-prefix-1\n" \
353		pkgconf --cflags --libs child-prefix-1
354}
355