xref: /netbsd-src/external/bsd/atf/dist/tools/atf-config_test.sh (revision d780102efefa02003390cc43ea410dbd0ebb4a85)
1*d780102eSjmmv#
2*d780102eSjmmv# Automated Testing Framework (atf)
3*d780102eSjmmv#
4*d780102eSjmmv# Copyright (c) 2007 The NetBSD Foundation, Inc.
5*d780102eSjmmv# All rights reserved.
6*d780102eSjmmv#
7*d780102eSjmmv# Redistribution and use in source and binary forms, with or without
8*d780102eSjmmv# modification, are permitted provided that the following conditions
9*d780102eSjmmv# are met:
10*d780102eSjmmv# 1. Redistributions of source code must retain the above copyright
11*d780102eSjmmv#    notice, this list of conditions and the following disclaimer.
12*d780102eSjmmv# 2. Redistributions in binary form must reproduce the above copyright
13*d780102eSjmmv#    notice, this list of conditions and the following disclaimer in the
14*d780102eSjmmv#    documentation and/or other materials provided with the distribution.
15*d780102eSjmmv#
16*d780102eSjmmv# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17*d780102eSjmmv# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18*d780102eSjmmv# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19*d780102eSjmmv# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20*d780102eSjmmv# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21*d780102eSjmmv# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22*d780102eSjmmv# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23*d780102eSjmmv# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24*d780102eSjmmv# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25*d780102eSjmmv# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26*d780102eSjmmv# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27*d780102eSjmmv# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*d780102eSjmmv#
29*d780102eSjmmv
30*d780102eSjmmvall_vars="atf_arch \
31*d780102eSjmmv          atf_build_cc \
32*d780102eSjmmv          atf_build_cflags \
33*d780102eSjmmv          atf_build_cpp \
34*d780102eSjmmv          atf_build_cppflags \
35*d780102eSjmmv          atf_build_cxx \
36*d780102eSjmmv          atf_build_cxxflags \
37*d780102eSjmmv          atf_confdir \
38*d780102eSjmmv          atf_includedir \
39*d780102eSjmmv          atf_libdir \
40*d780102eSjmmv          atf_libexecdir \
41*d780102eSjmmv          atf_machine \
42*d780102eSjmmv          atf_pkgdatadir \
43*d780102eSjmmv          atf_shell \
44*d780102eSjmmv          atf_workdir"
45*d780102eSjmmvall_vars_no=15
46*d780102eSjmmv
47*d780102eSjmmvatf_test_case list_all
48*d780102eSjmmvlist_all_head()
49*d780102eSjmmv{
50*d780102eSjmmv    atf_set "descr" "Tests that at atf-config prints all expected" \
51*d780102eSjmmv                    "variables, and not more"
52*d780102eSjmmv}
53*d780102eSjmmvlist_all_body()
54*d780102eSjmmv{
55*d780102eSjmmv    atf_check -s eq:0 -o save:stdout -e empty atf-config
56*d780102eSjmmv    atf_check -s eq:0 -o empty -e empty \
57*d780102eSjmmv              test "$(wc -l stdout | awk '{ print $1 }')" = "${all_vars_no}"
58*d780102eSjmmv    for v in ${all_vars}; do
59*d780102eSjmmv        atf_check -s eq:0 -o ignore -e empty grep "${v}" stdout
60*d780102eSjmmv    done
61*d780102eSjmmv}
62*d780102eSjmmv
63*d780102eSjmmvatf_test_case query_one
64*d780102eSjmmvquery_one_head()
65*d780102eSjmmv{
66*d780102eSjmmv    atf_set "descr" "Tests that querying a single variable works"
67*d780102eSjmmv}
68*d780102eSjmmvquery_one_body()
69*d780102eSjmmv{
70*d780102eSjmmv    for v in ${all_vars}; do
71*d780102eSjmmv        atf_check -s eq:0 -o save:stdout -o match:"${v}" -e empty \
72*d780102eSjmmv            atf-config "${v}"
73*d780102eSjmmv        atf_check -s eq:0 -o empty -e empty \
74*d780102eSjmmv                  test "$(wc -l stdout | awk '{ print $1 }')" = 1
75*d780102eSjmmv    done
76*d780102eSjmmv}
77*d780102eSjmmv
78*d780102eSjmmvatf_test_case query_one_terse
79*d780102eSjmmvquery_one_terse_head()
80*d780102eSjmmv{
81*d780102eSjmmv    atf_set "descr" "Tests that querying a single variable in terse mode" \
82*d780102eSjmmv                    "works"
83*d780102eSjmmv}
84*d780102eSjmmvquery_one_terse_body()
85*d780102eSjmmv{
86*d780102eSjmmv    for v in ${all_vars}; do
87*d780102eSjmmv        atf_check -s eq:0 -o save:stdout -o match:"${v}" -e empty \
88*d780102eSjmmv            atf-config "${v}"
89*d780102eSjmmv        atf_check -s eq:0 -o empty -e empty \
90*d780102eSjmmv                  test "$(wc -l stdout | awk '{ print $1 }')" = 1
91*d780102eSjmmv        atf_check -s eq:0 -o save:stdout -e empty cut -d ' ' -f 3- stdout
92*d780102eSjmmv        atf_check -s eq:0 -o empty -e empty mv stdout expout
93*d780102eSjmmv        atf_check -s eq:0 -o file:expout -e empty atf-config -t "${v}"
94*d780102eSjmmv    done
95*d780102eSjmmv}
96*d780102eSjmmv
97*d780102eSjmmvatf_test_case query_multiple
98*d780102eSjmmvquery_multiple_head()
99*d780102eSjmmv{
100*d780102eSjmmv    atf_set "descr" "Tests that querying multiple variables works"
101*d780102eSjmmv}
102*d780102eSjmmvquery_multiple_body()
103*d780102eSjmmv{
104*d780102eSjmmv    atf_check -s eq:0 -o save:stdout -o match:'atf_libexecdir' \
105*d780102eSjmmv        -o match:'atf_shell' -e empty atf-config atf_libexecdir atf_shell
106*d780102eSjmmv    atf_check -s eq:0 -o empty -e empty \
107*d780102eSjmmv              test "$(wc -l stdout | awk '{ print $1 }')" = 2
108*d780102eSjmmv}
109*d780102eSjmmv
110*d780102eSjmmvatf_test_case query_unknown
111*d780102eSjmmvquery_unknown_head()
112*d780102eSjmmv{
113*d780102eSjmmv    atf_set "descr" "Tests that querying an unknown variable delivers" \
114*d780102eSjmmv                    "the correct error"
115*d780102eSjmmv}
116*d780102eSjmmvquery_unknown_body()
117*d780102eSjmmv{
118*d780102eSjmmv    atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \
119*d780102eSjmmv        atf-config non_existent
120*d780102eSjmmv}
121*d780102eSjmmv
122*d780102eSjmmvatf_test_case query_mixture
123*d780102eSjmmvquery_mixture_head()
124*d780102eSjmmv{
125*d780102eSjmmv    atf_set "descr" "Tests that querying a known and an unknown variable" \
126*d780102eSjmmv                    "delivers the correct error"
127*d780102eSjmmv}
128*d780102eSjmmvquery_mixture_body()
129*d780102eSjmmv{
130*d780102eSjmmv    for v in ${all_vars}; do
131*d780102eSjmmv        atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \
132*d780102eSjmmv                  atf-config "${v}" non_existent
133*d780102eSjmmv        atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \
134*d780102eSjmmv                  atf-config non_existent "${v}"
135*d780102eSjmmv    done
136*d780102eSjmmv}
137*d780102eSjmmv
138*d780102eSjmmvatf_test_case override_env
139*d780102eSjmmvoverride_env_head()
140*d780102eSjmmv{
141*d780102eSjmmv    atf_set "descr" "Tests that build-time variables can be overriden" \
142*d780102eSjmmv                    "through their corresponding environment variables"
143*d780102eSjmmv}
144*d780102eSjmmvoverride_env_body()
145*d780102eSjmmv{
146*d780102eSjmmv    for v in ${all_vars}; do
147*d780102eSjmmv        V=$(echo ${v} | tr '[a-z]' '[A-Z]')
148*d780102eSjmmv        atf_check -s eq:0 -o save:stdout -e empty -x "${V}=testval atf-config"
149*d780102eSjmmv        atf_check -s eq:0 -o empty -e empty mv stdout all
150*d780102eSjmmv
151*d780102eSjmmv        atf_check -s eq:0 -o save:stdout -e empty grep "^${v} : " all
152*d780102eSjmmv        atf_check -s eq:0 -o empty -e empty mv stdout affected
153*d780102eSjmmv        atf_check -s eq:0 -o save:stdout -e empty grep -v "^${v} : " all
154*d780102eSjmmv        atf_check -s eq:0 -o empty -e empty mv stdout unaffected
155*d780102eSjmmv
156*d780102eSjmmv        atf_check -s eq:0 -o empty -e empty \
157*d780102eSjmmv                  test "$(wc -l affected | awk '{ print $1 }')" = 1
158*d780102eSjmmv        atf_check -s eq:0 -o empty -e empty \
159*d780102eSjmmv                  test "$(wc -l unaffected | awk '{ print $1 }')" = \
160*d780102eSjmmv                   "$((${all_vars_no} -1))"
161*d780102eSjmmv
162*d780102eSjmmv        atf_check -s eq:0 -o ignore -e empty grep "^${v} : testval$" affected
163*d780102eSjmmv        atf_check -s eq:1 -o empty -e empty grep ' : testval$' unaffected
164*d780102eSjmmv    done
165*d780102eSjmmv}
166*d780102eSjmmv
167*d780102eSjmmvatf_init_test_cases()
168*d780102eSjmmv{
169*d780102eSjmmv    atf_add_test_case list_all
170*d780102eSjmmv
171*d780102eSjmmv    atf_add_test_case query_one
172*d780102eSjmmv    atf_add_test_case query_one_terse
173*d780102eSjmmv    atf_add_test_case query_multiple
174*d780102eSjmmv    atf_add_test_case query_unknown
175*d780102eSjmmv    atf_add_test_case query_mixture
176*d780102eSjmmv
177*d780102eSjmmv    atf_add_test_case override_env
178*d780102eSjmmv}
179*d780102eSjmmv
180*d780102eSjmmv# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
181