1*00b67f09SDavid van Moolenbroek# 2*00b67f09SDavid van Moolenbroek# Automated Testing Framework (atf) 3*00b67f09SDavid van Moolenbroek# 4*00b67f09SDavid van Moolenbroek# Copyright (c) 2007 The NetBSD Foundation, Inc. 5*00b67f09SDavid van Moolenbroek# All rights reserved. 6*00b67f09SDavid van Moolenbroek# 7*00b67f09SDavid van Moolenbroek# Redistribution and use in source and binary forms, with or without 8*00b67f09SDavid van Moolenbroek# modification, are permitted provided that the following conditions 9*00b67f09SDavid van Moolenbroek# are met: 10*00b67f09SDavid van Moolenbroek# 1. Redistributions of source code must retain the above copyright 11*00b67f09SDavid van Moolenbroek# notice, this list of conditions and the following disclaimer. 12*00b67f09SDavid van Moolenbroek# 2. Redistributions in binary form must reproduce the above copyright 13*00b67f09SDavid van Moolenbroek# notice, this list of conditions and the following disclaimer in the 14*00b67f09SDavid van Moolenbroek# documentation and/or other materials provided with the distribution. 15*00b67f09SDavid van Moolenbroek# 16*00b67f09SDavid van Moolenbroek# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17*00b67f09SDavid van Moolenbroek# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18*00b67f09SDavid van Moolenbroek# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19*00b67f09SDavid van Moolenbroek# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20*00b67f09SDavid van Moolenbroek# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21*00b67f09SDavid van Moolenbroek# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*00b67f09SDavid van Moolenbroek# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23*00b67f09SDavid van Moolenbroek# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*00b67f09SDavid van Moolenbroek# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25*00b67f09SDavid van Moolenbroek# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26*00b67f09SDavid van Moolenbroek# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27*00b67f09SDavid van Moolenbroek# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28*00b67f09SDavid van Moolenbroek# 29*00b67f09SDavid van Moolenbroek 30*00b67f09SDavid van Moolenbroekcreate_helpers() 31*00b67f09SDavid van Moolenbroek{ 32*00b67f09SDavid van Moolenbroek mkdir dir1 33*00b67f09SDavid van Moolenbroek cp $(atf_get_srcdir)/pass_helper dir1/tp1 34*00b67f09SDavid van Moolenbroek cp $(atf_get_srcdir)/fail_helper dir1/tp2 35*00b67f09SDavid van Moolenbroek cp $(atf_get_srcdir)/pass_helper tp3 36*00b67f09SDavid van Moolenbroek cp $(atf_get_srcdir)/fail_helper tp4 37*00b67f09SDavid van Moolenbroek 38*00b67f09SDavid van Moolenbroek cat >tp5 <<EOF 39*00b67f09SDavid van Moolenbroek#! $(atf-config -t atf_shell) 40*00b67f09SDavid van Moolenbroekecho foo 41*00b67f09SDavid van MoolenbroekEOF 42*00b67f09SDavid van Moolenbroek chmod +x tp5 43*00b67f09SDavid van Moolenbroek 44*00b67f09SDavid van Moolenbroek cat >Atffile <<EOF 45*00b67f09SDavid van MoolenbroekContent-Type: application/X-atf-atffile; version="1" 46*00b67f09SDavid van Moolenbroek 47*00b67f09SDavid van Moolenbroekprop: test-suite = atf 48*00b67f09SDavid van Moolenbroek 49*00b67f09SDavid van Moolenbroektp: dir1 50*00b67f09SDavid van Moolenbroektp: tp3 51*00b67f09SDavid van Moolenbroektp: tp4 52*00b67f09SDavid van Moolenbroektp: tp5 53*00b67f09SDavid van MoolenbroekEOF 54*00b67f09SDavid van Moolenbroek 55*00b67f09SDavid van Moolenbroek cat >dir1/Atffile <<EOF 56*00b67f09SDavid van MoolenbroekContent-Type: application/X-atf-atffile; version="1" 57*00b67f09SDavid van Moolenbroek 58*00b67f09SDavid van Moolenbroekprop: test-suite = atf 59*00b67f09SDavid van Moolenbroek 60*00b67f09SDavid van Moolenbroektp: tp1 61*00b67f09SDavid van Moolenbroektp: tp2 62*00b67f09SDavid van MoolenbroekEOF 63*00b67f09SDavid van Moolenbroek} 64*00b67f09SDavid van Moolenbroek 65*00b67f09SDavid van Moolenbroekrun_helpers() 66*00b67f09SDavid van Moolenbroek{ 67*00b67f09SDavid van Moolenbroek mkdir etc 68*00b67f09SDavid van Moolenbroek cat >etc/atf-run.hooks <<EOF 69*00b67f09SDavid van Moolenbroek#! $(atf-config -t atf_shell) 70*00b67f09SDavid van Moolenbroek 71*00b67f09SDavid van Moolenbroekinfo_start_hook() 72*00b67f09SDavid van Moolenbroek{ 73*00b67f09SDavid van Moolenbroek atf_tps_writer_info "startinfo" "A value" 74*00b67f09SDavid van Moolenbroek} 75*00b67f09SDavid van Moolenbroek 76*00b67f09SDavid van Moolenbroekinfo_end_hook() 77*00b67f09SDavid van Moolenbroek{ 78*00b67f09SDavid van Moolenbroek atf_tps_writer_info "endinfo" "Another value" 79*00b67f09SDavid van Moolenbroek} 80*00b67f09SDavid van MoolenbroekEOF 81*00b67f09SDavid van Moolenbroek echo "Using atf-run to run helpers" 82*00b67f09SDavid van Moolenbroek ATF_CONFDIR=$(pwd)/etc atf-run >tps.out 2>/dev/null 83*00b67f09SDavid van Moolenbroek rm -rf etc 84*00b67f09SDavid van Moolenbroek} 85*00b67f09SDavid van Moolenbroek 86*00b67f09SDavid van Moolenbroekatf_test_case default 87*00b67f09SDavid van Moolenbroekdefault_head() 88*00b67f09SDavid van Moolenbroek{ 89*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks that the default output uses the ticker" \ 90*00b67f09SDavid van Moolenbroek "format" 91*00b67f09SDavid van Moolenbroek} 92*00b67f09SDavid van Moolenbroekdefault_body() 93*00b67f09SDavid van Moolenbroek{ 94*00b67f09SDavid van Moolenbroek create_helpers 95*00b67f09SDavid van Moolenbroek run_helpers 96*00b67f09SDavid van Moolenbroek 97*00b67f09SDavid van Moolenbroek # Check that the default output uses the ticker format. 98*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o match:'test cases' -o match:'Failed test cases' \ 99*00b67f09SDavid van Moolenbroek -o match:'Summary for' -e empty -x 'atf-report <tps.out' 100*00b67f09SDavid van Moolenbroek} 101*00b67f09SDavid van Moolenbroek 102*00b67f09SDavid van Moolenbroek# XXX The test for all expect_ values should be intermixed with the other 103*00b67f09SDavid van Moolenbroek# tests. However, to do that, we need to migrate to using C helpers for 104*00b67f09SDavid van Moolenbroek# simplicity in raising signals... 105*00b67f09SDavid van Moolenbroekatf_test_case expect 106*00b67f09SDavid van Moolenbroekexpect_body() 107*00b67f09SDavid van Moolenbroek{ 108*00b67f09SDavid van Moolenbroek ln -s "$(atf_get_srcdir)/../atf-run/expect_helpers" . 109*00b67f09SDavid van Moolenbroek cat >Atffile <<EOF 110*00b67f09SDavid van MoolenbroekContent-Type: application/X-atf-atffile; version="1" 111*00b67f09SDavid van Moolenbroek 112*00b67f09SDavid van Moolenbroekprop: test-suite = atf 113*00b67f09SDavid van Moolenbroek 114*00b67f09SDavid van Moolenbroektp: expect_helpers 115*00b67f09SDavid van MoolenbroekEOF 116*00b67f09SDavid van Moolenbroek run_helpers 117*00b67f09SDavid van Moolenbroek 118*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_BEGIN 119*00b67f09SDavid van Moolenbroek cat >expout <<EOF 120*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, death_and_exit, expected_death, Exit case 121*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, death_and_signal, expected_death, Signal case 122*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, death_but_pass, failed, Test case was expected to terminate abruptly but it continued execution 123*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, exit_any_and_exit, expected_exit, Call will exit 124*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, exit_but_pass, failed, Test case was expected to exit cleanly but it continued execution 125*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, exit_code_and_exit, expected_exit, Call will exit 126*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, fail_and_fail_check, expected_failure, And fail again: 2 checks failed as expected; see output for more details 127*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, fail_and_fail_requirement, expected_failure, Fail reason: The failure 128*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, fail_but_pass, failed, Test case was expecting a failure but none were raised 129*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, pass_and_pass, passed 130*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, pass_but_fail_check, failed, 1 checks failed; see output for more details 131*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, pass_but_fail_requirement, failed, Some reason 132*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, signal_any_and_signal, expected_signal, Call will signal 133*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, signal_but_pass, failed, Test case was expected to receive a termination signal but it continued execution 134*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, signal_no_and_signal, expected_signal, Call will signal 135*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, timeout_and_hang, expected_timeout, Will overrun 136*00b67f09SDavid van Moolenbroektc, #.#, expect_helpers, timeout_but_pass, failed, Test case was expected to hang but it continued execution 137*00b67f09SDavid van Moolenbroektp, #.#, expect_helpers, failed 138*00b67f09SDavid van MoolenbroekEOF 139*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_END 140*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o file:expout -e empty -x \ 141*00b67f09SDavid van Moolenbroek "atf-report -o csv:- <tps.out | " \ 142*00b67f09SDavid van Moolenbroek "sed -E -e 's/[0-9]+.[0-9]{6}, /#.#, /'" 143*00b67f09SDavid van Moolenbroek 144*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_BEGIN 145*00b67f09SDavid van Moolenbroek cat >expout <<EOF 146*00b67f09SDavid van Moolenbroekexpect_helpers (1/1): 17 test cases 147*00b67f09SDavid van Moolenbroek death_and_exit: [#.#s] Expected failure: Exit case 148*00b67f09SDavid van Moolenbroek death_and_signal: [#.#s] Expected failure: Signal case 149*00b67f09SDavid van Moolenbroek death_but_pass: [#.#s] Failed: Test case was expected to terminate abruptly but it continued execution 150*00b67f09SDavid van Moolenbroek exit_any_and_exit: [#.#s] Expected failure: Call will exit 151*00b67f09SDavid van Moolenbroek exit_but_pass: [#.#s] Failed: Test case was expected to exit cleanly but it continued execution 152*00b67f09SDavid van Moolenbroek exit_code_and_exit: [#.#s] Expected failure: Call will exit 153*00b67f09SDavid van Moolenbroek fail_and_fail_check: [#.#s] Expected failure: And fail again: 2 checks failed as expected; see output for more details 154*00b67f09SDavid van Moolenbroek fail_and_fail_requirement: [#.#s] Expected failure: Fail reason: The failure 155*00b67f09SDavid van Moolenbroek fail_but_pass: [#.#s] Failed: Test case was expecting a failure but none were raised 156*00b67f09SDavid van Moolenbroek pass_and_pass: [#.#s] Passed. 157*00b67f09SDavid van Moolenbroek pass_but_fail_check: [#.#s] Failed: 1 checks failed; see output for more details 158*00b67f09SDavid van Moolenbroek pass_but_fail_requirement: [#.#s] Failed: Some reason 159*00b67f09SDavid van Moolenbroek signal_any_and_signal: [#.#s] Expected failure: Call will signal 160*00b67f09SDavid van Moolenbroek signal_but_pass: [#.#s] Failed: Test case was expected to receive a termination signal but it continued execution 161*00b67f09SDavid van Moolenbroek signal_no_and_signal: [#.#s] Expected failure: Call will signal 162*00b67f09SDavid van Moolenbroek timeout_and_hang: [#.#s] Expected failure: Will overrun 163*00b67f09SDavid van Moolenbroek timeout_but_pass: [#.#s] Failed: Test case was expected to hang but it continued execution 164*00b67f09SDavid van Moolenbroek[#.#s] 165*00b67f09SDavid van Moolenbroek 166*00b67f09SDavid van MoolenbroekTest cases for known bugs: 167*00b67f09SDavid van Moolenbroek expect_helpers:death_and_exit: Exit case 168*00b67f09SDavid van Moolenbroek expect_helpers:death_and_signal: Signal case 169*00b67f09SDavid van Moolenbroek expect_helpers:exit_any_and_exit: Call will exit 170*00b67f09SDavid van Moolenbroek expect_helpers:exit_code_and_exit: Call will exit 171*00b67f09SDavid van Moolenbroek expect_helpers:fail_and_fail_check: And fail again: 2 checks failed as expected; see output for more details 172*00b67f09SDavid van Moolenbroek expect_helpers:fail_and_fail_requirement: Fail reason: The failure 173*00b67f09SDavid van Moolenbroek expect_helpers:signal_any_and_signal: Call will signal 174*00b67f09SDavid van Moolenbroek expect_helpers:signal_no_and_signal: Call will signal 175*00b67f09SDavid van Moolenbroek expect_helpers:timeout_and_hang: Will overrun 176*00b67f09SDavid van Moolenbroek 177*00b67f09SDavid van MoolenbroekFailed test cases: 178*00b67f09SDavid van Moolenbroek expect_helpers:death_but_pass, expect_helpers:exit_but_pass, expect_helpers:fail_but_pass, expect_helpers:pass_but_fail_check, expect_helpers:pass_but_fail_requirement, expect_helpers:signal_but_pass, expect_helpers:timeout_but_pass 179*00b67f09SDavid van Moolenbroek 180*00b67f09SDavid van MoolenbroekSummary for 1 test programs: 181*00b67f09SDavid van Moolenbroek 1 passed test cases. 182*00b67f09SDavid van Moolenbroek 7 failed test cases. 183*00b67f09SDavid van Moolenbroek 9 expected failed test cases. 184*00b67f09SDavid van Moolenbroek 0 skipped test cases. 185*00b67f09SDavid van MoolenbroekEOF 186*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_END 187*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o file:expout -e empty -x \ 188*00b67f09SDavid van Moolenbroek "atf-report -o ticker:- <tps.out | " \ 189*00b67f09SDavid van Moolenbroek "sed -E -e 's/[0-9]+.[0-9]{6}/#.#/'" 190*00b67f09SDavid van Moolenbroek 191*00b67f09SDavid van Moolenbroek # Just ensure that this does not crash for now... 192*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty -x "atf-report -o xml:- <tps.out" 193*00b67f09SDavid van Moolenbroek} 194*00b67f09SDavid van Moolenbroek 195*00b67f09SDavid van Moolenbroekatf_test_case oflag 196*00b67f09SDavid van Moolenbroekoflag_head() 197*00b67f09SDavid van Moolenbroek{ 198*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks that the -o flag works" 199*00b67f09SDavid van Moolenbroek} 200*00b67f09SDavid van Moolenbroekoflag_body() 201*00b67f09SDavid van Moolenbroek{ 202*00b67f09SDavid van Moolenbroek create_helpers 203*00b67f09SDavid van Moolenbroek run_helpers 204*00b67f09SDavid van Moolenbroek 205*00b67f09SDavid van Moolenbroek # Get the default output. 206*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o save:stdout -e empty -x 'atf-report <tps.out' 207*00b67f09SDavid van Moolenbroek mv stdout defout 208*00b67f09SDavid van Moolenbroek 209*00b67f09SDavid van Moolenbroek # Check that changing the stdout output works. 210*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o save:stdout -e empty -x 'atf-report -o csv:- <tps.out' 211*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e empty cmp -s defout stdout 212*00b67f09SDavid van Moolenbroek cp stdout expcsv 213*00b67f09SDavid van Moolenbroek 214*00b67f09SDavid van Moolenbroek # Check that sending the output to a file does not write to stdout. 215*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty -x 'atf-report -o csv:fmt.out <tps.out' 216*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty cmp -s expcsv fmt.out 217*00b67f09SDavid van Moolenbroek rm -f fmt.out 218*00b67f09SDavid van Moolenbroek 219*00b67f09SDavid van Moolenbroek # Check that defining two outputs using the same format works. 220*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty -x \ 221*00b67f09SDavid van Moolenbroek 'atf-report -o csv:fmt.out -o csv:fmt2.out <tps.out' 222*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty cmp -s expcsv fmt.out 223*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty cmp -s fmt.out fmt2.out 224*00b67f09SDavid van Moolenbroek rm -f fmt.out fmt2.out 225*00b67f09SDavid van Moolenbroek 226*00b67f09SDavid van Moolenbroek # Check that defining two outputs using different formats works. 227*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty -x \ 228*00b67f09SDavid van Moolenbroek 'atf-report -o csv:fmt.out -o ticker:fmt2.out <tps.out' 229*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o empty -e empty cmp -s expcsv fmt.out 230*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e empty cmp -s fmt.out fmt2.out 231*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty grep "test cases" fmt2.out 232*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty grep "Failed test cases" fmt2.out 233*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o ignore -e empty grep "Summary for" fmt2.out 234*00b67f09SDavid van Moolenbroek rm -f fmt.out fmt2.out 235*00b67f09SDavid van Moolenbroek 236*00b67f09SDavid van Moolenbroek # Check that defining two outputs over the same file does not work. 237*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e match:'more than once' -x \ 238*00b67f09SDavid van Moolenbroek 'atf-report -o csv:fmt.out -o ticker:fmt.out <tps.out' 239*00b67f09SDavid van Moolenbroek rm -f fmt.out 240*00b67f09SDavid van Moolenbroek 241*00b67f09SDavid van Moolenbroek # Check that defining two outputs over stdout (but using different 242*00b67f09SDavid van Moolenbroek # paths) does not work. 243*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e match:'more than once' -x \ 244*00b67f09SDavid van Moolenbroek 'atf-report -o csv:- -o ticker:/dev/stdout <tps.out' 245*00b67f09SDavid van Moolenbroek rm -f fmt.out 246*00b67f09SDavid van Moolenbroek} 247*00b67f09SDavid van Moolenbroek 248*00b67f09SDavid van Moolenbroekatf_test_case output_csv 249*00b67f09SDavid van Moolenbroekoutput_csv_head() 250*00b67f09SDavid van Moolenbroek{ 251*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks the CSV output format" 252*00b67f09SDavid van Moolenbroek} 253*00b67f09SDavid van Moolenbroekoutput_csv_body() 254*00b67f09SDavid van Moolenbroek{ 255*00b67f09SDavid van Moolenbroek create_helpers 256*00b67f09SDavid van Moolenbroek run_helpers 257*00b67f09SDavid van Moolenbroek 258*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_BEGIN 259*00b67f09SDavid van Moolenbroek cat >expout <<EOF 260*00b67f09SDavid van Moolenbroektc, #.#, dir1/tp1, main, passed 261*00b67f09SDavid van Moolenbroektp, #.#, dir1/tp1, passed 262*00b67f09SDavid van Moolenbroektc, #.#, dir1/tp2, main, failed, This always fails 263*00b67f09SDavid van Moolenbroektp, #.#, dir1/tp2, failed 264*00b67f09SDavid van Moolenbroektc, #.#, tp3, main, passed 265*00b67f09SDavid van Moolenbroektp, #.#, tp3, passed 266*00b67f09SDavid van Moolenbroektc, #.#, tp4, main, failed, This always fails 267*00b67f09SDavid van Moolenbroektp, #.#, tp4, failed 268*00b67f09SDavid van Moolenbroektp, #.#, tp5, bogus, Invalid format for test case list: 1: Unexpected token \`<<NEWLINE>>'; expected \`:' 269*00b67f09SDavid van MoolenbroekEOF 270*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_END 271*00b67f09SDavid van Moolenbroek 272*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o file:expout -e empty -x \ 273*00b67f09SDavid van Moolenbroek "atf-report -o csv:- <tps.out | sed -E -e 's/[0-9]+.[0-9]{6}, /#.#, /'" 274*00b67f09SDavid van Moolenbroek} 275*00b67f09SDavid van Moolenbroek 276*00b67f09SDavid van Moolenbroekatf_test_case output_ticker 277*00b67f09SDavid van Moolenbroekoutput_ticker_head() 278*00b67f09SDavid van Moolenbroek{ 279*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks the ticker output format" 280*00b67f09SDavid van Moolenbroek} 281*00b67f09SDavid van Moolenbroekoutput_ticker_body() 282*00b67f09SDavid van Moolenbroek{ 283*00b67f09SDavid van Moolenbroek create_helpers 284*00b67f09SDavid van Moolenbroek run_helpers 285*00b67f09SDavid van Moolenbroek 286*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_BEGIN 287*00b67f09SDavid van Moolenbroek cat >expout <<EOF 288*00b67f09SDavid van Moolenbroekdir1/tp1 (1/5): 1 test cases 289*00b67f09SDavid van Moolenbroek main: [#.#s] Passed. 290*00b67f09SDavid van Moolenbroek[#.#s] 291*00b67f09SDavid van Moolenbroek 292*00b67f09SDavid van Moolenbroekdir1/tp2 (2/5): 1 test cases 293*00b67f09SDavid van Moolenbroek main: [#.#s] Failed: This always fails 294*00b67f09SDavid van Moolenbroek[#.#s] 295*00b67f09SDavid van Moolenbroek 296*00b67f09SDavid van Moolenbroektp3 (3/5): 1 test cases 297*00b67f09SDavid van Moolenbroek main: [#.#s] Passed. 298*00b67f09SDavid van Moolenbroek[#.#s] 299*00b67f09SDavid van Moolenbroek 300*00b67f09SDavid van Moolenbroektp4 (4/5): 1 test cases 301*00b67f09SDavid van Moolenbroek main: [#.#s] Failed: This always fails 302*00b67f09SDavid van Moolenbroek[#.#s] 303*00b67f09SDavid van Moolenbroek 304*00b67f09SDavid van Moolenbroektp5 (5/5): 0 test cases 305*00b67f09SDavid van Moolenbroektp5: BOGUS TEST PROGRAM: Cannot trust its results because of \`Invalid format for test case list: 1: Unexpected token \`<<NEWLINE>>'; expected \`:'' 306*00b67f09SDavid van Moolenbroek[#.#s] 307*00b67f09SDavid van Moolenbroek 308*00b67f09SDavid van MoolenbroekFailed (bogus) test programs: 309*00b67f09SDavid van Moolenbroek tp5 310*00b67f09SDavid van Moolenbroek 311*00b67f09SDavid van MoolenbroekFailed test cases: 312*00b67f09SDavid van Moolenbroek dir1/tp2:main, tp4:main 313*00b67f09SDavid van Moolenbroek 314*00b67f09SDavid van MoolenbroekSummary for 5 test programs: 315*00b67f09SDavid van Moolenbroek 2 passed test cases. 316*00b67f09SDavid van Moolenbroek 2 failed test cases. 317*00b67f09SDavid van Moolenbroek 0 expected failed test cases. 318*00b67f09SDavid van Moolenbroek 0 skipped test cases. 319*00b67f09SDavid van MoolenbroekEOF 320*00b67f09SDavid van Moolenbroek 321*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o file:expout -e empty -x \ 322*00b67f09SDavid van Moolenbroek "atf-report -o ticker:- <tps.out | sed -E -e 's/[0-9]+.[0-9]{6}/#.#/'" 323*00b67f09SDavid van Moolenbroek} 324*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_END 325*00b67f09SDavid van Moolenbroek 326*00b67f09SDavid van Moolenbroekatf_test_case output_xml 327*00b67f09SDavid van Moolenbroekoutput_xml_head() 328*00b67f09SDavid van Moolenbroek{ 329*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks the XML output format" 330*00b67f09SDavid van Moolenbroek} 331*00b67f09SDavid van Moolenbroekoutput_xml_body() 332*00b67f09SDavid van Moolenbroek{ 333*00b67f09SDavid van Moolenbroek create_helpers 334*00b67f09SDavid van Moolenbroek run_helpers 335*00b67f09SDavid van Moolenbroek 336*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_BEGIN 337*00b67f09SDavid van Moolenbroek cat >expout <<EOF 338*00b67f09SDavid van Moolenbroek<?xml version="1.0" encoding="ISO-8859-1"?> 339*00b67f09SDavid van Moolenbroek<!DOCTYPE tests-results PUBLIC "-//NetBSD//DTD ATF Tests Results 0.1//EN" "http://www.NetBSD.org/XML/atf/tests-results.dtd"> 340*00b67f09SDavid van Moolenbroek 341*00b67f09SDavid van Moolenbroek<tests-results> 342*00b67f09SDavid van Moolenbroek<info class="startinfo">A value</info> 343*00b67f09SDavid van Moolenbroek<tp id="dir1/tp1"> 344*00b67f09SDavid van Moolenbroek<tc id="main"> 345*00b67f09SDavid van Moolenbroek<passed /> 346*00b67f09SDavid van Moolenbroek<tc-time>#.#</tc-time></tc> 347*00b67f09SDavid van Moolenbroek<tp-time>#.#</tp-time></tp> 348*00b67f09SDavid van Moolenbroek<tp id="dir1/tp2"> 349*00b67f09SDavid van Moolenbroek<tc id="main"> 350*00b67f09SDavid van Moolenbroek<failed>This always fails</failed> 351*00b67f09SDavid van Moolenbroek<tc-time>#.#</tc-time></tc> 352*00b67f09SDavid van Moolenbroek<tp-time>#.#</tp-time></tp> 353*00b67f09SDavid van Moolenbroek<tp id="tp3"> 354*00b67f09SDavid van Moolenbroek<tc id="main"> 355*00b67f09SDavid van Moolenbroek<passed /> 356*00b67f09SDavid van Moolenbroek<tc-time>#.#</tc-time></tc> 357*00b67f09SDavid van Moolenbroek<tp-time>#.#</tp-time></tp> 358*00b67f09SDavid van Moolenbroek<tp id="tp4"> 359*00b67f09SDavid van Moolenbroek<tc id="main"> 360*00b67f09SDavid van Moolenbroek<failed>This always fails</failed> 361*00b67f09SDavid van Moolenbroek<tc-time>#.#</tc-time></tc> 362*00b67f09SDavid van Moolenbroek<tp-time>#.#</tp-time></tp> 363*00b67f09SDavid van Moolenbroek<tp id="tp5"> 364*00b67f09SDavid van Moolenbroek<failed>Invalid format for test case list: 1: Unexpected token \`<<NEWLINE>>'; expected \`:'</failed> 365*00b67f09SDavid van Moolenbroek<tp-time>#.#</tp-time></tp> 366*00b67f09SDavid van Moolenbroek<info class="endinfo">Another value</info> 367*00b67f09SDavid van Moolenbroek</tests-results> 368*00b67f09SDavid van MoolenbroekEOF 369*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_END 370*00b67f09SDavid van Moolenbroek 371*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o file:expout -e empty -x \ 372*00b67f09SDavid van Moolenbroek "atf-report -o xml:- < tps.out | sed -E -e 's/>[0-9]+.[0-9]{6}</>#.#</'" 373*00b67f09SDavid van Moolenbroek} 374*00b67f09SDavid van Moolenbroek 375*00b67f09SDavid van Moolenbroekatf_test_case output_xml_space 376*00b67f09SDavid van Moolenbroekoutput_xml_space_head() 377*00b67f09SDavid van Moolenbroek{ 378*00b67f09SDavid van Moolenbroek atf_set "descr" "Checks that the XML output format properly preserves" \ 379*00b67f09SDavid van Moolenbroek "leading and trailing whitespace in stdout and stderr" \ 380*00b67f09SDavid van Moolenbroek "lines" 381*00b67f09SDavid van Moolenbroek} 382*00b67f09SDavid van Moolenbroekoutput_xml_space_body() 383*00b67f09SDavid van Moolenbroek{ 384*00b67f09SDavid van Moolenbroek cp $(atf_get_srcdir)/misc_helpers . 385*00b67f09SDavid van Moolenbroek cat >Atffile <<EOF 386*00b67f09SDavid van MoolenbroekContent-Type: application/X-atf-atffile; version="1" 387*00b67f09SDavid van Moolenbroek 388*00b67f09SDavid van Moolenbroekprop: test-suite = atf 389*00b67f09SDavid van Moolenbroek 390*00b67f09SDavid van Moolenbroektp: misc_helpers 391*00b67f09SDavid van MoolenbroekEOF 392*00b67f09SDavid van Moolenbroek 393*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_BEGIN 394*00b67f09SDavid van Moolenbroek cat >expout <<EOF 395*00b67f09SDavid van Moolenbroek<?xml version="1.0" encoding="ISO-8859-1"?> 396*00b67f09SDavid van Moolenbroek<!DOCTYPE tests-results PUBLIC "-//NetBSD//DTD ATF Tests Results 0.1//EN" "http://www.NetBSD.org/XML/atf/tests-results.dtd"> 397*00b67f09SDavid van Moolenbroek 398*00b67f09SDavid van Moolenbroek<tests-results> 399*00b67f09SDavid van Moolenbroek<info class="startinfo">A value</info> 400*00b67f09SDavid van Moolenbroek<tp id="misc_helpers"> 401*00b67f09SDavid van Moolenbroek<tc id="diff"> 402*00b67f09SDavid van Moolenbroek<so>--- a 2007-11-04 14:00:41.000000000 +0100</so> 403*00b67f09SDavid van Moolenbroek<so>+++ b 2007-11-04 14:00:48.000000000 +0100</so> 404*00b67f09SDavid van Moolenbroek<so>@@ -1,7 +1,7 @@</so> 405*00b67f09SDavid van Moolenbroek<so> This test is meant to simulate a diff.</so> 406*00b67f09SDavid van Moolenbroek<so> Blank space at beginning of context lines must be preserved.</so> 407*00b67f09SDavid van Moolenbroek<so> </so> 408*00b67f09SDavid van Moolenbroek<so>-First original line.</so> 409*00b67f09SDavid van Moolenbroek<so>-Second original line.</so> 410*00b67f09SDavid van Moolenbroek<so>+First modified line.</so> 411*00b67f09SDavid van Moolenbroek<so>+Second modified line.</so> 412*00b67f09SDavid van Moolenbroek<so> </so> 413*00b67f09SDavid van Moolenbroek<so> EOF</so> 414*00b67f09SDavid van Moolenbroek<passed /> 415*00b67f09SDavid van Moolenbroek<tc-time>#.#</tc-time></tc> 416*00b67f09SDavid van Moolenbroek<tp-time>#.#</tp-time></tp> 417*00b67f09SDavid van Moolenbroek<info class="endinfo">Another value</info> 418*00b67f09SDavid van Moolenbroek</tests-results> 419*00b67f09SDavid van MoolenbroekEOF 420*00b67f09SDavid van Moolenbroek# NO_CHECK_STYLE_END 421*00b67f09SDavid van Moolenbroek 422*00b67f09SDavid van Moolenbroek run_helpers 423*00b67f09SDavid van Moolenbroek atf_check -s eq:0 -o file:expout -e empty -x \ 424*00b67f09SDavid van Moolenbroek "atf-report -o xml:- <tps.out | sed -E -e 's/>[0-9]+.[0-9]{6}</>#.#</'" 425*00b67f09SDavid van Moolenbroek} 426*00b67f09SDavid van Moolenbroek 427*00b67f09SDavid van Moolenbroekatf_test_case too_many_args 428*00b67f09SDavid van Moolenbroektoo_many_args_body() 429*00b67f09SDavid van Moolenbroek{ 430*00b67f09SDavid van Moolenbroek cat >experr <<EOF 431*00b67f09SDavid van Moolenbroekatf-report: ERROR: No arguments allowed 432*00b67f09SDavid van MoolenbroekEOF 433*00b67f09SDavid van Moolenbroek atf_check -s eq:1 -o empty -e file:experr atf-report foo 434*00b67f09SDavid van Moolenbroek} 435*00b67f09SDavid van Moolenbroek 436*00b67f09SDavid van Moolenbroekatf_init_test_cases() 437*00b67f09SDavid van Moolenbroek{ 438*00b67f09SDavid van Moolenbroek atf_add_test_case default 439*00b67f09SDavid van Moolenbroek atf_add_test_case expect 440*00b67f09SDavid van Moolenbroek atf_add_test_case oflag 441*00b67f09SDavid van Moolenbroek atf_add_test_case output_csv 442*00b67f09SDavid van Moolenbroek atf_add_test_case output_ticker 443*00b67f09SDavid van Moolenbroek atf_add_test_case output_xml 444*00b67f09SDavid van Moolenbroek atf_add_test_case output_xml_space 445*00b67f09SDavid van Moolenbroek atf_add_test_case too_many_args 446*00b67f09SDavid van Moolenbroek} 447*00b67f09SDavid van Moolenbroek 448*00b67f09SDavid van Moolenbroek# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 449