xref: /freebsd/contrib/kyua/integration/cmd_debug_test.sh (revision 6b13d60bf49ee40626d7e3a5d5a80519f0067307)
1*b0d29bc4SBrooks Davis# Copyright 2011 The Kyua Authors.
2*b0d29bc4SBrooks Davis# All rights reserved.
3*b0d29bc4SBrooks Davis#
4*b0d29bc4SBrooks Davis# Redistribution and use in source and binary forms, with or without
5*b0d29bc4SBrooks Davis# modification, are permitted provided that the following conditions are
6*b0d29bc4SBrooks Davis# met:
7*b0d29bc4SBrooks Davis#
8*b0d29bc4SBrooks Davis# * Redistributions of source code must retain the above copyright
9*b0d29bc4SBrooks Davis#   notice, this list of conditions and the following disclaimer.
10*b0d29bc4SBrooks Davis# * Redistributions in binary form must reproduce the above copyright
11*b0d29bc4SBrooks Davis#   notice, this list of conditions and the following disclaimer in the
12*b0d29bc4SBrooks Davis#   documentation and/or other materials provided with the distribution.
13*b0d29bc4SBrooks Davis# * Neither the name of Google Inc. nor the names of its contributors
14*b0d29bc4SBrooks Davis#   may be used to endorse or promote products derived from this software
15*b0d29bc4SBrooks Davis#   without specific prior written permission.
16*b0d29bc4SBrooks Davis#
17*b0d29bc4SBrooks Davis# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18*b0d29bc4SBrooks Davis# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19*b0d29bc4SBrooks Davis# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20*b0d29bc4SBrooks Davis# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21*b0d29bc4SBrooks Davis# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22*b0d29bc4SBrooks Davis# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23*b0d29bc4SBrooks Davis# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24*b0d29bc4SBrooks Davis# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25*b0d29bc4SBrooks Davis# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26*b0d29bc4SBrooks Davis# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27*b0d29bc4SBrooks Davis# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*b0d29bc4SBrooks Davis
29*b0d29bc4SBrooks Davis
30*b0d29bc4SBrooks Davisutils_test_case no_args
31*b0d29bc4SBrooks Davisno_args_body() {
32*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
33*b0d29bc4SBrooks Davissyntax(2)
34*b0d29bc4SBrooks Davistest_suite("integration")
35*b0d29bc4SBrooks Davisatf_test_program{name="simple_all_pass"}
36*b0d29bc4SBrooks DavisEOF
37*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass .
38*b0d29bc4SBrooks Davis
39*b0d29bc4SBrooks Davis    cat >experr <<EOF
40*b0d29bc4SBrooks DavisUsage error for command debug: Not enough arguments.
41*b0d29bc4SBrooks DavisType 'kyua help debug' for usage information.
42*b0d29bc4SBrooks DavisEOF
43*b0d29bc4SBrooks Davis    atf_check -s exit:3 -o empty -e file:experr kyua debug
44*b0d29bc4SBrooks Davis}
45*b0d29bc4SBrooks Davis
46*b0d29bc4SBrooks Davis
47*b0d29bc4SBrooks Davisutils_test_case many_args
48*b0d29bc4SBrooks Davismany_args_body() {
49*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
50*b0d29bc4SBrooks Davissyntax(2)
51*b0d29bc4SBrooks Davistest_suite("integration")
52*b0d29bc4SBrooks Davisatf_test_program{name="first"}
53*b0d29bc4SBrooks Davisatf_test_program{name="second"}
54*b0d29bc4SBrooks DavisEOF
55*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
56*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
57*b0d29bc4SBrooks Davis
58*b0d29bc4SBrooks Davis    cat >experr <<EOF
59*b0d29bc4SBrooks DavisUsage error for command debug: Too many arguments.
60*b0d29bc4SBrooks DavisType 'kyua help debug' for usage information.
61*b0d29bc4SBrooks DavisEOF
62*b0d29bc4SBrooks Davis    atf_check -s exit:3 -o empty -e file:experr kyua debug first:pass \
63*b0d29bc4SBrooks Davis        second:pass
64*b0d29bc4SBrooks Davis}
65*b0d29bc4SBrooks Davis
66*b0d29bc4SBrooks Davis
67*b0d29bc4SBrooks Davisutils_test_case one_arg__ok_pass
68*b0d29bc4SBrooks Davisone_arg__ok_pass_body() {
69*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
70*b0d29bc4SBrooks Davissyntax(2)
71*b0d29bc4SBrooks Davistest_suite("integration")
72*b0d29bc4SBrooks Davisatf_test_program{name="first"}
73*b0d29bc4SBrooks Davisatf_test_program{name="second"}
74*b0d29bc4SBrooks DavisEOF
75*b0d29bc4SBrooks Davis    utils_cp_helper expect_all_pass first
76*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
77*b0d29bc4SBrooks Davis
78*b0d29bc4SBrooks Davis    cat >expout <<EOF
79*b0d29bc4SBrooks DavisThis is the stdout of pass
80*b0d29bc4SBrooks Davissecond:pass  ->  passed
81*b0d29bc4SBrooks DavisEOF
82*b0d29bc4SBrooks Daviscat >experr <<EOF
83*b0d29bc4SBrooks DavisThis is the stderr of pass
84*b0d29bc4SBrooks DavisEOF
85*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e file:experr kyua debug second:pass
86*b0d29bc4SBrooks Davis}
87*b0d29bc4SBrooks Davis
88*b0d29bc4SBrooks Davis
89*b0d29bc4SBrooks Davisutils_test_case one_arg__ok_fail
90*b0d29bc4SBrooks Davisone_arg__ok_fail_body() {
91*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
92*b0d29bc4SBrooks Davissyntax(2)
93*b0d29bc4SBrooks Davistest_suite("integration")
94*b0d29bc4SBrooks Davisatf_test_program{name="first"}
95*b0d29bc4SBrooks DavisEOF
96*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail first
97*b0d29bc4SBrooks Davis
98*b0d29bc4SBrooks Davis    cat >expout <<EOF
99*b0d29bc4SBrooks DavisThis is the stdout of fail
100*b0d29bc4SBrooks Davisfirst:fail  ->  failed: This fails on purpose
101*b0d29bc4SBrooks DavisEOF
102*b0d29bc4SBrooks Davis    cat >experr <<EOF
103*b0d29bc4SBrooks DavisThis is the stderr of fail
104*b0d29bc4SBrooks DavisEOF
105*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e file:experr kyua debug first:fail
106*b0d29bc4SBrooks Davis}
107*b0d29bc4SBrooks Davis
108*b0d29bc4SBrooks Davis
109*b0d29bc4SBrooks Davisutils_test_case one_arg__no_match
110*b0d29bc4SBrooks Davisone_arg__no_match_body() {
111*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
112*b0d29bc4SBrooks Davissyntax(2)
113*b0d29bc4SBrooks Davistest_suite("integration")
114*b0d29bc4SBrooks Davisatf_test_program{name="first"}
115*b0d29bc4SBrooks Davisatf_test_program{name="second"}
116*b0d29bc4SBrooks DavisEOF
117*b0d29bc4SBrooks Davis    utils_cp_helper expect_all_pass first
118*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
119*b0d29bc4SBrooks Davis
120*b0d29bc4SBrooks Davis    cat >experr <<EOF
121*b0d29bc4SBrooks Daviskyua: E: Unknown test case 'second:die'.
122*b0d29bc4SBrooks DavisEOF
123*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua debug second:die
124*b0d29bc4SBrooks Davis}
125*b0d29bc4SBrooks Davis
126*b0d29bc4SBrooks Davis
127*b0d29bc4SBrooks Davisutils_test_case one_arg__no_test_case
128*b0d29bc4SBrooks Davisone_arg__no_test_case_body() {
129*b0d29bc4SBrooks Davis    # CHECK_STYLE_DISABLE
130*b0d29bc4SBrooks Davis    cat >experr <<EOF
131*b0d29bc4SBrooks DavisUsage error for command debug: 'foo' is not a test case identifier (missing ':'?).
132*b0d29bc4SBrooks DavisType 'kyua help debug' for usage information.
133*b0d29bc4SBrooks DavisEOF
134*b0d29bc4SBrooks Davis    # CHECK_STYLE_ENABLE
135*b0d29bc4SBrooks Davis    atf_check -s exit:3 -o empty -e file:experr kyua debug foo
136*b0d29bc4SBrooks Davis}
137*b0d29bc4SBrooks Davis
138*b0d29bc4SBrooks Davis
139*b0d29bc4SBrooks Davisutils_test_case one_arg__bad_filter
140*b0d29bc4SBrooks Davisone_arg__bad_filter_body() {
141*b0d29bc4SBrooks Davis    cat >experr <<EOF
142*b0d29bc4SBrooks Daviskyua: E: Test case component in 'foo:' is empty.
143*b0d29bc4SBrooks DavisEOF
144*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua debug foo:
145*b0d29bc4SBrooks Davis}
146*b0d29bc4SBrooks Davis
147*b0d29bc4SBrooks Davis
148*b0d29bc4SBrooks Davisutils_test_case body_and_cleanup
149*b0d29bc4SBrooks Davisbody_and_cleanup_body() {
150*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
151*b0d29bc4SBrooks Davissyntax(2)
152*b0d29bc4SBrooks Davistest_suite("integration")
153*b0d29bc4SBrooks Davisatf_test_program{name="single"}
154*b0d29bc4SBrooks DavisEOF
155*b0d29bc4SBrooks Davis    utils_cp_helper metadata single
156*b0d29bc4SBrooks Davis
157*b0d29bc4SBrooks Davis    cat >expout <<EOF
158*b0d29bc4SBrooks Davissingle:with_cleanup  ->  passed
159*b0d29bc4SBrooks DavisEOF
160*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua debug \
161*b0d29bc4SBrooks Davis        --stdout=saved.out --stderr=saved.err single:with_cleanup
162*b0d29bc4SBrooks Davis
163*b0d29bc4SBrooks Davis    cat >expout <<EOF
164*b0d29bc4SBrooks DavisBody message to stdout
165*b0d29bc4SBrooks DavisCleanup message to stdout
166*b0d29bc4SBrooks DavisEOF
167*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty cat saved.out
168*b0d29bc4SBrooks Davis
169*b0d29bc4SBrooks Davis    cat >experr <<EOF
170*b0d29bc4SBrooks DavisBody message to stderr
171*b0d29bc4SBrooks DavisCleanup message to stderr
172*b0d29bc4SBrooks DavisEOF
173*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:experr -e empty cat saved.err
174*b0d29bc4SBrooks Davis}
175*b0d29bc4SBrooks Davis
176*b0d29bc4SBrooks Davis
177*b0d29bc4SBrooks Davisutils_test_case stdout_stderr_flags
178*b0d29bc4SBrooks Davisstdout_stderr_flags_body() {
179*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
180*b0d29bc4SBrooks Davissyntax(2)
181*b0d29bc4SBrooks Davistest_suite("integration")
182*b0d29bc4SBrooks Davisatf_test_program{name="first"}
183*b0d29bc4SBrooks Davisatf_test_program{name="second"}
184*b0d29bc4SBrooks DavisEOF
185*b0d29bc4SBrooks Davis    utils_cp_helper expect_all_pass first
186*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
187*b0d29bc4SBrooks Davis
188*b0d29bc4SBrooks Davis    cat >expout <<EOF
189*b0d29bc4SBrooks Davissecond:pass  ->  passed
190*b0d29bc4SBrooks DavisEOF
191*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua debug \
192*b0d29bc4SBrooks Davis        --stdout=saved.out --stderr=saved.err second:pass
193*b0d29bc4SBrooks Davis
194*b0d29bc4SBrooks Davis    cat >expout <<EOF
195*b0d29bc4SBrooks DavisThis is the stdout of pass
196*b0d29bc4SBrooks DavisEOF
197*b0d29bc4SBrooks Davis    cmp -s saved.out expout || atf_fail "--stdout did not redirect the" \
198*b0d29bc4SBrooks Davis        "standard output to the desired file"
199*b0d29bc4SBrooks Davis
200*b0d29bc4SBrooks Davis    cat >experr <<EOF
201*b0d29bc4SBrooks DavisThis is the stderr of pass
202*b0d29bc4SBrooks DavisEOF
203*b0d29bc4SBrooks Davis    cmp -s saved.err experr || atf_fail "--stderr did not redirect the" \
204*b0d29bc4SBrooks Davis        "standard error to the desired file"
205*b0d29bc4SBrooks Davis}
206*b0d29bc4SBrooks Davis
207*b0d29bc4SBrooks Davis
208*b0d29bc4SBrooks Davisutils_test_case args_are_relative
209*b0d29bc4SBrooks Davisargs_are_relative_body() {
210*b0d29bc4SBrooks Davis    mkdir root
211*b0d29bc4SBrooks Davis    cat >root/Kyuafile <<EOF
212*b0d29bc4SBrooks Davissyntax(2)
213*b0d29bc4SBrooks Davistest_suite("integration")
214*b0d29bc4SBrooks Davisinclude("subdir/Kyuafile")
215*b0d29bc4SBrooks Davisatf_test_program{name="prog"}
216*b0d29bc4SBrooks DavisEOF
217*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass root/prog
218*b0d29bc4SBrooks Davis
219*b0d29bc4SBrooks Davis    mkdir root/subdir
220*b0d29bc4SBrooks Davis    cat >root/subdir/Kyuafile <<EOF
221*b0d29bc4SBrooks Davissyntax(2)
222*b0d29bc4SBrooks Davistest_suite("integration")
223*b0d29bc4SBrooks Davisatf_test_program{name="prog"}
224*b0d29bc4SBrooks DavisEOF
225*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail root/subdir/prog
226*b0d29bc4SBrooks Davis
227*b0d29bc4SBrooks Davis    cat >expout <<EOF
228*b0d29bc4SBrooks DavisThis is the stdout of fail
229*b0d29bc4SBrooks Davissubdir/prog:fail  ->  failed: This fails on purpose
230*b0d29bc4SBrooks DavisEOF
231*b0d29bc4SBrooks Davis    cat >experr <<EOF
232*b0d29bc4SBrooks DavisThis is the stderr of fail
233*b0d29bc4SBrooks DavisEOF
234*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e file:experr kyua debug \
235*b0d29bc4SBrooks Davis        -k "$(pwd)/root/Kyuafile" subdir/prog:fail
236*b0d29bc4SBrooks Davis}
237*b0d29bc4SBrooks Davis
238*b0d29bc4SBrooks Davis
239*b0d29bc4SBrooks Davisutils_test_case only_load_used_test_programs
240*b0d29bc4SBrooks Davisonly_load_used_test_programs_body() {
241*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
242*b0d29bc4SBrooks Davissyntax(2)
243*b0d29bc4SBrooks Davistest_suite("integration")
244*b0d29bc4SBrooks Davisatf_test_program{name="first"}
245*b0d29bc4SBrooks Davisatf_test_program{name="second"}
246*b0d29bc4SBrooks DavisEOF
247*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
248*b0d29bc4SBrooks Davis    utils_cp_helper bad_test_program second
249*b0d29bc4SBrooks Davis
250*b0d29bc4SBrooks Davis    cat >expout <<EOF
251*b0d29bc4SBrooks DavisThis is the stdout of pass
252*b0d29bc4SBrooks Davisfirst:pass  ->  passed
253*b0d29bc4SBrooks DavisEOF
254*b0d29bc4SBrooks Davis    cat >experr <<EOF
255*b0d29bc4SBrooks DavisThis is the stderr of pass
256*b0d29bc4SBrooks DavisEOF
257*b0d29bc4SBrooks Davis    CREATE_COOKIE="$(pwd)/cookie"; export CREATE_COOKIE
258*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e file:experr kyua debug first:pass
259*b0d29bc4SBrooks Davis    if [ -f "${CREATE_COOKIE}" ]; then
260*b0d29bc4SBrooks Davis        atf_fail "An unmatched test case has been executed, which harms" \
261*b0d29bc4SBrooks Davis            "performance"
262*b0d29bc4SBrooks Davis    fi
263*b0d29bc4SBrooks Davis}
264*b0d29bc4SBrooks Davis
265*b0d29bc4SBrooks Davis
266*b0d29bc4SBrooks Davisutils_test_case config_behavior
267*b0d29bc4SBrooks Davisconfig_behavior_body() {
268*b0d29bc4SBrooks Davis    cat >"my-config" <<EOF
269*b0d29bc4SBrooks Davissyntax(2)
270*b0d29bc4SBrooks Davistest_suites.suite1["the-variable"] = "value1"
271*b0d29bc4SBrooks Davistest_suites.suite2["the-variable"] = "override me"
272*b0d29bc4SBrooks DavisEOF
273*b0d29bc4SBrooks Davis
274*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
275*b0d29bc4SBrooks Davissyntax(2)
276*b0d29bc4SBrooks Davisatf_test_program{name="config1", test_suite="suite1"}
277*b0d29bc4SBrooks Davisatf_test_program{name="config2", test_suite="suite2"}
278*b0d29bc4SBrooks Davisatf_test_program{name="config3", test_suite="suite3"}
279*b0d29bc4SBrooks DavisEOF
280*b0d29bc4SBrooks Davis    utils_cp_helper config config1
281*b0d29bc4SBrooks Davis    utils_cp_helper config config2
282*b0d29bc4SBrooks Davis    utils_cp_helper config config3
283*b0d29bc4SBrooks Davis
284*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o match:'failed' -e empty \
285*b0d29bc4SBrooks Davis        kyua -c my-config -v test_suites.suite2.the-variable=value2 \
286*b0d29bc4SBrooks Davis        debug config1:get_variable
287*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o match:'passed' -e empty \
288*b0d29bc4SBrooks Davis        kyua -c my-config -v test_suites.suite2.the-variable=value2 \
289*b0d29bc4SBrooks Davis        debug config2:get_variable
290*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o match:'skipped' -e empty \
291*b0d29bc4SBrooks Davis        kyua -c my-config -v test_suites.suite2.the-variable=value2 \
292*b0d29bc4SBrooks Davis        debug config3:get_variable
293*b0d29bc4SBrooks Davis}
294*b0d29bc4SBrooks Davis
295*b0d29bc4SBrooks Davis
296*b0d29bc4SBrooks Davisutils_test_case build_root_flag
297*b0d29bc4SBrooks Davisbuild_root_flag_body() {
298*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
299*b0d29bc4SBrooks Davissyntax(2)
300*b0d29bc4SBrooks Davistest_suite("integration")
301*b0d29bc4SBrooks Davisatf_test_program{name="first"}
302*b0d29bc4SBrooks Davisatf_test_program{name="second"}
303*b0d29bc4SBrooks DavisEOF
304*b0d29bc4SBrooks Davis    mkdir build
305*b0d29bc4SBrooks Davis    utils_cp_helper expect_all_pass build/first
306*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass build/second
307*b0d29bc4SBrooks Davis
308*b0d29bc4SBrooks Davis    cat >expout <<EOF
309*b0d29bc4SBrooks DavisThis is the stdout of pass
310*b0d29bc4SBrooks Davissecond:pass  ->  passed
311*b0d29bc4SBrooks DavisEOF
312*b0d29bc4SBrooks Daviscat >experr <<EOF
313*b0d29bc4SBrooks DavisThis is the stderr of pass
314*b0d29bc4SBrooks DavisEOF
315*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e file:experr \
316*b0d29bc4SBrooks Davis        kyua debug --build-root=build second:pass
317*b0d29bc4SBrooks Davis}
318*b0d29bc4SBrooks Davis
319*b0d29bc4SBrooks Davis
320*b0d29bc4SBrooks Davisutils_test_case kyuafile_flag__ok
321*b0d29bc4SBrooks Daviskyuafile_flag__ok_body() {
322*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
323*b0d29bc4SBrooks DavisThis file is bogus but it is not loaded.
324*b0d29bc4SBrooks DavisEOF
325*b0d29bc4SBrooks Davis
326*b0d29bc4SBrooks Davis    cat >myfile <<EOF
327*b0d29bc4SBrooks Davissyntax(2)
328*b0d29bc4SBrooks Davistest_suite("hello-world")
329*b0d29bc4SBrooks Davisatf_test_program{name="sometest"}
330*b0d29bc4SBrooks DavisEOF
331*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass sometest
332*b0d29bc4SBrooks Davis
333*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o match:passed -e empty kyua test -k myfile sometest
334*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o match:passed -e empty kyua test --kyuafile=myfile \
335*b0d29bc4SBrooks Davis        sometest
336*b0d29bc4SBrooks Davis}
337*b0d29bc4SBrooks Davis
338*b0d29bc4SBrooks Davis
339*b0d29bc4SBrooks Davisutils_test_case missing_kyuafile
340*b0d29bc4SBrooks Davismissing_kyuafile_body() {
341*b0d29bc4SBrooks Davis    cat >experr <<EOF
342*b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: File 'Kyuafile' not found.
343*b0d29bc4SBrooks DavisEOF
344*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua debug foo:bar
345*b0d29bc4SBrooks Davis}
346*b0d29bc4SBrooks Davis
347*b0d29bc4SBrooks Davis
348*b0d29bc4SBrooks Davisutils_test_case bogus_kyuafile
349*b0d29bc4SBrooks Davisbogus_kyuafile_body() {
350*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
351*b0d29bc4SBrooks DavisHello, world.
352*b0d29bc4SBrooks DavisEOF
353*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty \
354*b0d29bc4SBrooks Davis        -e match:"Load of 'Kyuafile' failed: .* Kyuafile:2:" kyua list
355*b0d29bc4SBrooks Davis}
356*b0d29bc4SBrooks Davis
357*b0d29bc4SBrooks Davis
358*b0d29bc4SBrooks Davisutils_test_case bogus_test_program
359*b0d29bc4SBrooks Davisbogus_test_program_body() {
360*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
361*b0d29bc4SBrooks Davissyntax(2)
362*b0d29bc4SBrooks Davistest_suite("integration")
363*b0d29bc4SBrooks Davisatf_test_program{name="crash_on_list"}
364*b0d29bc4SBrooks Davisatf_test_program{name="non_executable"}
365*b0d29bc4SBrooks DavisEOF
366*b0d29bc4SBrooks Davis    utils_cp_helper bad_test_program crash_on_list
367*b0d29bc4SBrooks Davis    echo 'I am not executable' >non_executable
368*b0d29bc4SBrooks Davis
369*b0d29bc4SBrooks Davis    cat >experr <<EOF
370*b0d29bc4SBrooks Daviskyua: E: Unknown test case 'crash_on_list:a'.
371*b0d29bc4SBrooks DavisEOF
372*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua debug crash_on_list:a
373*b0d29bc4SBrooks Davis
374*b0d29bc4SBrooks Davis    cat >experr <<EOF
375*b0d29bc4SBrooks Daviskyua: E: Unknown test case 'non_executable:a'.
376*b0d29bc4SBrooks DavisEOF
377*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua debug non_executable:a
378*b0d29bc4SBrooks Davis
379*b0d29bc4SBrooks Davis    # CHECK_STYLE_DISABLE
380*b0d29bc4SBrooks Davis    cat >expout <<EOF
381*b0d29bc4SBrooks Daviscrash_on_list:__test_cases_list__  ->  broken: Invalid header for test case list; expecting Content-Type for application/X-atf-tp version 1, got ''
382*b0d29bc4SBrooks DavisEOF
383*b0d29bc4SBrooks Davis    # CHECK_STYLE_ENABLE
384*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua debug \
385*b0d29bc4SBrooks Davis        crash_on_list:__test_cases_list__
386*b0d29bc4SBrooks Davis
387*b0d29bc4SBrooks Davis    # CHECK_STYLE_DISABLE
388*b0d29bc4SBrooks Davis    cat >expout <<EOF
389*b0d29bc4SBrooks Davisnon_executable:__test_cases_list__  ->  broken: Permission denied to run test program
390*b0d29bc4SBrooks DavisEOF
391*b0d29bc4SBrooks Davis    # CHECK_STYLE_ENABLE
392*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua debug \
393*b0d29bc4SBrooks Davis        non_executable:__test_cases_list__
394*b0d29bc4SBrooks Davis}
395*b0d29bc4SBrooks Davis
396*b0d29bc4SBrooks Davis
397*b0d29bc4SBrooks Davisatf_init_test_cases() {
398*b0d29bc4SBrooks Davis    atf_add_test_case no_args
399*b0d29bc4SBrooks Davis    atf_add_test_case many_args
400*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__ok_pass
401*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__ok_fail
402*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__no_match
403*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__no_test_case
404*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__bad_filter
405*b0d29bc4SBrooks Davis
406*b0d29bc4SBrooks Davis    atf_add_test_case body_and_cleanup
407*b0d29bc4SBrooks Davis
408*b0d29bc4SBrooks Davis    atf_add_test_case stdout_stderr_flags
409*b0d29bc4SBrooks Davis
410*b0d29bc4SBrooks Davis    atf_add_test_case args_are_relative
411*b0d29bc4SBrooks Davis
412*b0d29bc4SBrooks Davis    atf_add_test_case only_load_used_test_programs
413*b0d29bc4SBrooks Davis
414*b0d29bc4SBrooks Davis    atf_add_test_case config_behavior
415*b0d29bc4SBrooks Davis
416*b0d29bc4SBrooks Davis    atf_add_test_case build_root_flag
417*b0d29bc4SBrooks Davis    atf_add_test_case kyuafile_flag__ok
418*b0d29bc4SBrooks Davis    atf_add_test_case missing_kyuafile
419*b0d29bc4SBrooks Davis    atf_add_test_case bogus_kyuafile
420*b0d29bc4SBrooks Davis    atf_add_test_case bogus_test_program
421*b0d29bc4SBrooks Davis}
422