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