integration_test.sh revision 240120
1248557Sray#
2248557Sray# Automated Testing Framework (atf)
3248557Sray#
4248557Sray# Copyright (c) 2010 The NetBSD Foundation, Inc.
5248557Sray# All rights reserved.
6248557Sray#
7248557Sray# Redistribution and use in source and binary forms, with or without
8248557Sray# modification, are permitted provided that the following conditions
9248557Sray# are met:
10248557Sray# 1. Redistributions of source code must retain the above copyright
11248557Sray#    notice, this list of conditions and the following disclaimer.
12248557Sray# 2. Redistributions in binary form must reproduce the above copyright
13248557Sray#    notice, this list of conditions and the following disclaimer in the
14248557Sray#    documentation and/or other materials provided with the distribution.
15248557Sray#
16248557Sray# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17248557Sray# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18248557Sray# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19248557Sray# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20248557Sray# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21248557Sray# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22248557Sray# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23248557Sray# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24248557Sray# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25248557Sray# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26248557Sray# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27248557Sray# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28248557Sray#
29250357Sray
30248557Sraycreate_test_program() {
31248557Sray    echo '#! /usr/bin/env atf-sh' >"${1}"
32248557Sray    cat >>"${1}"
33248557Sray    chmod +x "${1}"
34248557Sray}
35248557Sray
36248557Srayatf_test_case no_args
37248557Srayno_args_body()
38248557Sray{
39248557Sray    cat >experr <<EOF
40248557Srayatf-sh: ERROR: No test program provided
41248557Srayatf-sh: Type \`atf-sh -h' for more details.
42248557SrayEOF
43248557Sray    atf_check -s eq:1 -o ignore -e file:experr atf-sh
44248557Sray}
45248557Sray
46248557Srayatf_test_case missing_script
47248557Sraymissing_script_body()
48248557Sray{
49248557Sray    cat >experr <<EOF
50248557Srayatf-sh: ERROR: The test program 'non-existent' does not exist
51248557SrayEOF
52248557Sray    atf_check -s eq:1 -o ignore -e file:experr atf-sh non-existent
53248557Sray}
54248557Sray
55248557Srayatf_test_case arguments
56248557Srayarguments_body()
57248557Sray{
58248557Sray    create_test_program tp <<EOF
59248557Sraymain() {
60248557Sray    echo ">>>\${0}<<<"
61248557Sray    while test \${#} -gt 0; do
62248557Sray        echo ">>>\${1}<<<"
63248557Sray        shift
64248557Sray    done
65248557Sray    true
66248557Sray}
67248557SrayEOF
68248557Sray
69248557Sray    cat >expout <<EOF
70248557Sray>>>./tp<<<
71248557Sray>>> a b <<<
72248557Sray>>>foo<<<
73248557SrayEOF
74248557Sray    atf_check -s eq:0 -o file:expout -e empty ./tp ' a b ' foo
75248557Sray
76248557Sray    cat >expout <<EOF
77248557Sray>>>tp<<<
78248557Sray>>> hello bye <<<
79248557Sray>>>foo bar<<<
80248557SrayEOF
81248557Sray    atf_check -s eq:0 -o file:expout -e empty atf-sh tp ' hello bye ' 'foo bar'
82248557Sray}
83248557Sray
84248557Srayatf_init_test_cases()
85248557Sray{
86248557Sray    atf_add_test_case no_args
87248557Sray    atf_add_test_case missing_script
88248557Sray    atf_add_test_case arguments
89248557Sray}
90248557Sray
91248557Sray# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
92248557Sray