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 no_args 31*b0d29bc4SBrooks Davisno_args_body() { 32*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 33*b0d29bc4SBrooks Davissyntax(2) 34*b0d29bc4SBrooks Davistest_suite("integration") 35*b0d29bc4SBrooks Davisatf_test_program{name="simple_all_pass"} 36*b0d29bc4SBrooks DavisEOF 37*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass . 38*b0d29bc4SBrooks Davis 39*b0d29bc4SBrooks Davis cat >experr <<EOF 40*b0d29bc4SBrooks DavisUsage error for command debug: Not enough arguments. 41*b0d29bc4SBrooks DavisType 'kyua help debug' for usage information. 42*b0d29bc4SBrooks DavisEOF 43*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e file:experr kyua debug 44*b0d29bc4SBrooks Davis} 45*b0d29bc4SBrooks Davis 46*b0d29bc4SBrooks Davis 47*b0d29bc4SBrooks Davisutils_test_case many_args 48*b0d29bc4SBrooks Davismany_args_body() { 49*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 50*b0d29bc4SBrooks Davissyntax(2) 51*b0d29bc4SBrooks Davistest_suite("integration") 52*b0d29bc4SBrooks Davisatf_test_program{name="first"} 53*b0d29bc4SBrooks Davisatf_test_program{name="second"} 54*b0d29bc4SBrooks DavisEOF 55*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass first 56*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass second 57*b0d29bc4SBrooks Davis 58*b0d29bc4SBrooks Davis cat >experr <<EOF 59*b0d29bc4SBrooks DavisUsage error for command debug: Too many arguments. 60*b0d29bc4SBrooks DavisType 'kyua help debug' for usage information. 61*b0d29bc4SBrooks DavisEOF 62*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e file:experr kyua debug first:pass \ 63*b0d29bc4SBrooks Davis second:pass 64*b0d29bc4SBrooks Davis} 65*b0d29bc4SBrooks Davis 66*b0d29bc4SBrooks Davis 67*b0d29bc4SBrooks Davisutils_test_case one_arg__ok_pass 68*b0d29bc4SBrooks Davisone_arg__ok_pass_body() { 69*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 70*b0d29bc4SBrooks Davissyntax(2) 71*b0d29bc4SBrooks Davistest_suite("integration") 72*b0d29bc4SBrooks Davisatf_test_program{name="first"} 73*b0d29bc4SBrooks Davisatf_test_program{name="second"} 74*b0d29bc4SBrooks DavisEOF 75*b0d29bc4SBrooks Davis utils_cp_helper expect_all_pass first 76*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass second 77*b0d29bc4SBrooks Davis 78*b0d29bc4SBrooks Davis cat >expout <<EOF 79*b0d29bc4SBrooks DavisThis is the stdout of pass 80*b0d29bc4SBrooks Davissecond:pass -> passed 81*b0d29bc4SBrooks DavisEOF 82*b0d29bc4SBrooks Daviscat >experr <<EOF 83*b0d29bc4SBrooks DavisThis is the stderr of pass 84*b0d29bc4SBrooks DavisEOF 85*b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e file:experr kyua debug second:pass 86*b0d29bc4SBrooks Davis} 87*b0d29bc4SBrooks Davis 88*b0d29bc4SBrooks Davis 89*b0d29bc4SBrooks Davisutils_test_case one_arg__ok_fail 90*b0d29bc4SBrooks Davisone_arg__ok_fail_body() { 91*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 92*b0d29bc4SBrooks Davissyntax(2) 93*b0d29bc4SBrooks Davistest_suite("integration") 94*b0d29bc4SBrooks Davisatf_test_program{name="first"} 95*b0d29bc4SBrooks DavisEOF 96*b0d29bc4SBrooks Davis utils_cp_helper simple_some_fail first 97*b0d29bc4SBrooks Davis 98*b0d29bc4SBrooks Davis cat >expout <<EOF 99*b0d29bc4SBrooks DavisThis is the stdout of fail 100*b0d29bc4SBrooks Davisfirst:fail -> failed: This fails on purpose 101*b0d29bc4SBrooks DavisEOF 102*b0d29bc4SBrooks Davis cat >experr <<EOF 103*b0d29bc4SBrooks DavisThis is the stderr of fail 104*b0d29bc4SBrooks DavisEOF 105*b0d29bc4SBrooks Davis atf_check -s exit:1 -o file:expout -e file:experr kyua debug first:fail 106*b0d29bc4SBrooks Davis} 107*b0d29bc4SBrooks Davis 108*b0d29bc4SBrooks Davis 109*b0d29bc4SBrooks Davisutils_test_case one_arg__no_match 110*b0d29bc4SBrooks Davisone_arg__no_match_body() { 111*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 112*b0d29bc4SBrooks Davissyntax(2) 113*b0d29bc4SBrooks Davistest_suite("integration") 114*b0d29bc4SBrooks Davisatf_test_program{name="first"} 115*b0d29bc4SBrooks Davisatf_test_program{name="second"} 116*b0d29bc4SBrooks DavisEOF 117*b0d29bc4SBrooks Davis utils_cp_helper expect_all_pass first 118*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass second 119*b0d29bc4SBrooks Davis 120*b0d29bc4SBrooks Davis cat >experr <<EOF 121*b0d29bc4SBrooks Daviskyua: E: Unknown test case 'second:die'. 122*b0d29bc4SBrooks DavisEOF 123*b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e file:experr kyua debug second:die 124*b0d29bc4SBrooks Davis} 125*b0d29bc4SBrooks Davis 126*b0d29bc4SBrooks Davis 127*b0d29bc4SBrooks Davisutils_test_case one_arg__no_test_case 128*b0d29bc4SBrooks Davisone_arg__no_test_case_body() { 129*b0d29bc4SBrooks Davis # CHECK_STYLE_DISABLE 130*b0d29bc4SBrooks Davis cat >experr <<EOF 131*b0d29bc4SBrooks DavisUsage error for command debug: 'foo' is not a test case identifier (missing ':'?). 132*b0d29bc4SBrooks DavisType 'kyua help debug' for usage information. 133*b0d29bc4SBrooks DavisEOF 134*b0d29bc4SBrooks Davis # CHECK_STYLE_ENABLE 135*b0d29bc4SBrooks Davis atf_check -s exit:3 -o empty -e file:experr kyua debug foo 136*b0d29bc4SBrooks Davis} 137*b0d29bc4SBrooks Davis 138*b0d29bc4SBrooks Davis 139*b0d29bc4SBrooks Davisutils_test_case one_arg__bad_filter 140*b0d29bc4SBrooks Davisone_arg__bad_filter_body() { 141*b0d29bc4SBrooks Davis cat >experr <<EOF 142*b0d29bc4SBrooks Daviskyua: E: Test case component in 'foo:' is empty. 143*b0d29bc4SBrooks DavisEOF 144*b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e file:experr kyua debug foo: 145*b0d29bc4SBrooks Davis} 146*b0d29bc4SBrooks Davis 147*b0d29bc4SBrooks Davis 148*b0d29bc4SBrooks Davisutils_test_case body_and_cleanup 149*b0d29bc4SBrooks Davisbody_and_cleanup_body() { 150*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 151*b0d29bc4SBrooks Davissyntax(2) 152*b0d29bc4SBrooks Davistest_suite("integration") 153*b0d29bc4SBrooks Davisatf_test_program{name="single"} 154*b0d29bc4SBrooks DavisEOF 155*b0d29bc4SBrooks Davis utils_cp_helper metadata single 156*b0d29bc4SBrooks Davis 157*b0d29bc4SBrooks Davis cat >expout <<EOF 158*b0d29bc4SBrooks Davissingle:with_cleanup -> passed 159*b0d29bc4SBrooks DavisEOF 160*b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty kyua debug \ 161*b0d29bc4SBrooks Davis --stdout=saved.out --stderr=saved.err single:with_cleanup 162*b0d29bc4SBrooks Davis 163*b0d29bc4SBrooks Davis cat >expout <<EOF 164*b0d29bc4SBrooks DavisBody message to stdout 165*b0d29bc4SBrooks DavisCleanup message to stdout 166*b0d29bc4SBrooks DavisEOF 167*b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty cat saved.out 168*b0d29bc4SBrooks Davis 169*b0d29bc4SBrooks Davis cat >experr <<EOF 170*b0d29bc4SBrooks DavisBody message to stderr 171*b0d29bc4SBrooks DavisCleanup message to stderr 172*b0d29bc4SBrooks DavisEOF 173*b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:experr -e empty cat saved.err 174*b0d29bc4SBrooks Davis} 175*b0d29bc4SBrooks Davis 176*b0d29bc4SBrooks Davis 177*b0d29bc4SBrooks Davisutils_test_case stdout_stderr_flags 178*b0d29bc4SBrooks Davisstdout_stderr_flags_body() { 179*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 180*b0d29bc4SBrooks Davissyntax(2) 181*b0d29bc4SBrooks Davistest_suite("integration") 182*b0d29bc4SBrooks Davisatf_test_program{name="first"} 183*b0d29bc4SBrooks Davisatf_test_program{name="second"} 184*b0d29bc4SBrooks DavisEOF 185*b0d29bc4SBrooks Davis utils_cp_helper expect_all_pass first 186*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass second 187*b0d29bc4SBrooks Davis 188*b0d29bc4SBrooks Davis cat >expout <<EOF 189*b0d29bc4SBrooks Davissecond:pass -> passed 190*b0d29bc4SBrooks DavisEOF 191*b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e empty kyua debug \ 192*b0d29bc4SBrooks Davis --stdout=saved.out --stderr=saved.err second:pass 193*b0d29bc4SBrooks Davis 194*b0d29bc4SBrooks Davis cat >expout <<EOF 195*b0d29bc4SBrooks DavisThis is the stdout of pass 196*b0d29bc4SBrooks DavisEOF 197*b0d29bc4SBrooks Davis cmp -s saved.out expout || atf_fail "--stdout did not redirect the" \ 198*b0d29bc4SBrooks Davis "standard output to the desired file" 199*b0d29bc4SBrooks Davis 200*b0d29bc4SBrooks Davis cat >experr <<EOF 201*b0d29bc4SBrooks DavisThis is the stderr of pass 202*b0d29bc4SBrooks DavisEOF 203*b0d29bc4SBrooks Davis cmp -s saved.err experr || atf_fail "--stderr did not redirect the" \ 204*b0d29bc4SBrooks Davis "standard error to the desired file" 205*b0d29bc4SBrooks Davis} 206*b0d29bc4SBrooks Davis 207*b0d29bc4SBrooks Davis 208*b0d29bc4SBrooks Davisutils_test_case args_are_relative 209*b0d29bc4SBrooks Davisargs_are_relative_body() { 210*b0d29bc4SBrooks Davis mkdir root 211*b0d29bc4SBrooks Davis cat >root/Kyuafile <<EOF 212*b0d29bc4SBrooks Davissyntax(2) 213*b0d29bc4SBrooks Davistest_suite("integration") 214*b0d29bc4SBrooks Davisinclude("subdir/Kyuafile") 215*b0d29bc4SBrooks Davisatf_test_program{name="prog"} 216*b0d29bc4SBrooks DavisEOF 217*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass root/prog 218*b0d29bc4SBrooks Davis 219*b0d29bc4SBrooks Davis mkdir root/subdir 220*b0d29bc4SBrooks Davis cat >root/subdir/Kyuafile <<EOF 221*b0d29bc4SBrooks Davissyntax(2) 222*b0d29bc4SBrooks Davistest_suite("integration") 223*b0d29bc4SBrooks Davisatf_test_program{name="prog"} 224*b0d29bc4SBrooks DavisEOF 225*b0d29bc4SBrooks Davis utils_cp_helper simple_some_fail root/subdir/prog 226*b0d29bc4SBrooks Davis 227*b0d29bc4SBrooks Davis cat >expout <<EOF 228*b0d29bc4SBrooks DavisThis is the stdout of fail 229*b0d29bc4SBrooks Davissubdir/prog:fail -> failed: This fails on purpose 230*b0d29bc4SBrooks DavisEOF 231*b0d29bc4SBrooks Davis cat >experr <<EOF 232*b0d29bc4SBrooks DavisThis is the stderr of fail 233*b0d29bc4SBrooks DavisEOF 234*b0d29bc4SBrooks Davis atf_check -s exit:1 -o file:expout -e file:experr kyua debug \ 235*b0d29bc4SBrooks Davis -k "$(pwd)/root/Kyuafile" subdir/prog:fail 236*b0d29bc4SBrooks Davis} 237*b0d29bc4SBrooks Davis 238*b0d29bc4SBrooks Davis 239*b0d29bc4SBrooks Davisutils_test_case only_load_used_test_programs 240*b0d29bc4SBrooks Davisonly_load_used_test_programs_body() { 241*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 242*b0d29bc4SBrooks Davissyntax(2) 243*b0d29bc4SBrooks Davistest_suite("integration") 244*b0d29bc4SBrooks Davisatf_test_program{name="first"} 245*b0d29bc4SBrooks Davisatf_test_program{name="second"} 246*b0d29bc4SBrooks DavisEOF 247*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass first 248*b0d29bc4SBrooks Davis utils_cp_helper bad_test_program second 249*b0d29bc4SBrooks Davis 250*b0d29bc4SBrooks Davis cat >expout <<EOF 251*b0d29bc4SBrooks DavisThis is the stdout of pass 252*b0d29bc4SBrooks Davisfirst:pass -> passed 253*b0d29bc4SBrooks DavisEOF 254*b0d29bc4SBrooks Davis cat >experr <<EOF 255*b0d29bc4SBrooks DavisThis is the stderr of pass 256*b0d29bc4SBrooks DavisEOF 257*b0d29bc4SBrooks Davis CREATE_COOKIE="$(pwd)/cookie"; export CREATE_COOKIE 258*b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e file:experr kyua debug first:pass 259*b0d29bc4SBrooks Davis if [ -f "${CREATE_COOKIE}" ]; then 260*b0d29bc4SBrooks Davis atf_fail "An unmatched test case has been executed, which harms" \ 261*b0d29bc4SBrooks Davis "performance" 262*b0d29bc4SBrooks Davis fi 263*b0d29bc4SBrooks Davis} 264*b0d29bc4SBrooks Davis 265*b0d29bc4SBrooks Davis 266*b0d29bc4SBrooks Davisutils_test_case config_behavior 267*b0d29bc4SBrooks Davisconfig_behavior_body() { 268*b0d29bc4SBrooks Davis cat >"my-config" <<EOF 269*b0d29bc4SBrooks Davissyntax(2) 270*b0d29bc4SBrooks Davistest_suites.suite1["the-variable"] = "value1" 271*b0d29bc4SBrooks Davistest_suites.suite2["the-variable"] = "override me" 272*b0d29bc4SBrooks DavisEOF 273*b0d29bc4SBrooks Davis 274*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 275*b0d29bc4SBrooks Davissyntax(2) 276*b0d29bc4SBrooks Davisatf_test_program{name="config1", test_suite="suite1"} 277*b0d29bc4SBrooks Davisatf_test_program{name="config2", test_suite="suite2"} 278*b0d29bc4SBrooks Davisatf_test_program{name="config3", test_suite="suite3"} 279*b0d29bc4SBrooks DavisEOF 280*b0d29bc4SBrooks Davis utils_cp_helper config config1 281*b0d29bc4SBrooks Davis utils_cp_helper config config2 282*b0d29bc4SBrooks Davis utils_cp_helper config config3 283*b0d29bc4SBrooks Davis 284*b0d29bc4SBrooks Davis atf_check -s exit:1 -o match:'failed' -e empty \ 285*b0d29bc4SBrooks Davis kyua -c my-config -v test_suites.suite2.the-variable=value2 \ 286*b0d29bc4SBrooks Davis debug config1:get_variable 287*b0d29bc4SBrooks Davis atf_check -s exit:0 -o match:'passed' -e empty \ 288*b0d29bc4SBrooks Davis kyua -c my-config -v test_suites.suite2.the-variable=value2 \ 289*b0d29bc4SBrooks Davis debug config2:get_variable 290*b0d29bc4SBrooks Davis atf_check -s exit:0 -o match:'skipped' -e empty \ 291*b0d29bc4SBrooks Davis kyua -c my-config -v test_suites.suite2.the-variable=value2 \ 292*b0d29bc4SBrooks Davis debug config3:get_variable 293*b0d29bc4SBrooks Davis} 294*b0d29bc4SBrooks Davis 295*b0d29bc4SBrooks Davis 296*b0d29bc4SBrooks Davisutils_test_case build_root_flag 297*b0d29bc4SBrooks Davisbuild_root_flag_body() { 298*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 299*b0d29bc4SBrooks Davissyntax(2) 300*b0d29bc4SBrooks Davistest_suite("integration") 301*b0d29bc4SBrooks Davisatf_test_program{name="first"} 302*b0d29bc4SBrooks Davisatf_test_program{name="second"} 303*b0d29bc4SBrooks DavisEOF 304*b0d29bc4SBrooks Davis mkdir build 305*b0d29bc4SBrooks Davis utils_cp_helper expect_all_pass build/first 306*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass build/second 307*b0d29bc4SBrooks Davis 308*b0d29bc4SBrooks Davis cat >expout <<EOF 309*b0d29bc4SBrooks DavisThis is the stdout of pass 310*b0d29bc4SBrooks Davissecond:pass -> passed 311*b0d29bc4SBrooks DavisEOF 312*b0d29bc4SBrooks Daviscat >experr <<EOF 313*b0d29bc4SBrooks DavisThis is the stderr of pass 314*b0d29bc4SBrooks DavisEOF 315*b0d29bc4SBrooks Davis atf_check -s exit:0 -o file:expout -e file:experr \ 316*b0d29bc4SBrooks Davis kyua debug --build-root=build second:pass 317*b0d29bc4SBrooks Davis} 318*b0d29bc4SBrooks Davis 319*b0d29bc4SBrooks Davis 320*b0d29bc4SBrooks Davisutils_test_case kyuafile_flag__ok 321*b0d29bc4SBrooks Daviskyuafile_flag__ok_body() { 322*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 323*b0d29bc4SBrooks DavisThis file is bogus but it is not loaded. 324*b0d29bc4SBrooks DavisEOF 325*b0d29bc4SBrooks Davis 326*b0d29bc4SBrooks Davis cat >myfile <<EOF 327*b0d29bc4SBrooks Davissyntax(2) 328*b0d29bc4SBrooks Davistest_suite("hello-world") 329*b0d29bc4SBrooks Davisatf_test_program{name="sometest"} 330*b0d29bc4SBrooks DavisEOF 331*b0d29bc4SBrooks Davis utils_cp_helper simple_all_pass sometest 332*b0d29bc4SBrooks Davis 333*b0d29bc4SBrooks Davis atf_check -s exit:0 -o match:passed -e empty kyua test -k myfile sometest 334*b0d29bc4SBrooks Davis atf_check -s exit:0 -o match:passed -e empty kyua test --kyuafile=myfile \ 335*b0d29bc4SBrooks Davis sometest 336*b0d29bc4SBrooks Davis} 337*b0d29bc4SBrooks Davis 338*b0d29bc4SBrooks Davis 339*b0d29bc4SBrooks Davisutils_test_case missing_kyuafile 340*b0d29bc4SBrooks Davismissing_kyuafile_body() { 341*b0d29bc4SBrooks Davis cat >experr <<EOF 342*b0d29bc4SBrooks Daviskyua: E: Load of 'Kyuafile' failed: File 'Kyuafile' not found. 343*b0d29bc4SBrooks DavisEOF 344*b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e file:experr kyua debug foo:bar 345*b0d29bc4SBrooks Davis} 346*b0d29bc4SBrooks Davis 347*b0d29bc4SBrooks Davis 348*b0d29bc4SBrooks Davisutils_test_case bogus_kyuafile 349*b0d29bc4SBrooks Davisbogus_kyuafile_body() { 350*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 351*b0d29bc4SBrooks DavisHello, world. 352*b0d29bc4SBrooks DavisEOF 353*b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty \ 354*b0d29bc4SBrooks Davis -e match:"Load of 'Kyuafile' failed: .* Kyuafile:2:" kyua list 355*b0d29bc4SBrooks Davis} 356*b0d29bc4SBrooks Davis 357*b0d29bc4SBrooks Davis 358*b0d29bc4SBrooks Davisutils_test_case bogus_test_program 359*b0d29bc4SBrooks Davisbogus_test_program_body() { 360*b0d29bc4SBrooks Davis cat >Kyuafile <<EOF 361*b0d29bc4SBrooks Davissyntax(2) 362*b0d29bc4SBrooks Davistest_suite("integration") 363*b0d29bc4SBrooks Davisatf_test_program{name="crash_on_list"} 364*b0d29bc4SBrooks Davisatf_test_program{name="non_executable"} 365*b0d29bc4SBrooks DavisEOF 366*b0d29bc4SBrooks Davis utils_cp_helper bad_test_program crash_on_list 367*b0d29bc4SBrooks Davis echo 'I am not executable' >non_executable 368*b0d29bc4SBrooks Davis 369*b0d29bc4SBrooks Davis cat >experr <<EOF 370*b0d29bc4SBrooks Daviskyua: E: Unknown test case 'crash_on_list:a'. 371*b0d29bc4SBrooks DavisEOF 372*b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e file:experr kyua debug crash_on_list:a 373*b0d29bc4SBrooks Davis 374*b0d29bc4SBrooks Davis cat >experr <<EOF 375*b0d29bc4SBrooks Daviskyua: E: Unknown test case 'non_executable:a'. 376*b0d29bc4SBrooks DavisEOF 377*b0d29bc4SBrooks Davis atf_check -s exit:2 -o empty -e file:experr kyua debug non_executable:a 378*b0d29bc4SBrooks Davis 379*b0d29bc4SBrooks Davis # CHECK_STYLE_DISABLE 380*b0d29bc4SBrooks Davis cat >expout <<EOF 381*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 '' 382*b0d29bc4SBrooks DavisEOF 383*b0d29bc4SBrooks Davis # CHECK_STYLE_ENABLE 384*b0d29bc4SBrooks Davis atf_check -s exit:1 -o file:expout -e empty kyua debug \ 385*b0d29bc4SBrooks Davis crash_on_list:__test_cases_list__ 386*b0d29bc4SBrooks Davis 387*b0d29bc4SBrooks Davis # CHECK_STYLE_DISABLE 388*b0d29bc4SBrooks Davis cat >expout <<EOF 389*b0d29bc4SBrooks Davisnon_executable:__test_cases_list__ -> broken: Permission denied to run test program 390*b0d29bc4SBrooks DavisEOF 391*b0d29bc4SBrooks Davis # CHECK_STYLE_ENABLE 392*b0d29bc4SBrooks Davis atf_check -s exit:1 -o file:expout -e empty kyua debug \ 393*b0d29bc4SBrooks Davis non_executable:__test_cases_list__ 394*b0d29bc4SBrooks Davis} 395*b0d29bc4SBrooks Davis 396*b0d29bc4SBrooks Davis 397*b0d29bc4SBrooks Davisatf_init_test_cases() { 398*b0d29bc4SBrooks Davis atf_add_test_case no_args 399*b0d29bc4SBrooks Davis atf_add_test_case many_args 400*b0d29bc4SBrooks Davis atf_add_test_case one_arg__ok_pass 401*b0d29bc4SBrooks Davis atf_add_test_case one_arg__ok_fail 402*b0d29bc4SBrooks Davis atf_add_test_case one_arg__no_match 403*b0d29bc4SBrooks Davis atf_add_test_case one_arg__no_test_case 404*b0d29bc4SBrooks Davis atf_add_test_case one_arg__bad_filter 405*b0d29bc4SBrooks Davis 406*b0d29bc4SBrooks Davis atf_add_test_case body_and_cleanup 407*b0d29bc4SBrooks Davis 408*b0d29bc4SBrooks Davis atf_add_test_case stdout_stderr_flags 409*b0d29bc4SBrooks Davis 410*b0d29bc4SBrooks Davis atf_add_test_case args_are_relative 411*b0d29bc4SBrooks Davis 412*b0d29bc4SBrooks Davis atf_add_test_case only_load_used_test_programs 413*b0d29bc4SBrooks Davis 414*b0d29bc4SBrooks Davis atf_add_test_case config_behavior 415*b0d29bc4SBrooks Davis 416*b0d29bc4SBrooks Davis atf_add_test_case build_root_flag 417*b0d29bc4SBrooks Davis atf_add_test_case kyuafile_flag__ok 418*b0d29bc4SBrooks Davis atf_add_test_case missing_kyuafile 419*b0d29bc4SBrooks Davis atf_add_test_case bogus_kyuafile 420*b0d29bc4SBrooks Davis atf_add_test_case bogus_test_program 421*b0d29bc4SBrooks Davis} 422