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