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