xref: /freebsd/contrib/pkgconf/tests/symlink.sh (revision a3cefe7f2b4df0f70ff92d4570ce18e517af43ec)
1#!/usr/bin/env atf-sh
2
3. $(atf_get_srcdir)/test_env.sh
4
5tests_init \
6	pcfiledir_symlink_absolute \
7	pcfiledir_symlink_relative
8
9# - We need to create a temporary subtree, since symlinks are not preserved
10#   in "make dist".
11# - ${srcdir} is relative and since we need to compare paths, we would have
12#   to portably canonicalize it again, which is hard. Instead, just keep
13#   the whole thing nested.
14pcfiledir_symlink_absolute_body()
15{
16	mkdir -p tmp/child
17	cp -f "${selfdir}/lib1/pcfiledir.pc" tmp/child/
18	ln -f -s "${PWD}/tmp/child/pcfiledir.pc" tmp/pcfiledir.pc  # absolute
19	ln -f -s tmp/pcfiledir.pc pcfiledir.pc
20
21	atf_check \
22		-o inline:"${PWD}/tmp/child\n" \
23		pkgconf --variable=prefix pcfiledir.pc
24	atf_check \
25		-o inline:"${PWD}/tmp/child\n" \
26		pkgconf --variable=prefix tmp/pcfiledir.pc
27	atf_check \
28		-o inline:"tmp/child\n" \
29		pkgconf --variable=prefix tmp/child/pcfiledir.pc
30
31	atf_check \
32		-o inline:"${PWD}/tmp/child\n" \
33		pkgconf --variable=prefix "${PWD}/pcfiledir.pc"
34	atf_check \
35		-o inline:"${PWD}/tmp/child\n" \
36		pkgconf --variable=prefix "${PWD}/tmp/pcfiledir.pc"
37	atf_check \
38		-o inline:"${PWD}/tmp/child\n" \
39		pkgconf --variable=prefix "${PWD}/tmp/child/pcfiledir.pc"
40
41	export PKG_CONFIG_PATH="."
42	atf_check \
43		-o inline:"${PWD}/tmp/child\n" \
44		pkgconf --variable=prefix pcfiledir
45	export PKG_CONFIG_PATH="${PWD}"
46	atf_check \
47		-o inline:"${PWD}/tmp/child\n" \
48		pkgconf --variable=prefix pcfiledir
49
50	export PKG_CONFIG_PATH="tmp"
51	atf_check \
52		-o inline:"${PWD}/tmp/child\n" \
53		pkgconf --variable=prefix pcfiledir
54	export PKG_CONFIG_PATH="${PWD}/tmp"
55	atf_check \
56		-o inline:"${PWD}/tmp/child\n" \
57		pkgconf --variable=prefix pcfiledir
58
59	export PKG_CONFIG_PATH="tmp/child"
60	atf_check \
61		-o inline:"tmp/child\n" \
62		pkgconf --variable=prefix pcfiledir
63	export PKG_CONFIG_PATH="${PWD}/tmp/child"
64	atf_check \
65		-o inline:"${PWD}/tmp/child\n" \
66		pkgconf --variable=prefix pcfiledir
67}
68
69pcfiledir_symlink_relative_body()
70{
71	mkdir -p tmp/child
72	cp -f "${selfdir}/lib1/pcfiledir.pc" tmp/child/
73	ln -f -s child/pcfiledir.pc tmp/pcfiledir.pc  # relative
74	ln -f -s tmp/pcfiledir.pc pcfiledir.pc
75
76	atf_check \
77		-o inline:"tmp/child\n" \
78		pkgconf --variable=prefix pcfiledir.pc
79	atf_check \
80		-o inline:"tmp/child\n" \
81		pkgconf --variable=prefix tmp/pcfiledir.pc
82	atf_check \
83		-o inline:"tmp/child\n" \
84		pkgconf --variable=prefix tmp/child/pcfiledir.pc
85
86	atf_check \
87		-o inline:"${PWD}/tmp/child\n" \
88		pkgconf --variable=prefix "${PWD}/pcfiledir.pc"
89	atf_check \
90		-o inline:"${PWD}/tmp/child\n" \
91		pkgconf --variable=prefix "${PWD}/tmp/pcfiledir.pc"
92	atf_check \
93		-o inline:"${PWD}/tmp/child\n" \
94		pkgconf --variable=prefix "${PWD}/tmp/child/pcfiledir.pc"
95
96	export PKG_CONFIG_PATH="."
97	atf_check \
98		-o inline:"tmp/child\n" \
99		pkgconf --variable=prefix pcfiledir
100	export PKG_CONFIG_PATH="${PWD}"
101	atf_check \
102		-o inline:"${PWD}/tmp/child\n" \
103		pkgconf --variable=prefix pcfiledir
104
105	export PKG_CONFIG_PATH="tmp"
106	atf_check \
107		-o inline:"tmp/child\n" \
108		pkgconf --variable=prefix pcfiledir
109	export PKG_CONFIG_PATH="${PWD}/tmp"
110	atf_check \
111		-o inline:"${PWD}/tmp/child\n" \
112		pkgconf --variable=prefix pcfiledir
113
114	export PKG_CONFIG_PATH="tmp/child"
115	atf_check \
116		-o inline:"tmp/child\n" \
117		pkgconf --variable=prefix pcfiledir
118	export PKG_CONFIG_PATH="${PWD}/tmp/child"
119	atf_check \
120		-o inline:"${PWD}/tmp/child\n" \
121		pkgconf --variable=prefix pcfiledir
122}
123