xref: /freebsd/contrib/kyua/integration/cmd_test_test.sh (revision b0d29bc47dba79f6f38e67eabadfb4b32ffd9390)
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 one_test_program__all_pass
31*b0d29bc4SBrooks Davisone_test_program__all_pass_body() {
32*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
33*b0d29bc4SBrooks Davis
34*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
35*b0d29bc4SBrooks Davissyntax(2)
36*b0d29bc4SBrooks Davistest_suite("integration")
37*b0d29bc4SBrooks Davisatf_test_program{name="simple_all_pass"}
38*b0d29bc4SBrooks DavisEOF
39*b0d29bc4SBrooks Davis
40*b0d29bc4SBrooks Davis    cat >expout <<EOF
41*b0d29bc4SBrooks Davissimple_all_pass:pass  ->  passed  [S.UUUs]
42*b0d29bc4SBrooks Davissimple_all_pass:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
43*b0d29bc4SBrooks Davis
44*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
45*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
46*b0d29bc4SBrooks Davis
47*b0d29bc4SBrooks Davis2/2 passed (0 failed)
48*b0d29bc4SBrooks DavisEOF
49*b0d29bc4SBrooks Davis
50*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass .
51*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test
52*b0d29bc4SBrooks Davis}
53*b0d29bc4SBrooks Davis
54*b0d29bc4SBrooks Davis
55*b0d29bc4SBrooks Davisutils_test_case one_test_program__some_fail
56*b0d29bc4SBrooks Davisone_test_program__some_fail_body() {
57*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
58*b0d29bc4SBrooks Davis
59*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
60*b0d29bc4SBrooks Davissyntax(2)
61*b0d29bc4SBrooks Davistest_suite("integration")
62*b0d29bc4SBrooks Davisatf_test_program{name="simple_some_fail"}
63*b0d29bc4SBrooks DavisEOF
64*b0d29bc4SBrooks Davis
65*b0d29bc4SBrooks Davis    cat >expout <<EOF
66*b0d29bc4SBrooks Davissimple_some_fail:fail  ->  failed: This fails on purpose  [S.UUUs]
67*b0d29bc4SBrooks Davissimple_some_fail:pass  ->  passed  [S.UUUs]
68*b0d29bc4SBrooks Davis
69*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
70*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
71*b0d29bc4SBrooks Davis
72*b0d29bc4SBrooks Davis1/2 passed (1 failed)
73*b0d29bc4SBrooks DavisEOF
74*b0d29bc4SBrooks Davis
75*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail .
76*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test
77*b0d29bc4SBrooks Davis}
78*b0d29bc4SBrooks Davis
79*b0d29bc4SBrooks Davis
80*b0d29bc4SBrooks Davisutils_test_case many_test_programs__all_pass
81*b0d29bc4SBrooks Davismany_test_programs__all_pass_body() {
82*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
83*b0d29bc4SBrooks Davis
84*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
85*b0d29bc4SBrooks Davissyntax(2)
86*b0d29bc4SBrooks Davistest_suite("integration")
87*b0d29bc4SBrooks Davisatf_test_program{name="first"}
88*b0d29bc4SBrooks Davisatf_test_program{name="second"}
89*b0d29bc4SBrooks Davisatf_test_program{name="third"}
90*b0d29bc4SBrooks Davisplain_test_program{name="fourth", required_files="/non-existent/foo"}
91*b0d29bc4SBrooks DavisEOF
92*b0d29bc4SBrooks Davis
93*b0d29bc4SBrooks Davis    cat >expout <<EOF
94*b0d29bc4SBrooks Davisfirst:pass  ->  passed  [S.UUUs]
95*b0d29bc4SBrooks Davisfirst:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
96*b0d29bc4SBrooks Davisfourth:main  ->  skipped: Required file '/non-existent/foo' not found  [S.UUUs]
97*b0d29bc4SBrooks Davissecond:pass  ->  passed  [S.UUUs]
98*b0d29bc4SBrooks Davissecond:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
99*b0d29bc4SBrooks Davisthird:pass  ->  passed  [S.UUUs]
100*b0d29bc4SBrooks Davisthird:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
101*b0d29bc4SBrooks Davis
102*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
103*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
104*b0d29bc4SBrooks Davis
105*b0d29bc4SBrooks Davis7/7 passed (0 failed)
106*b0d29bc4SBrooks DavisEOF
107*b0d29bc4SBrooks Davis
108*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
109*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
110*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass third
111*b0d29bc4SBrooks Davis    echo "not executed" >fourth; chmod +x fourth
112*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test
113*b0d29bc4SBrooks Davis}
114*b0d29bc4SBrooks Davis
115*b0d29bc4SBrooks Davis
116*b0d29bc4SBrooks Davisutils_test_case many_test_programs__some_fail
117*b0d29bc4SBrooks Davismany_test_programs__some_fail_body() {
118*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
119*b0d29bc4SBrooks Davis
120*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
121*b0d29bc4SBrooks Davissyntax(2)
122*b0d29bc4SBrooks Davistest_suite("integration")
123*b0d29bc4SBrooks Davisatf_test_program{name="first"}
124*b0d29bc4SBrooks Davisatf_test_program{name="second"}
125*b0d29bc4SBrooks Davisatf_test_program{name="third"}
126*b0d29bc4SBrooks Davisplain_test_program{name="fourth"}
127*b0d29bc4SBrooks DavisEOF
128*b0d29bc4SBrooks Davis
129*b0d29bc4SBrooks Davis    cat >expout <<EOF
130*b0d29bc4SBrooks Davisfirst:fail  ->  failed: This fails on purpose  [S.UUUs]
131*b0d29bc4SBrooks Davisfirst:pass  ->  passed  [S.UUUs]
132*b0d29bc4SBrooks Davisfourth:main  ->  failed: Returned non-success exit status 76  [S.UUUs]
133*b0d29bc4SBrooks Davissecond:fail  ->  failed: This fails on purpose  [S.UUUs]
134*b0d29bc4SBrooks Davissecond:pass  ->  passed  [S.UUUs]
135*b0d29bc4SBrooks Davisthird:pass  ->  passed  [S.UUUs]
136*b0d29bc4SBrooks Davisthird:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
137*b0d29bc4SBrooks Davis
138*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
139*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
140*b0d29bc4SBrooks Davis
141*b0d29bc4SBrooks Davis4/7 passed (3 failed)
142*b0d29bc4SBrooks DavisEOF
143*b0d29bc4SBrooks Davis
144*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail first
145*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail second
146*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass third
147*b0d29bc4SBrooks Davis    echo '#! /bin/sh' >fourth
148*b0d29bc4SBrooks Davis    echo 'exit 76' >>fourth
149*b0d29bc4SBrooks Davis    chmod +x fourth
150*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test
151*b0d29bc4SBrooks Davis}
152*b0d29bc4SBrooks Davis
153*b0d29bc4SBrooks Davis
154*b0d29bc4SBrooks Davisutils_test_case expect__all_pass
155*b0d29bc4SBrooks Davisexpect__all_pass_body() {
156*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
157*b0d29bc4SBrooks Davis
158*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
159*b0d29bc4SBrooks Davissyntax(2)
160*b0d29bc4SBrooks Davistest_suite("integration")
161*b0d29bc4SBrooks Davisatf_test_program{name="expect_all_pass"}
162*b0d29bc4SBrooks DavisEOF
163*b0d29bc4SBrooks Davis
164*b0d29bc4SBrooks Davis# CHECK_STYLE_DISABLE
165*b0d29bc4SBrooks Davis    cat >expout <<EOF
166*b0d29bc4SBrooks Davisexpect_all_pass:die  ->  expected_failure: This is the reason for death  [S.UUUs]
167*b0d29bc4SBrooks Davisexpect_all_pass:exit  ->  expected_failure: Exiting with correct code  [S.UUUs]
168*b0d29bc4SBrooks Davisexpect_all_pass:failure  ->  expected_failure: Oh no: Forced failure  [S.UUUs]
169*b0d29bc4SBrooks Davisexpect_all_pass:signal  ->  expected_failure: Exiting with correct signal  [S.UUUs]
170*b0d29bc4SBrooks Davisexpect_all_pass:timeout  ->  expected_failure: This times out  [S.UUUs]
171*b0d29bc4SBrooks Davis
172*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
173*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
174*b0d29bc4SBrooks Davis
175*b0d29bc4SBrooks Davis5/5 passed (0 failed)
176*b0d29bc4SBrooks DavisEOF
177*b0d29bc4SBrooks Davis# CHECK_STYLE_ENABLE
178*b0d29bc4SBrooks Davis
179*b0d29bc4SBrooks Davis    utils_cp_helper expect_all_pass .
180*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test
181*b0d29bc4SBrooks Davis}
182*b0d29bc4SBrooks Davis
183*b0d29bc4SBrooks Davis
184*b0d29bc4SBrooks Davisutils_test_case expect__some_fail
185*b0d29bc4SBrooks Davisexpect__some_fail_body() {
186*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
187*b0d29bc4SBrooks Davis
188*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
189*b0d29bc4SBrooks Davissyntax(2)
190*b0d29bc4SBrooks Davistest_suite("integration")
191*b0d29bc4SBrooks Davisatf_test_program{name="expect_some_fail"}
192*b0d29bc4SBrooks DavisEOF
193*b0d29bc4SBrooks Davis
194*b0d29bc4SBrooks Davis# CHECK_STYLE_DISABLE
195*b0d29bc4SBrooks Davis    cat >expout <<EOF
196*b0d29bc4SBrooks Davisexpect_some_fail:die  ->  failed: Test case was expected to terminate abruptly but it continued execution  [S.UUUs]
197*b0d29bc4SBrooks Davisexpect_some_fail:exit  ->  failed: Test case expected to exit with code 12 but got code 34  [S.UUUs]
198*b0d29bc4SBrooks Davisexpect_some_fail:failure  ->  failed: Test case was expecting a failure but none were raised  [S.UUUs]
199*b0d29bc4SBrooks Davisexpect_some_fail:pass  ->  passed  [S.UUUs]
200*b0d29bc4SBrooks Davisexpect_some_fail:signal  ->  failed: Test case expected to receive signal 15 but got 9  [S.UUUs]
201*b0d29bc4SBrooks Davisexpect_some_fail:timeout  ->  failed: Test case was expected to hang but it continued execution  [S.UUUs]
202*b0d29bc4SBrooks Davis
203*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
204*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
205*b0d29bc4SBrooks Davis
206*b0d29bc4SBrooks Davis1/6 passed (5 failed)
207*b0d29bc4SBrooks DavisEOF
208*b0d29bc4SBrooks Davis# CHECK_STYLE_ENABLE
209*b0d29bc4SBrooks Davis
210*b0d29bc4SBrooks Davis    utils_cp_helper expect_some_fail .
211*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test
212*b0d29bc4SBrooks Davis}
213*b0d29bc4SBrooks Davis
214*b0d29bc4SBrooks Davis
215*b0d29bc4SBrooks Davisutils_test_case premature_exit
216*b0d29bc4SBrooks Davispremature_exit_body() {
217*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
218*b0d29bc4SBrooks Davis
219*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
220*b0d29bc4SBrooks Davissyntax(2)
221*b0d29bc4SBrooks Davistest_suite("integration")
222*b0d29bc4SBrooks Davisatf_test_program{name="bogus_test_cases"}
223*b0d29bc4SBrooks DavisEOF
224*b0d29bc4SBrooks Davis
225*b0d29bc4SBrooks Davis# CHECK_STYLE_DISABLE
226*b0d29bc4SBrooks Davis    cat >expout <<EOF
227*b0d29bc4SBrooks Davisbogus_test_cases:die  ->  broken: Premature exit; test case received signal 9  [S.UUUs]
228*b0d29bc4SBrooks Davisbogus_test_cases:exit  ->  broken: Premature exit; test case exited with code 0  [S.UUUs]
229*b0d29bc4SBrooks Davisbogus_test_cases:pass  ->  passed  [S.UUUs]
230*b0d29bc4SBrooks Davis
231*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
232*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
233*b0d29bc4SBrooks Davis
234*b0d29bc4SBrooks Davis1/3 passed (2 failed)
235*b0d29bc4SBrooks DavisEOF
236*b0d29bc4SBrooks Davis# CHECK_STYLE_ENABLE
237*b0d29bc4SBrooks Davis
238*b0d29bc4SBrooks Davis    utils_cp_helper bogus_test_cases .
239*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test
240*b0d29bc4SBrooks Davis}
241*b0d29bc4SBrooks Davis
242*b0d29bc4SBrooks Davis
243*b0d29bc4SBrooks Davisutils_test_case no_args
244*b0d29bc4SBrooks Davisno_args_body() {
245*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
246*b0d29bc4SBrooks Davis
247*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
248*b0d29bc4SBrooks Davissyntax(2)
249*b0d29bc4SBrooks Davistest_suite("integration")
250*b0d29bc4SBrooks Davisatf_test_program{name="simple_all_pass"}
251*b0d29bc4SBrooks Davisinclude("subdir/Kyuafile")
252*b0d29bc4SBrooks DavisEOF
253*b0d29bc4SBrooks Davis    utils_cp_helper metadata .
254*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass .
255*b0d29bc4SBrooks Davis
256*b0d29bc4SBrooks Davis    mkdir subdir
257*b0d29bc4SBrooks Davis    cat >subdir/Kyuafile <<EOF
258*b0d29bc4SBrooks Davissyntax(2)
259*b0d29bc4SBrooks Davistest_suite("integration2")
260*b0d29bc4SBrooks Davisatf_test_program{name="simple_some_fail"}
261*b0d29bc4SBrooks DavisEOF
262*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail subdir
263*b0d29bc4SBrooks Davis
264*b0d29bc4SBrooks Davis    cat >expout <<EOF
265*b0d29bc4SBrooks Davissimple_all_pass:pass  ->  passed  [S.UUUs]
266*b0d29bc4SBrooks Davissimple_all_pass:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
267*b0d29bc4SBrooks Davissubdir/simple_some_fail:fail  ->  failed: This fails on purpose  [S.UUUs]
268*b0d29bc4SBrooks Davissubdir/simple_some_fail:pass  ->  passed  [S.UUUs]
269*b0d29bc4SBrooks Davis
270*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
271*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
272*b0d29bc4SBrooks Davis
273*b0d29bc4SBrooks Davis3/4 passed (1 failed)
274*b0d29bc4SBrooks DavisEOF
275*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test
276*b0d29bc4SBrooks Davis}
277*b0d29bc4SBrooks Davis
278*b0d29bc4SBrooks Davis
279*b0d29bc4SBrooks Davisutils_test_case one_arg__subdir
280*b0d29bc4SBrooks Davisone_arg__subdir_body() {
281*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
282*b0d29bc4SBrooks Davis
283*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
284*b0d29bc4SBrooks Davissyntax(2)
285*b0d29bc4SBrooks Davistest_suite("top-level")
286*b0d29bc4SBrooks Davisinclude("subdir/Kyuafile")
287*b0d29bc4SBrooks DavisEOF
288*b0d29bc4SBrooks Davis
289*b0d29bc4SBrooks Davis    mkdir subdir
290*b0d29bc4SBrooks Davis    cat >subdir/Kyuafile <<EOF
291*b0d29bc4SBrooks Davissyntax(2)
292*b0d29bc4SBrooks Davistest_suite("in-subdir")
293*b0d29bc4SBrooks Davisatf_test_program{name="simple_all_pass"}
294*b0d29bc4SBrooks DavisEOF
295*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass subdir
296*b0d29bc4SBrooks Davis
297*b0d29bc4SBrooks Davis# CHECK_STYLE_DISABLE
298*b0d29bc4SBrooks Davis    cat >expout <<EOF
299*b0d29bc4SBrooks Davissubdir/simple_all_pass:pass  ->  passed  [S.UUUs]
300*b0d29bc4SBrooks Davissubdir/simple_all_pass:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
301*b0d29bc4SBrooks Davis
302*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
303*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
304*b0d29bc4SBrooks Davis
305*b0d29bc4SBrooks Davis2/2 passed (0 failed)
306*b0d29bc4SBrooks DavisEOF
307*b0d29bc4SBrooks Davis# CHECK_STYLE_ENABLE
308*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test subdir
309*b0d29bc4SBrooks Davis}
310*b0d29bc4SBrooks Davis
311*b0d29bc4SBrooks Davis
312*b0d29bc4SBrooks Davisutils_test_case one_arg__test_case
313*b0d29bc4SBrooks Davisone_arg__test_case_body() {
314*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
315*b0d29bc4SBrooks Davis
316*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
317*b0d29bc4SBrooks Davissyntax(2)
318*b0d29bc4SBrooks Davistest_suite("top-level")
319*b0d29bc4SBrooks Davisatf_test_program{name="first"}
320*b0d29bc4SBrooks Davisatf_test_program{name="second"}
321*b0d29bc4SBrooks DavisEOF
322*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
323*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
324*b0d29bc4SBrooks Davis
325*b0d29bc4SBrooks Davis    cat >expout <<EOF
326*b0d29bc4SBrooks Davisfirst:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
327*b0d29bc4SBrooks Davis
328*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
329*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
330*b0d29bc4SBrooks Davis
331*b0d29bc4SBrooks Davis1/1 passed (0 failed)
332*b0d29bc4SBrooks DavisEOF
333*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test first:skip
334*b0d29bc4SBrooks Davis}
335*b0d29bc4SBrooks Davis
336*b0d29bc4SBrooks Davis
337*b0d29bc4SBrooks Davisutils_test_case one_arg__test_program
338*b0d29bc4SBrooks Davisone_arg__test_program_body() {
339*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
340*b0d29bc4SBrooks Davis
341*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
342*b0d29bc4SBrooks Davissyntax(2)
343*b0d29bc4SBrooks Davistest_suite("top-level")
344*b0d29bc4SBrooks Davisatf_test_program{name="first"}
345*b0d29bc4SBrooks Davisatf_test_program{name="second"}
346*b0d29bc4SBrooks DavisEOF
347*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
348*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail second
349*b0d29bc4SBrooks Davis
350*b0d29bc4SBrooks Davis    cat >expout <<EOF
351*b0d29bc4SBrooks Davissecond:fail  ->  failed: This fails on purpose  [S.UUUs]
352*b0d29bc4SBrooks Davissecond:pass  ->  passed  [S.UUUs]
353*b0d29bc4SBrooks Davis
354*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
355*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
356*b0d29bc4SBrooks Davis
357*b0d29bc4SBrooks Davis1/2 passed (1 failed)
358*b0d29bc4SBrooks DavisEOF
359*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test second
360*b0d29bc4SBrooks Davis}
361*b0d29bc4SBrooks Davis
362*b0d29bc4SBrooks Davis
363*b0d29bc4SBrooks Davisutils_test_case one_arg__invalid
364*b0d29bc4SBrooks Davisone_arg__invalid_body() {
365*b0d29bc4SBrooks Daviscat >experr <<EOF
366*b0d29bc4SBrooks Daviskyua: E: Test case component in 'foo:' is empty.
367*b0d29bc4SBrooks DavisEOF
368*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua test foo:
369*b0d29bc4SBrooks Davis
370*b0d29bc4SBrooks Daviscat >experr <<EOF
371*b0d29bc4SBrooks Daviskyua: E: Program name '/a/b' must be relative to the test suite, not absolute.
372*b0d29bc4SBrooks DavisEOF
373*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua test /a/b
374*b0d29bc4SBrooks Davis}
375*b0d29bc4SBrooks Davis
376*b0d29bc4SBrooks Davis
377*b0d29bc4SBrooks Davisutils_test_case many_args__ok
378*b0d29bc4SBrooks Davismany_args__ok_body() {
379*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
380*b0d29bc4SBrooks Davis
381*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
382*b0d29bc4SBrooks Davissyntax(2)
383*b0d29bc4SBrooks Davistest_suite("top-level")
384*b0d29bc4SBrooks Davisinclude("subdir/Kyuafile")
385*b0d29bc4SBrooks Davisatf_test_program{name="first"}
386*b0d29bc4SBrooks DavisEOF
387*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
388*b0d29bc4SBrooks Davis
389*b0d29bc4SBrooks Davis    mkdir subdir
390*b0d29bc4SBrooks Davis    cat >subdir/Kyuafile <<EOF
391*b0d29bc4SBrooks Davissyntax(2)
392*b0d29bc4SBrooks Davistest_suite("in-subdir")
393*b0d29bc4SBrooks Davisatf_test_program{name="second"}
394*b0d29bc4SBrooks DavisEOF
395*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail subdir/second
396*b0d29bc4SBrooks Davis
397*b0d29bc4SBrooks Davis    cat >expout <<EOF
398*b0d29bc4SBrooks Davisfirst:pass  ->  passed  [S.UUUs]
399*b0d29bc4SBrooks Davissubdir/second:fail  ->  failed: This fails on purpose  [S.UUUs]
400*b0d29bc4SBrooks Davissubdir/second:pass  ->  passed  [S.UUUs]
401*b0d29bc4SBrooks Davis
402*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
403*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
404*b0d29bc4SBrooks Davis
405*b0d29bc4SBrooks Davis2/3 passed (1 failed)
406*b0d29bc4SBrooks DavisEOF
407*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test subdir first:pass
408*b0d29bc4SBrooks Davis}
409*b0d29bc4SBrooks Davis
410*b0d29bc4SBrooks Davis
411*b0d29bc4SBrooks Davisutils_test_case many_args__invalid
412*b0d29bc4SBrooks Davismany_args__invalid_body() {
413*b0d29bc4SBrooks Daviscat >experr <<EOF
414*b0d29bc4SBrooks Daviskyua: E: Program name component in ':badbad' is empty.
415*b0d29bc4SBrooks DavisEOF
416*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua test this-is-ok :badbad
417*b0d29bc4SBrooks Davis
418*b0d29bc4SBrooks Daviscat >experr <<EOF
419*b0d29bc4SBrooks Daviskyua: E: Program name '/foo' must be relative to the test suite, not absolute.
420*b0d29bc4SBrooks DavisEOF
421*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua test this-is-ok /foo
422*b0d29bc4SBrooks Davis}
423*b0d29bc4SBrooks Davis
424*b0d29bc4SBrooks Davis
425*b0d29bc4SBrooks Davisutils_test_case many_args__no_match__all
426*b0d29bc4SBrooks Davismany_args__no_match__all_body() {
427*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
428*b0d29bc4SBrooks Davis
429*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
430*b0d29bc4SBrooks Davissyntax(2)
431*b0d29bc4SBrooks Davistest_suite("top-level")
432*b0d29bc4SBrooks Davisatf_test_program{name="first"}
433*b0d29bc4SBrooks Davisatf_test_program{name="second"}
434*b0d29bc4SBrooks DavisEOF
435*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
436*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
437*b0d29bc4SBrooks Davis
438*b0d29bc4SBrooks Davis    cat >expout <<EOF
439*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
440*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
441*b0d29bc4SBrooks DavisEOF
442*b0d29bc4SBrooks Davis    cat >experr <<EOF
443*b0d29bc4SBrooks Daviskyua: W: No test cases matched by the filter 'first1'.
444*b0d29bc4SBrooks DavisEOF
445*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e file:experr kyua test first1
446*b0d29bc4SBrooks Davis}
447*b0d29bc4SBrooks Davis
448*b0d29bc4SBrooks Davis
449*b0d29bc4SBrooks Davisutils_test_case many_args__no_match__some
450*b0d29bc4SBrooks Davismany_args__no_match__some_body() {
451*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
452*b0d29bc4SBrooks Davis
453*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
454*b0d29bc4SBrooks Davissyntax(2)
455*b0d29bc4SBrooks Davistest_suite("top-level")
456*b0d29bc4SBrooks Davisatf_test_program{name="first"}
457*b0d29bc4SBrooks Davisatf_test_program{name="second"}
458*b0d29bc4SBrooks Davisatf_test_program{name="third"}
459*b0d29bc4SBrooks DavisEOF
460*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
461*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
462*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail third
463*b0d29bc4SBrooks Davis
464*b0d29bc4SBrooks Davis    cat >expout <<EOF
465*b0d29bc4SBrooks Davisfirst:pass  ->  passed  [S.UUUs]
466*b0d29bc4SBrooks Davisfirst:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
467*b0d29bc4SBrooks Davisthird:fail  ->  failed: This fails on purpose  [S.UUUs]
468*b0d29bc4SBrooks Davisthird:pass  ->  passed  [S.UUUs]
469*b0d29bc4SBrooks Davis
470*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
471*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
472*b0d29bc4SBrooks Davis
473*b0d29bc4SBrooks Davis3/4 passed (1 failed)
474*b0d29bc4SBrooks DavisEOF
475*b0d29bc4SBrooks Davis
476*b0d29bc4SBrooks Davis    cat >experr <<EOF
477*b0d29bc4SBrooks Daviskyua: W: No test cases matched by the filter 'fifth'.
478*b0d29bc4SBrooks Daviskyua: W: No test cases matched by the filter 'fourth'.
479*b0d29bc4SBrooks DavisEOF
480*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e file:experr kyua test first fourth \
481*b0d29bc4SBrooks Davis        third fifth
482*b0d29bc4SBrooks Davis}
483*b0d29bc4SBrooks Davis
484*b0d29bc4SBrooks Davis
485*b0d29bc4SBrooks Davisutils_test_case args_are_relative
486*b0d29bc4SBrooks Davisargs_are_relative_body() {
487*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
488*b0d29bc4SBrooks Davis
489*b0d29bc4SBrooks Davis    mkdir root
490*b0d29bc4SBrooks Davis    cat >root/Kyuafile <<EOF
491*b0d29bc4SBrooks Davissyntax(2)
492*b0d29bc4SBrooks Davistest_suite("integration-1")
493*b0d29bc4SBrooks Davisatf_test_program{name="first"}
494*b0d29bc4SBrooks Davisatf_test_program{name="second"}
495*b0d29bc4SBrooks Davisinclude("subdir/Kyuafile")
496*b0d29bc4SBrooks DavisEOF
497*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass root/first
498*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail root/second
499*b0d29bc4SBrooks Davis
500*b0d29bc4SBrooks Davis    mkdir root/subdir
501*b0d29bc4SBrooks Davis    cat >root/subdir/Kyuafile <<EOF
502*b0d29bc4SBrooks Davissyntax(2)
503*b0d29bc4SBrooks Davistest_suite("integration-2")
504*b0d29bc4SBrooks Davisatf_test_program{name="third"}
505*b0d29bc4SBrooks Davisatf_test_program{name="fourth"}
506*b0d29bc4SBrooks DavisEOF
507*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass root/subdir/third
508*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail root/subdir/fourth
509*b0d29bc4SBrooks Davis
510*b0d29bc4SBrooks Davis    cat >expout <<EOF
511*b0d29bc4SBrooks Davisfirst:pass  ->  passed  [S.UUUs]
512*b0d29bc4SBrooks Davisfirst:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
513*b0d29bc4SBrooks Davissubdir/fourth:fail  ->  failed: This fails on purpose  [S.UUUs]
514*b0d29bc4SBrooks Davis
515*b0d29bc4SBrooks DavisResults file id is $(utils_results_id root)
516*b0d29bc4SBrooks DavisResults saved to $(utils_results_file root)
517*b0d29bc4SBrooks Davis
518*b0d29bc4SBrooks Davis2/3 passed (1 failed)
519*b0d29bc4SBrooks DavisEOF
520*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test \
521*b0d29bc4SBrooks Davis        -k "$(pwd)/root/Kyuafile" first subdir/fourth:fail
522*b0d29bc4SBrooks Davis}
523*b0d29bc4SBrooks Davis
524*b0d29bc4SBrooks Davis
525*b0d29bc4SBrooks Davisutils_test_case only_load_used_test_programs
526*b0d29bc4SBrooks Davisonly_load_used_test_programs_body() {
527*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
528*b0d29bc4SBrooks Davis
529*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
530*b0d29bc4SBrooks Davissyntax(2)
531*b0d29bc4SBrooks Davistest_suite("integration")
532*b0d29bc4SBrooks Davisatf_test_program{name="first"}
533*b0d29bc4SBrooks Davisatf_test_program{name="second"}
534*b0d29bc4SBrooks DavisEOF
535*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
536*b0d29bc4SBrooks Davis    utils_cp_helper bad_test_program second
537*b0d29bc4SBrooks Davis
538*b0d29bc4SBrooks Davis    cat >expout <<EOF
539*b0d29bc4SBrooks Davisfirst:pass  ->  passed  [S.UUUs]
540*b0d29bc4SBrooks Davisfirst:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
541*b0d29bc4SBrooks Davis
542*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
543*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
544*b0d29bc4SBrooks Davis
545*b0d29bc4SBrooks Davis2/2 passed (0 failed)
546*b0d29bc4SBrooks DavisEOF
547*b0d29bc4SBrooks Davis    CREATE_COOKIE="$(pwd)/cookie"; export CREATE_COOKIE
548*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test first
549*b0d29bc4SBrooks Davis    if [ -f "${CREATE_COOKIE}" ]; then
550*b0d29bc4SBrooks Davis        atf_fail "An unmatched test case has been executed, which harms" \
551*b0d29bc4SBrooks Davis            "performance"
552*b0d29bc4SBrooks Davis    fi
553*b0d29bc4SBrooks Davis}
554*b0d29bc4SBrooks Davis
555*b0d29bc4SBrooks Davis
556*b0d29bc4SBrooks Davisutils_test_case config_behavior
557*b0d29bc4SBrooks Davisconfig_behavior_body() {
558*b0d29bc4SBrooks Davis    cat >"my-config" <<EOF
559*b0d29bc4SBrooks Davissyntax(2)
560*b0d29bc4SBrooks Davistest_suites.suite1["the-variable"] = "value1"
561*b0d29bc4SBrooks Davistest_suites.suite2["the-variable"] = "override me"
562*b0d29bc4SBrooks DavisEOF
563*b0d29bc4SBrooks Davis
564*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
565*b0d29bc4SBrooks Davissyntax(2)
566*b0d29bc4SBrooks Davisatf_test_program{name="config1", test_suite="suite1"}
567*b0d29bc4SBrooks Davisatf_test_program{name="config2", test_suite="suite2"}
568*b0d29bc4SBrooks Davisatf_test_program{name="config3", test_suite="suite3"}
569*b0d29bc4SBrooks DavisEOF
570*b0d29bc4SBrooks Davis    utils_cp_helper config config1
571*b0d29bc4SBrooks Davis    utils_cp_helper config config2
572*b0d29bc4SBrooks Davis    utils_cp_helper config config3
573*b0d29bc4SBrooks Davis
574*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o save:stdout -e empty \
575*b0d29bc4SBrooks Davis        kyua -c my-config -v test_suites.suite2.the-variable=value2 test
576*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o ignore -e empty \
577*b0d29bc4SBrooks Davis        grep 'config1:get_variable.*failed' stdout
578*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o ignore -e empty \
579*b0d29bc4SBrooks Davis        grep 'config2:get_variable.*passed' stdout
580*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o ignore -e empty \
581*b0d29bc4SBrooks Davis        grep 'config3:get_variable.*skipped' stdout
582*b0d29bc4SBrooks Davis
583*b0d29bc4SBrooks Davis    CONFIG_VAR_FILE="$(pwd)/cookie"; export CONFIG_VAR_FILE
584*b0d29bc4SBrooks Davis    if [ -f "${CONFIG_VAR_FILE}" ]; then
585*b0d29bc4SBrooks Davis        atf_fail "Cookie file already created; test case list may have gotten" \
586*b0d29bc4SBrooks Davis            "a bad configuration"
587*b0d29bc4SBrooks Davis    fi
588*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o ignore -e empty kyua -c my-config test config1
589*b0d29bc4SBrooks Davis    [ -f "${CONFIG_VAR_FILE}" ] || \
590*b0d29bc4SBrooks Davis        atf_fail "Cookie file not created; test case list did not get" \
591*b0d29bc4SBrooks Davis            "configuration variables"
592*b0d29bc4SBrooks Davis    value="$(cat "${CONFIG_VAR_FILE}")"
593*b0d29bc4SBrooks Davis    [ "${value}" = "value1" ] || \
594*b0d29bc4SBrooks Davis        atf_fail "Invalid value (${value}) in cookie file; test case list did" \
595*b0d29bc4SBrooks Davis            "not get the correct configuration variables"
596*b0d29bc4SBrooks Davis}
597*b0d29bc4SBrooks Davis
598*b0d29bc4SBrooks Davis
599*b0d29bc4SBrooks Davisutils_test_case store_contents
600*b0d29bc4SBrooks Davisstore_contents_body() {
601*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
602*b0d29bc4SBrooks Davis
603*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
604*b0d29bc4SBrooks Davissyntax(2)
605*b0d29bc4SBrooks Davisatf_test_program{name="some-program", test_suite="suite1"}
606*b0d29bc4SBrooks DavisEOF
607*b0d29bc4SBrooks Davis    utils_cp_helper simple_some_fail some-program
608*b0d29bc4SBrooks Davis    cat >expout <<EOF
609*b0d29bc4SBrooks Davissome-program:fail  ->  failed: This fails on purpose  [S.UUUs]
610*b0d29bc4SBrooks Davissome-program:pass  ->  passed  [S.UUUs]
611*b0d29bc4SBrooks Davis
612*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
613*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
614*b0d29bc4SBrooks Davis
615*b0d29bc4SBrooks Davis1/2 passed (1 failed)
616*b0d29bc4SBrooks DavisEOF
617*b0d29bc4SBrooks Davis
618*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test
619*b0d29bc4SBrooks Davis
620*b0d29bc4SBrooks Daviscat >expout <<EOF
621*b0d29bc4SBrooks Davissome-program,fail,failed,This fails on purpose
622*b0d29bc4SBrooks Davissome-program,pass,passed,NULL
623*b0d29bc4SBrooks DavisEOF
624*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty \
625*b0d29bc4SBrooks Davis        kyua db-exec --no-headers \
626*b0d29bc4SBrooks Davis        "SELECT " \
627*b0d29bc4SBrooks Davis        "       test_programs.relative_path, test_cases.name, " \
628*b0d29bc4SBrooks Davis        "       test_results.result_type, test_results.result_reason " \
629*b0d29bc4SBrooks Davis        "FROM test_programs " \
630*b0d29bc4SBrooks Davis        "     JOIN test_cases " \
631*b0d29bc4SBrooks Davis        "     ON test_programs.test_program_id = test_cases.test_program_id " \
632*b0d29bc4SBrooks Davis        "     JOIN test_results " \
633*b0d29bc4SBrooks Davis        "     ON test_cases.test_case_id = test_results.test_case_id " \
634*b0d29bc4SBrooks Davis        "ORDER BY test_programs.relative_path, test_cases.name"
635*b0d29bc4SBrooks Davis}
636*b0d29bc4SBrooks Davis
637*b0d29bc4SBrooks Davis
638*b0d29bc4SBrooks Davisutils_test_case results_file__ok
639*b0d29bc4SBrooks Davisresults_file__ok_body() {
640*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
641*b0d29bc4SBrooks Davissyntax(2)
642*b0d29bc4SBrooks Davisatf_test_program{name="config1", test_suite="suite1"}
643*b0d29bc4SBrooks DavisEOF
644*b0d29bc4SBrooks Davis    utils_cp_helper config config1
645*b0d29bc4SBrooks Davis
646*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o ignore -e empty kyua test -r foo1.db
647*b0d29bc4SBrooks Davis   test -f foo1.db || atf_fail "-s did not work"
648*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o ignore -e empty kyua test --results-file=foo2.db
649*b0d29bc4SBrooks Davis    test -f foo2.db || atf_fail "--results-file did not work"
650*b0d29bc4SBrooks Davis    test ! -f .kyua/store.db || atf_fail "Default database created"
651*b0d29bc4SBrooks Davis}
652*b0d29bc4SBrooks Davis
653*b0d29bc4SBrooks Davis
654*b0d29bc4SBrooks Davisutils_test_case results_file__fail
655*b0d29bc4SBrooks Davisresults_file__fail_body() {
656*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
657*b0d29bc4SBrooks Davissyntax(2)
658*b0d29bc4SBrooks Davisatf_test_program{name="config1", test_suite="suite1"}
659*b0d29bc4SBrooks DavisEOF
660*b0d29bc4SBrooks Davis    utils_cp_helper config config1
661*b0d29bc4SBrooks Davis
662*b0d29bc4SBrooks Davis    atf_check -s exit:3 -o empty -e match:"Invalid.*--results-file" \
663*b0d29bc4SBrooks Davis        kyua test --results-file=
664*b0d29bc4SBrooks Davis}
665*b0d29bc4SBrooks Davis
666*b0d29bc4SBrooks Davis
667*b0d29bc4SBrooks Davisutils_test_case results_file__reuse
668*b0d29bc4SBrooks Davisresults_file__reuse_body() {
669*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
670*b0d29bc4SBrooks Davis
671*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
672*b0d29bc4SBrooks Davissyntax(2)
673*b0d29bc4SBrooks Davisatf_test_program{name="simple_all_pass", test_suite="integration"}
674*b0d29bc4SBrooks DavisEOF
675*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass .
676*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o ignore -e empty kyua test -r results.db
677*b0d29bc4SBrooks Davis
678*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e match:"results.db already exists" \
679*b0d29bc4SBrooks Davis        kyua test --results-file="results.db"
680*b0d29bc4SBrooks Davis}
681*b0d29bc4SBrooks Davis
682*b0d29bc4SBrooks Davis
683*b0d29bc4SBrooks Davisutils_test_case build_root_flag
684*b0d29bc4SBrooks Davisbuild_root_flag_body() {
685*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
686*b0d29bc4SBrooks Davis
687*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
688*b0d29bc4SBrooks Davissyntax(2)
689*b0d29bc4SBrooks Davistest_suite("integration")
690*b0d29bc4SBrooks Davisatf_test_program{name="first"}
691*b0d29bc4SBrooks Davisinclude("subdir/Kyuafile")
692*b0d29bc4SBrooks DavisEOF
693*b0d29bc4SBrooks Davis
694*b0d29bc4SBrooks Davis    mkdir subdir
695*b0d29bc4SBrooks Davis    cat >subdir/Kyuafile <<EOF
696*b0d29bc4SBrooks Davissyntax(2)
697*b0d29bc4SBrooks Davistest_suite("integration")
698*b0d29bc4SBrooks Davisatf_test_program{name="second"}
699*b0d29bc4SBrooks Davisatf_test_program{name="third"}
700*b0d29bc4SBrooks DavisEOF
701*b0d29bc4SBrooks Davis
702*b0d29bc4SBrooks Davis    cat >expout <<EOF
703*b0d29bc4SBrooks Davisfirst:pass  ->  passed  [S.UUUs]
704*b0d29bc4SBrooks Davisfirst:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
705*b0d29bc4SBrooks Davissubdir/second:pass  ->  passed  [S.UUUs]
706*b0d29bc4SBrooks Davissubdir/second:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
707*b0d29bc4SBrooks Davissubdir/third:pass  ->  passed  [S.UUUs]
708*b0d29bc4SBrooks Davissubdir/third:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
709*b0d29bc4SBrooks Davis
710*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
711*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
712*b0d29bc4SBrooks Davis
713*b0d29bc4SBrooks Davis6/6 passed (0 failed)
714*b0d29bc4SBrooks DavisEOF
715*b0d29bc4SBrooks Davis
716*b0d29bc4SBrooks Davis    mkdir build
717*b0d29bc4SBrooks Davis    mkdir build/subdir
718*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass build/first
719*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass build/subdir/second
720*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass build/subdir/third
721*b0d29bc4SBrooks Davis
722*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test --build-root=build
723*b0d29bc4SBrooks Davis}
724*b0d29bc4SBrooks Davis
725*b0d29bc4SBrooks Davis
726*b0d29bc4SBrooks Davisutils_test_case kyuafile_flag__no_args
727*b0d29bc4SBrooks Daviskyuafile_flag__no_args_body() {
728*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
729*b0d29bc4SBrooks Davis
730*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
731*b0d29bc4SBrooks DavisThis file is bogus but it is not loaded.
732*b0d29bc4SBrooks DavisEOF
733*b0d29bc4SBrooks Davis
734*b0d29bc4SBrooks Davis    cat >myfile <<EOF
735*b0d29bc4SBrooks Davissyntax(2)
736*b0d29bc4SBrooks Davistest_suite("integration")
737*b0d29bc4SBrooks Davisatf_test_program{name="sometest"}
738*b0d29bc4SBrooks DavisEOF
739*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass sometest
740*b0d29bc4SBrooks Davis
741*b0d29bc4SBrooks Davis    cat >expout <<EOF
742*b0d29bc4SBrooks Davissometest:pass  ->  passed  [S.UUUs]
743*b0d29bc4SBrooks Davissometest:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
744*b0d29bc4SBrooks Davis
745*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
746*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
747*b0d29bc4SBrooks Davis
748*b0d29bc4SBrooks Davis2/2 passed (0 failed)
749*b0d29bc4SBrooks DavisEOF
750*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test -k myfile
751*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test --kyuafile=myfile
752*b0d29bc4SBrooks Davis}
753*b0d29bc4SBrooks Davis
754*b0d29bc4SBrooks Davis
755*b0d29bc4SBrooks Davisutils_test_case kyuafile_flag__some_args
756*b0d29bc4SBrooks Daviskyuafile_flag__some_args_body() {
757*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
758*b0d29bc4SBrooks Davis
759*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
760*b0d29bc4SBrooks DavisThis file is bogus but it is not loaded.
761*b0d29bc4SBrooks DavisEOF
762*b0d29bc4SBrooks Davis
763*b0d29bc4SBrooks Davis    cat >myfile <<EOF
764*b0d29bc4SBrooks Davissyntax(2)
765*b0d29bc4SBrooks Davistest_suite("hello-world")
766*b0d29bc4SBrooks Davisatf_test_program{name="sometest"}
767*b0d29bc4SBrooks DavisEOF
768*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass sometest
769*b0d29bc4SBrooks Davis
770*b0d29bc4SBrooks Davis    cat >expout <<EOF
771*b0d29bc4SBrooks Davissometest:pass  ->  passed  [S.UUUs]
772*b0d29bc4SBrooks Davissometest:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
773*b0d29bc4SBrooks Davis
774*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
775*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
776*b0d29bc4SBrooks Davis
777*b0d29bc4SBrooks Davis2/2 passed (0 failed)
778*b0d29bc4SBrooks DavisEOF
779*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test -k myfile sometest
780*b0d29bc4SBrooks Davis    cat >expout <<EOF
781*b0d29bc4SBrooks Davissometest:pass  ->  passed  [S.UUUs]
782*b0d29bc4SBrooks Davissometest:skip  ->  skipped: The reason for skipping is this  [S.UUUs]
783*b0d29bc4SBrooks Davis
784*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
785*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
786*b0d29bc4SBrooks Davis
787*b0d29bc4SBrooks Davis2/2 passed (0 failed)
788*b0d29bc4SBrooks DavisEOF
789*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o file:expout -e empty kyua test --kyuafile=myfile \
790*b0d29bc4SBrooks Davis        sometest
791*b0d29bc4SBrooks Davis}
792*b0d29bc4SBrooks Davis
793*b0d29bc4SBrooks Davis
794*b0d29bc4SBrooks Davisutils_test_case interrupt
795*b0d29bc4SBrooks Davisinterrupt_body() {
796*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
797*b0d29bc4SBrooks Davissyntax(2)
798*b0d29bc4SBrooks Davistest_suite("integration")
799*b0d29bc4SBrooks Davisatf_test_program{name="interrupts"}
800*b0d29bc4SBrooks DavisEOF
801*b0d29bc4SBrooks Davis    utils_cp_helper interrupts .
802*b0d29bc4SBrooks Davis
803*b0d29bc4SBrooks Davis    kyua \
804*b0d29bc4SBrooks Davis        -v test_suites.integration.body-cookie="$(pwd)/body" \
805*b0d29bc4SBrooks Davis        -v test_suites.integration.cleanup-cookie="$(pwd)/cleanup" \
806*b0d29bc4SBrooks Davis        test >stdout 2>stderr &
807*b0d29bc4SBrooks Davis    pid=${!}
808*b0d29bc4SBrooks Davis    echo "Kyua subprocess is PID ${pid}"
809*b0d29bc4SBrooks Davis
810*b0d29bc4SBrooks Davis    while [ ! -f body ]; do
811*b0d29bc4SBrooks Davis        echo "Waiting for body to start"
812*b0d29bc4SBrooks Davis        sleep 1
813*b0d29bc4SBrooks Davis    done
814*b0d29bc4SBrooks Davis    echo "Body started"
815*b0d29bc4SBrooks Davis    sleep 1
816*b0d29bc4SBrooks Davis
817*b0d29bc4SBrooks Davis    echo "Sending INT signal to ${pid}"
818*b0d29bc4SBrooks Davis    kill -INT ${pid}
819*b0d29bc4SBrooks Davis    echo "Waiting for process ${pid} to exit"
820*b0d29bc4SBrooks Davis    wait ${pid}
821*b0d29bc4SBrooks Davis    ret=${?}
822*b0d29bc4SBrooks Davis    sed -e 's,^,kyua stdout:,' stdout
823*b0d29bc4SBrooks Davis    sed -e 's,^,kyua stderr:,' stderr
824*b0d29bc4SBrooks Davis    echo "Process ${pid} exited"
825*b0d29bc4SBrooks Davis    [ ${ret} -ne 0 ] || atf_fail 'No error code reported'
826*b0d29bc4SBrooks Davis
827*b0d29bc4SBrooks Davis    [ -f cleanup ] || atf_fail 'Cleanup part not executed after signal'
828*b0d29bc4SBrooks Davis    atf_expect_pass
829*b0d29bc4SBrooks Davis
830*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o ignore -e empty grep 'Signal caught' stderr
831*b0d29bc4SBrooks Davis    atf_check -s exit:0 -o ignore -e empty \
832*b0d29bc4SBrooks Davis        grep 'kyua: E: Interrupted by signal' stderr
833*b0d29bc4SBrooks Davis}
834*b0d29bc4SBrooks Davis
835*b0d29bc4SBrooks Davis
836*b0d29bc4SBrooks Davisutils_test_case exclusive_tests
837*b0d29bc4SBrooks Davisexclusive_tests_body() {
838*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
839*b0d29bc4SBrooks Davissyntax(2)
840*b0d29bc4SBrooks Davistest_suite("integration")
841*b0d29bc4SBrooks DavisEOF
842*b0d29bc4SBrooks Davis    for i in $(seq 100); do
843*b0d29bc4SBrooks Davis        echo 'plain_test_program{name="race", is_exclusive=true}' >>Kyuafile
844*b0d29bc4SBrooks Davis    done
845*b0d29bc4SBrooks Davis    utils_cp_helper race .
846*b0d29bc4SBrooks Davis
847*b0d29bc4SBrooks Davis    atf_check \
848*b0d29bc4SBrooks Davis        -s exit:0 \
849*b0d29bc4SBrooks Davis        -o match:"100/100 passed" \
850*b0d29bc4SBrooks Davis        kyua \
851*b0d29bc4SBrooks Davis        -v parallelism=20 \
852*b0d29bc4SBrooks Davis        -v test_suites.integration.shared_file="$(pwd)/shared_file" \
853*b0d29bc4SBrooks Davis        test
854*b0d29bc4SBrooks Davis}
855*b0d29bc4SBrooks Davis
856*b0d29bc4SBrooks Davis
857*b0d29bc4SBrooks Davisutils_test_case no_test_program_match
858*b0d29bc4SBrooks Davisno_test_program_match_body() {
859*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
860*b0d29bc4SBrooks Davis
861*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
862*b0d29bc4SBrooks Davissyntax(2)
863*b0d29bc4SBrooks Davistest_suite("integration")
864*b0d29bc4SBrooks Davisatf_test_program{name="first"}
865*b0d29bc4SBrooks DavisEOF
866*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
867*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass second
868*b0d29bc4SBrooks Davis
869*b0d29bc4SBrooks Davis    cat >expout <<EOF
870*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
871*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
872*b0d29bc4SBrooks DavisEOF
873*b0d29bc4SBrooks Davis    cat >experr <<EOF
874*b0d29bc4SBrooks Daviskyua: W: No test cases matched by the filter 'second'.
875*b0d29bc4SBrooks DavisEOF
876*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e file:experr kyua test second
877*b0d29bc4SBrooks Davis}
878*b0d29bc4SBrooks Davis
879*b0d29bc4SBrooks Davis
880*b0d29bc4SBrooks Davisutils_test_case no_test_case_match
881*b0d29bc4SBrooks Davisno_test_case_match_body() {
882*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
883*b0d29bc4SBrooks Davis
884*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
885*b0d29bc4SBrooks Davissyntax(2)
886*b0d29bc4SBrooks Davistest_suite("integration")
887*b0d29bc4SBrooks Davisatf_test_program{name="first"}
888*b0d29bc4SBrooks DavisEOF
889*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass first
890*b0d29bc4SBrooks Davis
891*b0d29bc4SBrooks Davis    cat >expout <<EOF
892*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
893*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
894*b0d29bc4SBrooks DavisEOF
895*b0d29bc4SBrooks Davis    cat >experr <<EOF
896*b0d29bc4SBrooks Daviskyua: W: No test cases matched by the filter 'first:foobar'.
897*b0d29bc4SBrooks DavisEOF
898*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e file:experr kyua test first:foobar
899*b0d29bc4SBrooks Davis}
900*b0d29bc4SBrooks Davis
901*b0d29bc4SBrooks Davis
902*b0d29bc4SBrooks Davisutils_test_case missing_kyuafile__no_args
903*b0d29bc4SBrooks Davismissing_kyuafile__no_args_body() {
904*b0d29bc4SBrooks Davis    cat >experr <<EOF
905*b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: File 'Kyuafile' not found.
906*b0d29bc4SBrooks DavisEOF
907*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua test
908*b0d29bc4SBrooks Davis}
909*b0d29bc4SBrooks Davis
910*b0d29bc4SBrooks Davis
911*b0d29bc4SBrooks Davisutils_test_case missing_kyuafile__test_program
912*b0d29bc4SBrooks Davismissing_kyuafile__test_program_body() {
913*b0d29bc4SBrooks Davis    mkdir subdir
914*b0d29bc4SBrooks Davis    cat >subdir/Kyuafile <<EOF
915*b0d29bc4SBrooks Davissyntax(2)
916*b0d29bc4SBrooks Davistest_suite("integration")
917*b0d29bc4SBrooks Davisatf_test_program{name="unused"}
918*b0d29bc4SBrooks DavisEOF
919*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass subdir/unused
920*b0d29bc4SBrooks Davis
921*b0d29bc4SBrooks Davis    cat >experr <<EOF
922*b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: File 'Kyuafile' not found.
923*b0d29bc4SBrooks DavisEOF
924*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua test subdir/unused
925*b0d29bc4SBrooks Davis}
926*b0d29bc4SBrooks Davis
927*b0d29bc4SBrooks Davis
928*b0d29bc4SBrooks Davisutils_test_case missing_kyuafile__subdir
929*b0d29bc4SBrooks Davismissing_kyuafile__subdir_body() {
930*b0d29bc4SBrooks Davis    mkdir subdir
931*b0d29bc4SBrooks Davis    cat >subdir/Kyuafile <<EOF
932*b0d29bc4SBrooks Davissyntax(2)
933*b0d29bc4SBrooks Davistest_suite("integration")
934*b0d29bc4SBrooks Davisatf_test_program{name="unused"}
935*b0d29bc4SBrooks DavisEOF
936*b0d29bc4SBrooks Davis    utils_cp_helper simple_all_pass subdir/unused
937*b0d29bc4SBrooks Davis
938*b0d29bc4SBrooks Davis    cat >experr <<EOF
939*b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: File 'Kyuafile' not found.
940*b0d29bc4SBrooks DavisEOF
941*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e file:experr kyua test subdir
942*b0d29bc4SBrooks Davis}
943*b0d29bc4SBrooks Davis
944*b0d29bc4SBrooks Davis
945*b0d29bc4SBrooks Davisutils_test_case bogus_config
946*b0d29bc4SBrooks Davisbogus_config_body() {
947*b0d29bc4SBrooks Davis    mkdir .kyua
948*b0d29bc4SBrooks Davis    cat >"${HOME}/.kyua/kyua.conf" <<EOF
949*b0d29bc4SBrooks DavisHello, world.
950*b0d29bc4SBrooks DavisEOF
951*b0d29bc4SBrooks Davis
952*b0d29bc4SBrooks Davis    file_re='.*\.kyua/kyua.conf'
953*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty \
954*b0d29bc4SBrooks Davis        -e match:"^kyua: E: Load of '${file_re}' failed: Failed to load Lua" \
955*b0d29bc4SBrooks Davis        kyua test
956*b0d29bc4SBrooks Davis}
957*b0d29bc4SBrooks Davis
958*b0d29bc4SBrooks Davis
959*b0d29bc4SBrooks Davisutils_test_case bogus_kyuafile
960*b0d29bc4SBrooks Davisbogus_kyuafile_body() {
961*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
962*b0d29bc4SBrooks DavisHello, world.
963*b0d29bc4SBrooks DavisEOF
964*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty \
965*b0d29bc4SBrooks Davis        -e match:"Load of 'Kyuafile' failed: .* Kyuafile:2:" kyua list
966*b0d29bc4SBrooks Davis}
967*b0d29bc4SBrooks Davis
968*b0d29bc4SBrooks Davis
969*b0d29bc4SBrooks Davisutils_test_case bogus_test_program
970*b0d29bc4SBrooks Davisbogus_test_program_body() {
971*b0d29bc4SBrooks Davis    utils_install_stable_test_wrapper
972*b0d29bc4SBrooks Davis
973*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
974*b0d29bc4SBrooks Davissyntax(2)
975*b0d29bc4SBrooks Davistest_suite("integration")
976*b0d29bc4SBrooks Davisatf_test_program{name="crash_on_list"}
977*b0d29bc4SBrooks Davisatf_test_program{name="non_executable"}
978*b0d29bc4SBrooks DavisEOF
979*b0d29bc4SBrooks Davis    utils_cp_helper bad_test_program crash_on_list
980*b0d29bc4SBrooks Davis    echo 'I am not executable' >non_executable
981*b0d29bc4SBrooks Davis
982*b0d29bc4SBrooks Davis# CHECK_STYLE_DISABLE
983*b0d29bc4SBrooks Davis    cat >expout <<EOF
984*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 ''  [S.UUUs]
985*b0d29bc4SBrooks Davisnon_executable:__test_cases_list__  ->  broken: Permission denied to run test program  [S.UUUs]
986*b0d29bc4SBrooks Davis
987*b0d29bc4SBrooks DavisResults file id is $(utils_results_id)
988*b0d29bc4SBrooks DavisResults saved to $(utils_results_file)
989*b0d29bc4SBrooks Davis
990*b0d29bc4SBrooks Davis0/2 passed (2 failed)
991*b0d29bc4SBrooks DavisEOF
992*b0d29bc4SBrooks Davis# CHECK_STYLE_ENABLE
993*b0d29bc4SBrooks Davis    atf_check -s exit:1 -o file:expout -e empty kyua test
994*b0d29bc4SBrooks Davis}
995*b0d29bc4SBrooks Davis
996*b0d29bc4SBrooks Davis
997*b0d29bc4SBrooks Davisutils_test_case missing_test_program
998*b0d29bc4SBrooks Davismissing_test_program_body() {
999*b0d29bc4SBrooks Davis    cat >Kyuafile <<EOF
1000*b0d29bc4SBrooks Davissyntax(2)
1001*b0d29bc4SBrooks Davisinclude("subdir/Kyuafile")
1002*b0d29bc4SBrooks DavisEOF
1003*b0d29bc4SBrooks Davis    mkdir subdir
1004*b0d29bc4SBrooks Davis    cat >subdir/Kyuafile <<EOF
1005*b0d29bc4SBrooks Davissyntax(2)
1006*b0d29bc4SBrooks Davistest_suite("integration")
1007*b0d29bc4SBrooks Davisatf_test_program{name="ok"}
1008*b0d29bc4SBrooks Davisatf_test_program{name="i-am-missing"}
1009*b0d29bc4SBrooks DavisEOF
1010*b0d29bc4SBrooks Davis    echo 'I should not be touched because the Kyuafile is bogus' >subdir/ok
1011*b0d29bc4SBrooks Davis
1012*b0d29bc4SBrooks Davis# CHECK_STYLE_DISABLE
1013*b0d29bc4SBrooks Davis    cat >experr <<EOF
1014*b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: .*Non-existent test program 'subdir/i-am-missing'.
1015*b0d29bc4SBrooks DavisEOF
1016*b0d29bc4SBrooks Davis# CHECK_STYLE_ENABLE
1017*b0d29bc4SBrooks Davis    atf_check -s exit:2 -o empty -e "match:$(cat experr)" kyua list
1018*b0d29bc4SBrooks Davis}
1019*b0d29bc4SBrooks Davis
1020*b0d29bc4SBrooks Davis
1021*b0d29bc4SBrooks Davisatf_init_test_cases() {
1022*b0d29bc4SBrooks Davis    atf_add_test_case one_test_program__all_pass
1023*b0d29bc4SBrooks Davis    atf_add_test_case one_test_program__some_fail
1024*b0d29bc4SBrooks Davis    atf_add_test_case many_test_programs__all_pass
1025*b0d29bc4SBrooks Davis    atf_add_test_case many_test_programs__some_fail
1026*b0d29bc4SBrooks Davis    atf_add_test_case expect__all_pass
1027*b0d29bc4SBrooks Davis    atf_add_test_case expect__some_fail
1028*b0d29bc4SBrooks Davis    atf_add_test_case premature_exit
1029*b0d29bc4SBrooks Davis
1030*b0d29bc4SBrooks Davis    atf_add_test_case no_args
1031*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__subdir
1032*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__test_case
1033*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__test_program
1034*b0d29bc4SBrooks Davis    atf_add_test_case one_arg__invalid
1035*b0d29bc4SBrooks Davis    atf_add_test_case many_args__ok
1036*b0d29bc4SBrooks Davis    atf_add_test_case many_args__invalid
1037*b0d29bc4SBrooks Davis    atf_add_test_case many_args__no_match__all
1038*b0d29bc4SBrooks Davis    atf_add_test_case many_args__no_match__some
1039*b0d29bc4SBrooks Davis
1040*b0d29bc4SBrooks Davis    atf_add_test_case args_are_relative
1041*b0d29bc4SBrooks Davis
1042*b0d29bc4SBrooks Davis    atf_add_test_case only_load_used_test_programs
1043*b0d29bc4SBrooks Davis
1044*b0d29bc4SBrooks Davis    atf_add_test_case config_behavior
1045*b0d29bc4SBrooks Davis
1046*b0d29bc4SBrooks Davis    atf_add_test_case store_contents
1047*b0d29bc4SBrooks Davis    atf_add_test_case results_file__ok
1048*b0d29bc4SBrooks Davis    atf_add_test_case results_file__fail
1049*b0d29bc4SBrooks Davis    atf_add_test_case results_file__reuse
1050*b0d29bc4SBrooks Davis
1051*b0d29bc4SBrooks Davis    atf_add_test_case build_root_flag
1052*b0d29bc4SBrooks Davis
1053*b0d29bc4SBrooks Davis    atf_add_test_case kyuafile_flag__no_args
1054*b0d29bc4SBrooks Davis    atf_add_test_case kyuafile_flag__some_args
1055*b0d29bc4SBrooks Davis
1056*b0d29bc4SBrooks Davis    atf_add_test_case interrupt
1057*b0d29bc4SBrooks Davis
1058*b0d29bc4SBrooks Davis    atf_add_test_case exclusive_tests
1059*b0d29bc4SBrooks Davis
1060*b0d29bc4SBrooks Davis    atf_add_test_case no_test_program_match
1061*b0d29bc4SBrooks Davis    atf_add_test_case no_test_case_match
1062*b0d29bc4SBrooks Davis
1063*b0d29bc4SBrooks Davis    atf_add_test_case missing_kyuafile__no_args
1064*b0d29bc4SBrooks Davis    atf_add_test_case missing_kyuafile__test_program
1065*b0d29bc4SBrooks Davis    atf_add_test_case missing_kyuafile__subdir
1066*b0d29bc4SBrooks Davis
1067*b0d29bc4SBrooks Davis    atf_add_test_case bogus_config
1068*b0d29bc4SBrooks Davis    atf_add_test_case bogus_kyuafile
1069*b0d29bc4SBrooks Davis    atf_add_test_case bogus_test_program
1070*b0d29bc4SBrooks Davis    atf_add_test_case missing_test_program
1071*b0d29bc4SBrooks Davis}
1072