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 4799689201SIgor 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 7299689201SIgor 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 10599689201SIgor 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 14199689201SIgor 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 17599689201SIgor 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 20699689201SIgor 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 23499689201SIgor 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 27399689201SIgor 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 30599689201SIgor 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 33199689201SIgor 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 35799689201SIgor 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 40599689201SIgor 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 47399689201SIgor 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 51899689201SIgor 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 54599689201SIgor 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 599*51a8eb64SIgor Ostapenkoutils_test_case config_unprivileged_user 600*51a8eb64SIgor Ostapenkoconfig_unprivileged_user_body() { 601*51a8eb64SIgor Ostapenko cat >"my-config" <<EOF 602*51a8eb64SIgor Ostapenkosyntax(2) 603*51a8eb64SIgor Ostapenkounprivileged_user = "nobody" 604*51a8eb64SIgor OstapenkoEOF 605*51a8eb64SIgor Ostapenko cat >Kyuafile <<EOF 606*51a8eb64SIgor Ostapenkosyntax(2) 607*51a8eb64SIgor Ostapenkoatf_test_program{name="config1", test_suite="suite1"} 608*51a8eb64SIgor OstapenkoEOF 609*51a8eb64SIgor Ostapenko utils_cp_helper config config1 610*51a8eb64SIgor Ostapenko 611*51a8eb64SIgor Ostapenko CONFIG_VAR_FILE="$(pwd)/cookie"; export CONFIG_VAR_FILE 612*51a8eb64SIgor Ostapenko if [ -f "${CONFIG_VAR_FILE}" ]; then 613*51a8eb64SIgor Ostapenko atf_fail "Cookie file already created; test case list may have gotten" \ 614*51a8eb64SIgor Ostapenko "a bad configuration" 615*51a8eb64SIgor Ostapenko fi 616*51a8eb64SIgor Ostapenko 617*51a8eb64SIgor Ostapenko CONFIG_VAR_NAME="unprivileged-user"; export CONFIG_VAR_NAME 618*51a8eb64SIgor Ostapenko atf_check -s exit:1 -o ignore -e ignore kyua -c my-config test config1 619*51a8eb64SIgor Ostapenko [ -f "${CONFIG_VAR_FILE}" ] || \ 620*51a8eb64SIgor Ostapenko atf_fail "Cookie file not created; test case list did not get" \ 621*51a8eb64SIgor Ostapenko "configuration variables" 622*51a8eb64SIgor Ostapenko value="$(cat "${CONFIG_VAR_FILE}")" 623*51a8eb64SIgor Ostapenko [ "${value}" = "nobody" ] || \ 624*51a8eb64SIgor Ostapenko atf_fail "Invalid value (${value}) in cookie file; test case list did" \ 625*51a8eb64SIgor Ostapenko "not get the correct configuration variables" 626*51a8eb64SIgor Ostapenko 627*51a8eb64SIgor Ostapenko rm "${CONFIG_VAR_FILE}" 628*51a8eb64SIgor Ostapenko 629*51a8eb64SIgor Ostapenko CONFIG_VAR_NAME="unprivileged_user"; export CONFIG_VAR_NAME 630*51a8eb64SIgor Ostapenko atf_check -s exit:1 -o ignore -e ignore kyua -c my-config test config1 631*51a8eb64SIgor Ostapenko [ -f "${CONFIG_VAR_FILE}" ] || \ 632*51a8eb64SIgor Ostapenko atf_fail "Cookie file not created; test case list did not get" \ 633*51a8eb64SIgor Ostapenko "configuration variables" 634*51a8eb64SIgor Ostapenko value="$(cat "${CONFIG_VAR_FILE}")" 635*51a8eb64SIgor Ostapenko [ "${value}" = "nobody" ] || \ 636*51a8eb64SIgor Ostapenko atf_fail "Invalid value (${value}) in cookie file; test case list did" \ 637*51a8eb64SIgor Ostapenko "not get the correct configuration variables" 638*51a8eb64SIgor Ostapenko} 639*51a8eb64SIgor Ostapenko 640*51a8eb64SIgor Ostapenko 641b0d29bc4SBrooks Davisutils_test_case store_contents 642b0d29bc4SBrooks Davisstore_contents_body() { 643b0d29bc4SBrooks Davis utils_install_stable_test_wrapper 644b0d29bc4SBrooks Davis 645b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 646b0d29bc4SBrooks Davissyntax(2) 647b0d29bc4SBrooks Davisatf_test_program{name="some-program", test_suite="suite1"} 648b0d29bc4SBrooks DavisEOF 649b0d29bc4SBrooks Davis utils_cp_helper simple_some_fail some-program 650b0d29bc4SBrooks Davis cat >expout <<EOF 651b0d29bc4SBrooks Davissome-program:fail -> failed: This fails on purpose [S.UUUs] 652b0d29bc4SBrooks Davissome-program:pass -> passed [S.UUUs] 653b0d29bc4SBrooks Davis 654b0d29bc4SBrooks DavisResults file id is $(utils_results_id) 655b0d29bc4SBrooks DavisResults saved to $(utils_results_file) 656b0d29bc4SBrooks Davis 65799689201SIgor Ostapenko1/2 passed (0 broken, 1 failed, 0 skipped) 658b0d29bc4SBrooks DavisEOF 659b0d29bc4SBrooks Davis 660b0d29bc4SBrooks Davis atf_check -s exit:1 -o file:expout -e empty kyua test 661b0d29bc4SBrooks Davis 662b0d29bc4SBrooks Daviscat >expout <<EOF 663b0d29bc4SBrooks Davissome-program,fail,failed,This fails on purpose 664b0d29bc4SBrooks Davissome-program,pass,passed,NULL 665b0d29bc4SBrooks DavisEOF 666b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty \ 667b0d29bc4SBrooks Davis kyua db-exec --no-headers \ 668b0d29bc4SBrooks Davis "SELECT " \ 669b0d29bc4SBrooks Davis " test_programs.relative_path, test_cases.name, " \ 670b0d29bc4SBrooks Davis " test_results.result_type, test_results.result_reason " \ 671b0d29bc4SBrooks Davis "FROM test_programs " \ 672b0d29bc4SBrooks Davis " JOIN test_cases " \ 673b0d29bc4SBrooks Davis " ON test_programs.test_program_id = test_cases.test_program_id " \ 674b0d29bc4SBrooks Davis " JOIN test_results " \ 675b0d29bc4SBrooks Davis " ON test_cases.test_case_id = test_results.test_case_id " \ 676b0d29bc4SBrooks Davis "ORDER BY test_programs.relative_path, test_cases.name" 677b0d29bc4SBrooks Davis} 678b0d29bc4SBrooks Davis 679b0d29bc4SBrooks Davis 680b0d29bc4SBrooks Davisutils_test_case results_file__ok 681b0d29bc4SBrooks Davisresults_file__ok_body() { 682b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 683b0d29bc4SBrooks Davissyntax(2) 684b0d29bc4SBrooks Davisatf_test_program{name="config1", test_suite="suite1"} 685b0d29bc4SBrooks DavisEOF 686b0d29bc4SBrooks Davis utils_cp_helper config config1 687b0d29bc4SBrooks Davis 688b0d29bc4SBrooks Davis atf_check -s exit:0 -o ignore -e empty kyua test -r foo1.db 689b0d29bc4SBrooks Davis test -f foo1.db || atf_fail "-s did not work" 690b0d29bc4SBrooks Davis atf_check -s exit:0 -o ignore -e empty kyua test --results-file=foo2.db 691b0d29bc4SBrooks Davis test -f foo2.db || atf_fail "--results-file did not work" 692b0d29bc4SBrooks Davis test ! -f .kyua/store.db || atf_fail "Default database created" 693b0d29bc4SBrooks Davis} 694b0d29bc4SBrooks Davis 695b0d29bc4SBrooks Davis 696b0d29bc4SBrooks Davisutils_test_case results_file__fail 697b0d29bc4SBrooks Davisresults_file__fail_body() { 698b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 699b0d29bc4SBrooks Davissyntax(2) 700b0d29bc4SBrooks Davisatf_test_program{name="config1", test_suite="suite1"} 701b0d29bc4SBrooks DavisEOF 702b0d29bc4SBrooks Davis utils_cp_helper config config1 703b0d29bc4SBrooks Davis 704b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e match:"Invalid.*--results-file" \ 705b0d29bc4SBrooks Davis kyua test --results-file= 706b0d29bc4SBrooks Davis} 707b0d29bc4SBrooks Davis 708b0d29bc4SBrooks Davis 709b0d29bc4SBrooks Davisutils_test_case results_file__reuse 710b0d29bc4SBrooks Davisresults_file__reuse_body() { 711b0d29bc4SBrooks Davis utils_install_stable_test_wrapper 712b0d29bc4SBrooks Davis 713b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 714b0d29bc4SBrooks Davissyntax(2) 715b0d29bc4SBrooks Davisatf_test_program{name="simple_all_pass", test_suite="integration"} 716b0d29bc4SBrooks DavisEOF 717b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass . 718b0d29bc4SBrooks Davis atf_check -s exit:0 -o ignore -e empty kyua test -r results.db 719b0d29bc4SBrooks Davis 720b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e match:"results.db already exists" \ 721b0d29bc4SBrooks Davis kyua test --results-file="results.db" 722b0d29bc4SBrooks Davis} 723b0d29bc4SBrooks Davis 724b0d29bc4SBrooks Davis 725b0d29bc4SBrooks Davisutils_test_case build_root_flag 726b0d29bc4SBrooks Davisbuild_root_flag_body() { 727b0d29bc4SBrooks Davis utils_install_stable_test_wrapper 728b0d29bc4SBrooks Davis 729b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 730b0d29bc4SBrooks Davissyntax(2) 731b0d29bc4SBrooks Davistest_suite("integration") 732b0d29bc4SBrooks Davisatf_test_program{name="first"} 733b0d29bc4SBrooks Davisinclude("subdir/Kyuafile") 734b0d29bc4SBrooks DavisEOF 735b0d29bc4SBrooks Davis 736b0d29bc4SBrooks Davis mkdir subdir 737b0d29bc4SBrooks Davis cat >subdir/Kyuafile <<EOF 738b0d29bc4SBrooks Davissyntax(2) 739b0d29bc4SBrooks Davistest_suite("integration") 740b0d29bc4SBrooks Davisatf_test_program{name="second"} 741b0d29bc4SBrooks Davisatf_test_program{name="third"} 742b0d29bc4SBrooks DavisEOF 743b0d29bc4SBrooks Davis 744b0d29bc4SBrooks Davis cat >expout <<EOF 745b0d29bc4SBrooks Davisfirst:pass -> passed [S.UUUs] 746b0d29bc4SBrooks Davisfirst:skip -> skipped: The reason for skipping is this [S.UUUs] 747b0d29bc4SBrooks Davissubdir/second:pass -> passed [S.UUUs] 748b0d29bc4SBrooks Davissubdir/second:skip -> skipped: The reason for skipping is this [S.UUUs] 749b0d29bc4SBrooks Davissubdir/third:pass -> passed [S.UUUs] 750b0d29bc4SBrooks Davissubdir/third:skip -> skipped: The reason for skipping is this [S.UUUs] 751b0d29bc4SBrooks Davis 752b0d29bc4SBrooks DavisResults file id is $(utils_results_id) 753b0d29bc4SBrooks DavisResults saved to $(utils_results_file) 754b0d29bc4SBrooks Davis 75599689201SIgor Ostapenko3/6 passed (0 broken, 0 failed, 3 skipped) 756b0d29bc4SBrooks DavisEOF 757b0d29bc4SBrooks Davis 758b0d29bc4SBrooks Davis mkdir build 759b0d29bc4SBrooks Davis mkdir build/subdir 760b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass build/first 761b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass build/subdir/second 762b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass build/subdir/third 763b0d29bc4SBrooks Davis 764b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty kyua test --build-root=build 765b0d29bc4SBrooks Davis} 766b0d29bc4SBrooks Davis 767b0d29bc4SBrooks Davis 768b0d29bc4SBrooks Davisutils_test_case kyuafile_flag__no_args 769b0d29bc4SBrooks Daviskyuafile_flag__no_args_body() { 770b0d29bc4SBrooks Davis utils_install_stable_test_wrapper 771b0d29bc4SBrooks Davis 772b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 773b0d29bc4SBrooks DavisThis file is bogus but it is not loaded. 774b0d29bc4SBrooks DavisEOF 775b0d29bc4SBrooks Davis 776b0d29bc4SBrooks Davis cat >myfile <<EOF 777b0d29bc4SBrooks Davissyntax(2) 778b0d29bc4SBrooks Davistest_suite("integration") 779b0d29bc4SBrooks Davisatf_test_program{name="sometest"} 780b0d29bc4SBrooks DavisEOF 781b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass sometest 782b0d29bc4SBrooks Davis 783b0d29bc4SBrooks Davis cat >expout <<EOF 784b0d29bc4SBrooks Davissometest:pass -> passed [S.UUUs] 785b0d29bc4SBrooks Davissometest:skip -> skipped: The reason for skipping is this [S.UUUs] 786b0d29bc4SBrooks Davis 787b0d29bc4SBrooks DavisResults file id is $(utils_results_id) 788b0d29bc4SBrooks DavisResults saved to $(utils_results_file) 789b0d29bc4SBrooks Davis 79099689201SIgor Ostapenko1/2 passed (0 broken, 0 failed, 1 skipped) 791b0d29bc4SBrooks DavisEOF 792b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty kyua test -k myfile 793b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty kyua test --kyuafile=myfile 794b0d29bc4SBrooks Davis} 795b0d29bc4SBrooks Davis 796b0d29bc4SBrooks Davis 797b0d29bc4SBrooks Davisutils_test_case kyuafile_flag__some_args 798b0d29bc4SBrooks Daviskyuafile_flag__some_args_body() { 799b0d29bc4SBrooks Davis utils_install_stable_test_wrapper 800b0d29bc4SBrooks Davis 801b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 802b0d29bc4SBrooks DavisThis file is bogus but it is not loaded. 803b0d29bc4SBrooks DavisEOF 804b0d29bc4SBrooks Davis 805b0d29bc4SBrooks Davis cat >myfile <<EOF 806b0d29bc4SBrooks Davissyntax(2) 807b0d29bc4SBrooks Davistest_suite("hello-world") 808b0d29bc4SBrooks Davisatf_test_program{name="sometest"} 809b0d29bc4SBrooks DavisEOF 810b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass sometest 811b0d29bc4SBrooks Davis 812b0d29bc4SBrooks Davis cat >expout <<EOF 813b0d29bc4SBrooks Davissometest:pass -> passed [S.UUUs] 814b0d29bc4SBrooks Davissometest:skip -> skipped: The reason for skipping is this [S.UUUs] 815b0d29bc4SBrooks Davis 816b0d29bc4SBrooks DavisResults file id is $(utils_results_id) 817b0d29bc4SBrooks DavisResults saved to $(utils_results_file) 818b0d29bc4SBrooks Davis 81999689201SIgor Ostapenko1/2 passed (0 broken, 0 failed, 1 skipped) 820b0d29bc4SBrooks DavisEOF 821b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty kyua test -k myfile sometest 822b0d29bc4SBrooks Davis cat >expout <<EOF 823b0d29bc4SBrooks Davissometest:pass -> passed [S.UUUs] 824b0d29bc4SBrooks Davissometest:skip -> skipped: The reason for skipping is this [S.UUUs] 825b0d29bc4SBrooks Davis 826b0d29bc4SBrooks DavisResults file id is $(utils_results_id) 827b0d29bc4SBrooks DavisResults saved to $(utils_results_file) 828b0d29bc4SBrooks Davis 82999689201SIgor Ostapenko1/2 passed (0 broken, 0 failed, 1 skipped) 830b0d29bc4SBrooks DavisEOF 831b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty kyua test --kyuafile=myfile \ 832b0d29bc4SBrooks Davis sometest 833b0d29bc4SBrooks Davis} 834b0d29bc4SBrooks Davis 835b0d29bc4SBrooks Davis 836b0d29bc4SBrooks Davisutils_test_case interrupt 837b0d29bc4SBrooks Davisinterrupt_body() { 838b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 839b0d29bc4SBrooks Davissyntax(2) 840b0d29bc4SBrooks Davistest_suite("integration") 841b0d29bc4SBrooks Davisatf_test_program{name="interrupts"} 842b0d29bc4SBrooks DavisEOF 843b0d29bc4SBrooks Davis utils_cp_helper interrupts . 844b0d29bc4SBrooks Davis 845b0d29bc4SBrooks Davis kyua \ 846b0d29bc4SBrooks Davis -v test_suites.integration.body-cookie="$(pwd)/body" \ 847b0d29bc4SBrooks Davis -v test_suites.integration.cleanup-cookie="$(pwd)/cleanup" \ 848b0d29bc4SBrooks Davis test >stdout 2>stderr & 849b0d29bc4SBrooks Davis pid=${!} 850b0d29bc4SBrooks Davis echo "Kyua subprocess is PID ${pid}" 851b0d29bc4SBrooks Davis 852b0d29bc4SBrooks Davis while [ ! -f body ]; do 853b0d29bc4SBrooks Davis echo "Waiting for body to start" 854b0d29bc4SBrooks Davis sleep 1 855b0d29bc4SBrooks Davis done 856b0d29bc4SBrooks Davis echo "Body started" 857b0d29bc4SBrooks Davis sleep 1 858b0d29bc4SBrooks Davis 859b0d29bc4SBrooks Davis echo "Sending INT signal to ${pid}" 860b0d29bc4SBrooks Davis kill -INT ${pid} 861b0d29bc4SBrooks Davis echo "Waiting for process ${pid} to exit" 862b0d29bc4SBrooks Davis wait ${pid} 863b0d29bc4SBrooks Davis ret=${?} 864b0d29bc4SBrooks Davis sed -e 's,^,kyua stdout:,' stdout 865b0d29bc4SBrooks Davis sed -e 's,^,kyua stderr:,' stderr 866b0d29bc4SBrooks Davis echo "Process ${pid} exited" 867b0d29bc4SBrooks Davis [ ${ret} -ne 0 ] || atf_fail 'No error code reported' 868b0d29bc4SBrooks Davis 869b0d29bc4SBrooks Davis [ -f cleanup ] || atf_fail 'Cleanup part not executed after signal' 870b0d29bc4SBrooks Davis atf_expect_pass 871b0d29bc4SBrooks Davis 872b0d29bc4SBrooks Davis atf_check -s exit:0 -o ignore -e empty grep 'Signal caught' stderr 873b0d29bc4SBrooks Davis atf_check -s exit:0 -o ignore -e empty \ 874b0d29bc4SBrooks Davis grep 'kyua: E: Interrupted by signal' stderr 875b0d29bc4SBrooks Davis} 876b0d29bc4SBrooks Davis 877b0d29bc4SBrooks Davis 878b0d29bc4SBrooks Davisutils_test_case exclusive_tests 879b0d29bc4SBrooks Davisexclusive_tests_body() { 880b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 881b0d29bc4SBrooks Davissyntax(2) 882b0d29bc4SBrooks Davistest_suite("integration") 883b0d29bc4SBrooks DavisEOF 884b0d29bc4SBrooks Davis for i in $(seq 100); do 885b0d29bc4SBrooks Davis echo 'plain_test_program{name="race", is_exclusive=true}' >>Kyuafile 886b0d29bc4SBrooks Davis done 887b0d29bc4SBrooks Davis utils_cp_helper race . 888b0d29bc4SBrooks Davis 889b0d29bc4SBrooks Davis atf_check \ 890b0d29bc4SBrooks Davis -s exit:0 \ 891b0d29bc4SBrooks Davis -o match:"100/100 passed" \ 892b0d29bc4SBrooks Davis kyua \ 893b0d29bc4SBrooks Davis -v parallelism=20 \ 894b0d29bc4SBrooks Davis -v test_suites.integration.shared_file="$(pwd)/shared_file" \ 895b0d29bc4SBrooks Davis test 896b0d29bc4SBrooks Davis} 897b0d29bc4SBrooks Davis 898b0d29bc4SBrooks Davis 899b0d29bc4SBrooks Davisutils_test_case no_test_program_match 900b0d29bc4SBrooks Davisno_test_program_match_body() { 901b0d29bc4SBrooks Davis utils_install_stable_test_wrapper 902b0d29bc4SBrooks Davis 903b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 904b0d29bc4SBrooks Davissyntax(2) 905b0d29bc4SBrooks Davistest_suite("integration") 906b0d29bc4SBrooks Davisatf_test_program{name="first"} 907b0d29bc4SBrooks DavisEOF 908b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass first 909b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass second 910b0d29bc4SBrooks Davis 911b0d29bc4SBrooks Davis cat >expout <<EOF 912b0d29bc4SBrooks DavisResults file id is $(utils_results_id) 913b0d29bc4SBrooks DavisResults saved to $(utils_results_file) 914b0d29bc4SBrooks DavisEOF 915b0d29bc4SBrooks Davis cat >experr <<EOF 916b0d29bc4SBrooks Daviskyua: W: No test cases matched by the filter 'second'. 917b0d29bc4SBrooks DavisEOF 918b0d29bc4SBrooks Davis atf_check -s exit:1 -o file:expout -e file:experr kyua test second 919b0d29bc4SBrooks Davis} 920b0d29bc4SBrooks Davis 921b0d29bc4SBrooks Davis 922b0d29bc4SBrooks Davisutils_test_case no_test_case_match 923b0d29bc4SBrooks Davisno_test_case_match_body() { 924b0d29bc4SBrooks Davis utils_install_stable_test_wrapper 925b0d29bc4SBrooks Davis 926b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 927b0d29bc4SBrooks Davissyntax(2) 928b0d29bc4SBrooks Davistest_suite("integration") 929b0d29bc4SBrooks Davisatf_test_program{name="first"} 930b0d29bc4SBrooks DavisEOF 931b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass first 932b0d29bc4SBrooks Davis 933b0d29bc4SBrooks Davis cat >expout <<EOF 934b0d29bc4SBrooks DavisResults file id is $(utils_results_id) 935b0d29bc4SBrooks DavisResults saved to $(utils_results_file) 936b0d29bc4SBrooks DavisEOF 937b0d29bc4SBrooks Davis cat >experr <<EOF 938b0d29bc4SBrooks Daviskyua: W: No test cases matched by the filter 'first:foobar'. 939b0d29bc4SBrooks DavisEOF 940b0d29bc4SBrooks Davis atf_check -s exit:1 -o file:expout -e file:experr kyua test first:foobar 941b0d29bc4SBrooks Davis} 942b0d29bc4SBrooks Davis 943b0d29bc4SBrooks Davis 944b0d29bc4SBrooks Davisutils_test_case missing_kyuafile__no_args 945b0d29bc4SBrooks Davismissing_kyuafile__no_args_body() { 946b0d29bc4SBrooks Davis cat >experr <<EOF 947b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: File 'Kyuafile' not found. 948b0d29bc4SBrooks DavisEOF 949b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e file:experr kyua test 950b0d29bc4SBrooks Davis} 951b0d29bc4SBrooks Davis 952b0d29bc4SBrooks Davis 953b0d29bc4SBrooks Davisutils_test_case missing_kyuafile__test_program 954b0d29bc4SBrooks Davismissing_kyuafile__test_program_body() { 955b0d29bc4SBrooks Davis mkdir subdir 956b0d29bc4SBrooks Davis cat >subdir/Kyuafile <<EOF 957b0d29bc4SBrooks Davissyntax(2) 958b0d29bc4SBrooks Davistest_suite("integration") 959b0d29bc4SBrooks Davisatf_test_program{name="unused"} 960b0d29bc4SBrooks DavisEOF 961b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass subdir/unused 962b0d29bc4SBrooks Davis 963b0d29bc4SBrooks Davis cat >experr <<EOF 964b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: File 'Kyuafile' not found. 965b0d29bc4SBrooks DavisEOF 966b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e file:experr kyua test subdir/unused 967b0d29bc4SBrooks Davis} 968b0d29bc4SBrooks Davis 969b0d29bc4SBrooks Davis 970b0d29bc4SBrooks Davisutils_test_case missing_kyuafile__subdir 971b0d29bc4SBrooks Davismissing_kyuafile__subdir_body() { 972b0d29bc4SBrooks Davis mkdir subdir 973b0d29bc4SBrooks Davis cat >subdir/Kyuafile <<EOF 974b0d29bc4SBrooks Davissyntax(2) 975b0d29bc4SBrooks Davistest_suite("integration") 976b0d29bc4SBrooks Davisatf_test_program{name="unused"} 977b0d29bc4SBrooks DavisEOF 978b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass subdir/unused 979b0d29bc4SBrooks Davis 980b0d29bc4SBrooks Davis cat >experr <<EOF 981b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: File 'Kyuafile' not found. 982b0d29bc4SBrooks DavisEOF 983b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e file:experr kyua test subdir 984b0d29bc4SBrooks Davis} 985b0d29bc4SBrooks Davis 986b0d29bc4SBrooks Davis 987b0d29bc4SBrooks Davisutils_test_case bogus_config 988b0d29bc4SBrooks Davisbogus_config_body() { 989b0d29bc4SBrooks Davis mkdir .kyua 990b0d29bc4SBrooks Davis cat >"${HOME}/.kyua/kyua.conf" <<EOF 991b0d29bc4SBrooks DavisHello, world. 992b0d29bc4SBrooks DavisEOF 993b0d29bc4SBrooks Davis 994b0d29bc4SBrooks Davis file_re='.*\.kyua/kyua.conf' 995b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty \ 996b0d29bc4SBrooks Davis -e match:"^kyua: E: Load of '${file_re}' failed: Failed to load Lua" \ 997b0d29bc4SBrooks Davis kyua test 998b0d29bc4SBrooks Davis} 999b0d29bc4SBrooks Davis 1000b0d29bc4SBrooks Davis 1001b0d29bc4SBrooks Davisutils_test_case bogus_kyuafile 1002b0d29bc4SBrooks Davisbogus_kyuafile_body() { 1003b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 1004b0d29bc4SBrooks DavisHello, world. 1005b0d29bc4SBrooks DavisEOF 1006b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty \ 1007b0d29bc4SBrooks Davis -e match:"Load of 'Kyuafile' failed: .* Kyuafile:2:" kyua list 1008b0d29bc4SBrooks Davis} 1009b0d29bc4SBrooks Davis 1010b0d29bc4SBrooks Davis 1011b0d29bc4SBrooks Davisutils_test_case bogus_test_program 1012b0d29bc4SBrooks Davisbogus_test_program_body() { 1013b0d29bc4SBrooks Davis utils_install_stable_test_wrapper 1014b0d29bc4SBrooks Davis 1015b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 1016b0d29bc4SBrooks Davissyntax(2) 1017b0d29bc4SBrooks Davistest_suite("integration") 1018b0d29bc4SBrooks Davisatf_test_program{name="crash_on_list"} 1019b0d29bc4SBrooks Davisatf_test_program{name="non_executable"} 1020b0d29bc4SBrooks DavisEOF 1021b0d29bc4SBrooks Davis utils_cp_helper bad_test_program crash_on_list 1022b0d29bc4SBrooks Davis echo 'I am not executable' >non_executable 1023b0d29bc4SBrooks Davis 1024b0d29bc4SBrooks Davis# CHECK_STYLE_DISABLE 1025b0d29bc4SBrooks Davis cat >expout <<EOF 1026b0d29bc4SBrooks 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] 1027b0d29bc4SBrooks Davisnon_executable:__test_cases_list__ -> broken: Permission denied to run test program [S.UUUs] 1028b0d29bc4SBrooks Davis 1029b0d29bc4SBrooks DavisResults file id is $(utils_results_id) 1030b0d29bc4SBrooks DavisResults saved to $(utils_results_file) 1031b0d29bc4SBrooks Davis 103299689201SIgor Ostapenko0/2 passed (2 broken, 0 failed, 0 skipped) 1033b0d29bc4SBrooks DavisEOF 1034b0d29bc4SBrooks Davis# CHECK_STYLE_ENABLE 1035b0d29bc4SBrooks Davis atf_check -s exit:1 -o file:expout -e empty kyua test 1036b0d29bc4SBrooks Davis} 1037b0d29bc4SBrooks Davis 1038b0d29bc4SBrooks Davis 1039b0d29bc4SBrooks Davisutils_test_case missing_test_program 1040b0d29bc4SBrooks Davismissing_test_program_body() { 1041b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 1042b0d29bc4SBrooks Davissyntax(2) 1043b0d29bc4SBrooks Davisinclude("subdir/Kyuafile") 1044b0d29bc4SBrooks DavisEOF 1045b0d29bc4SBrooks Davis mkdir subdir 1046b0d29bc4SBrooks Davis cat >subdir/Kyuafile <<EOF 1047b0d29bc4SBrooks Davissyntax(2) 1048b0d29bc4SBrooks Davistest_suite("integration") 1049b0d29bc4SBrooks Davisatf_test_program{name="ok"} 1050b0d29bc4SBrooks Davisatf_test_program{name="i-am-missing"} 1051b0d29bc4SBrooks DavisEOF 1052b0d29bc4SBrooks Davis echo 'I should not be touched because the Kyuafile is bogus' >subdir/ok 1053b0d29bc4SBrooks Davis 1054b0d29bc4SBrooks Davis# CHECK_STYLE_DISABLE 1055b0d29bc4SBrooks Davis cat >experr <<EOF 1056b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: .*Non-existent test program 'subdir/i-am-missing'. 1057b0d29bc4SBrooks DavisEOF 1058b0d29bc4SBrooks Davis# CHECK_STYLE_ENABLE 1059b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e "match:$(cat experr)" kyua list 1060b0d29bc4SBrooks Davis} 1061b0d29bc4SBrooks Davis 1062b0d29bc4SBrooks Davis 1063b0d29bc4SBrooks Davisatf_init_test_cases() { 1064b0d29bc4SBrooks Davis atf_add_test_case one_test_program__all_pass 1065b0d29bc4SBrooks Davis atf_add_test_case one_test_program__some_fail 1066b0d29bc4SBrooks Davis atf_add_test_case many_test_programs__all_pass 1067b0d29bc4SBrooks Davis atf_add_test_case many_test_programs__some_fail 1068b0d29bc4SBrooks Davis atf_add_test_case expect__all_pass 1069b0d29bc4SBrooks Davis atf_add_test_case expect__some_fail 1070b0d29bc4SBrooks Davis atf_add_test_case premature_exit 1071b0d29bc4SBrooks Davis 1072b0d29bc4SBrooks Davis atf_add_test_case no_args 1073b0d29bc4SBrooks Davis atf_add_test_case one_arg__subdir 1074b0d29bc4SBrooks Davis atf_add_test_case one_arg__test_case 1075b0d29bc4SBrooks Davis atf_add_test_case one_arg__test_program 1076b0d29bc4SBrooks Davis atf_add_test_case one_arg__invalid 1077b0d29bc4SBrooks Davis atf_add_test_case many_args__ok 1078b0d29bc4SBrooks Davis atf_add_test_case many_args__invalid 1079b0d29bc4SBrooks Davis atf_add_test_case many_args__no_match__all 1080b0d29bc4SBrooks Davis atf_add_test_case many_args__no_match__some 1081b0d29bc4SBrooks Davis 1082b0d29bc4SBrooks Davis atf_add_test_case args_are_relative 1083b0d29bc4SBrooks Davis 1084b0d29bc4SBrooks Davis atf_add_test_case only_load_used_test_programs 1085b0d29bc4SBrooks Davis 1086b0d29bc4SBrooks Davis atf_add_test_case config_behavior 1087*51a8eb64SIgor Ostapenko atf_add_test_case config_unprivileged_user 1088b0d29bc4SBrooks Davis 1089b0d29bc4SBrooks Davis atf_add_test_case store_contents 1090b0d29bc4SBrooks Davis atf_add_test_case results_file__ok 1091b0d29bc4SBrooks Davis atf_add_test_case results_file__fail 1092b0d29bc4SBrooks Davis atf_add_test_case results_file__reuse 1093b0d29bc4SBrooks Davis 1094b0d29bc4SBrooks Davis atf_add_test_case build_root_flag 1095b0d29bc4SBrooks Davis 1096b0d29bc4SBrooks Davis atf_add_test_case kyuafile_flag__no_args 1097b0d29bc4SBrooks Davis atf_add_test_case kyuafile_flag__some_args 1098b0d29bc4SBrooks Davis 1099b0d29bc4SBrooks Davis atf_add_test_case interrupt 1100b0d29bc4SBrooks Davis 1101b0d29bc4SBrooks Davis atf_add_test_case exclusive_tests 1102b0d29bc4SBrooks Davis 1103b0d29bc4SBrooks Davis atf_add_test_case no_test_program_match 1104b0d29bc4SBrooks Davis atf_add_test_case no_test_case_match 1105b0d29bc4SBrooks Davis 1106b0d29bc4SBrooks Davis atf_add_test_case missing_kyuafile__no_args 1107b0d29bc4SBrooks Davis atf_add_test_case missing_kyuafile__test_program 1108b0d29bc4SBrooks Davis atf_add_test_case missing_kyuafile__subdir 1109b0d29bc4SBrooks Davis 1110b0d29bc4SBrooks Davis atf_add_test_case bogus_config 1111b0d29bc4SBrooks Davis atf_add_test_case bogus_kyuafile 1112b0d29bc4SBrooks Davis atf_add_test_case bogus_test_program 1113b0d29bc4SBrooks Davis atf_add_test_case missing_test_program 1114b0d29bc4SBrooks Davis} 1115