xref: /minix3/external/bsd/bind/dist/unit/atf-src/atf-report/integration_test.sh (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
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 \`&lt;&lt;NEWLINE&gt;&gt;'; 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