xref: /freebsd/contrib/atf/atf-sh/integration_test.sh (revision 1a61beb0549e05b33df31380e427d90f6e46ff7e)
1c243e490SMarcel Moolenaar#
2c243e490SMarcel Moolenaar# Automated Testing Framework (atf)
3c243e490SMarcel Moolenaar#
4c243e490SMarcel Moolenaar# Copyright (c) 2010 The NetBSD Foundation, Inc.
5c243e490SMarcel Moolenaar# All rights reserved.
6c243e490SMarcel Moolenaar#
7c243e490SMarcel Moolenaar# Redistribution and use in source and binary forms, with or without
8c243e490SMarcel Moolenaar# modification, are permitted provided that the following conditions
9c243e490SMarcel Moolenaar# are met:
10c243e490SMarcel Moolenaar# 1. Redistributions of source code must retain the above copyright
11c243e490SMarcel Moolenaar#    notice, this list of conditions and the following disclaimer.
12c243e490SMarcel Moolenaar# 2. Redistributions in binary form must reproduce the above copyright
13c243e490SMarcel Moolenaar#    notice, this list of conditions and the following disclaimer in the
14c243e490SMarcel Moolenaar#    documentation and/or other materials provided with the distribution.
15c243e490SMarcel Moolenaar#
16c243e490SMarcel Moolenaar# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17c243e490SMarcel Moolenaar# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18c243e490SMarcel Moolenaar# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19c243e490SMarcel Moolenaar# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20c243e490SMarcel Moolenaar# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21c243e490SMarcel Moolenaar# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22c243e490SMarcel Moolenaar# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23c243e490SMarcel Moolenaar# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24c243e490SMarcel Moolenaar# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25c243e490SMarcel Moolenaar# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26c243e490SMarcel Moolenaar# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27c243e490SMarcel Moolenaar# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28c243e490SMarcel Moolenaar#
29c243e490SMarcel Moolenaar
30c243e490SMarcel Moolenaarcreate_test_program() {
31c243e490SMarcel Moolenaar    echo '#! /usr/bin/env atf-sh' >"${1}"
32c243e490SMarcel Moolenaar    cat >>"${1}"
33c243e490SMarcel Moolenaar    chmod +x "${1}"
34c243e490SMarcel Moolenaar}
35c243e490SMarcel Moolenaar
36c243e490SMarcel Moolenaaratf_test_case no_args
37c243e490SMarcel Moolenaarno_args_body()
38c243e490SMarcel Moolenaar{
39c243e490SMarcel Moolenaar    cat >experr <<EOF
40c243e490SMarcel Moolenaaratf-sh: ERROR: No test program provided
41*1a61beb0SJulio Merinoatf-sh: See atf-sh(1) for usage details.
42c243e490SMarcel MoolenaarEOF
43c243e490SMarcel Moolenaar    atf_check -s eq:1 -o ignore -e file:experr atf-sh
44c243e490SMarcel Moolenaar}
45c243e490SMarcel Moolenaar
46c243e490SMarcel Moolenaaratf_test_case missing_script
47c243e490SMarcel Moolenaarmissing_script_body()
48c243e490SMarcel Moolenaar{
49c243e490SMarcel Moolenaar    cat >experr <<EOF
50c243e490SMarcel Moolenaaratf-sh: ERROR: The test program 'non-existent' does not exist
51c243e490SMarcel MoolenaarEOF
52c243e490SMarcel Moolenaar    atf_check -s eq:1 -o ignore -e file:experr atf-sh non-existent
53c243e490SMarcel Moolenaar}
54c243e490SMarcel Moolenaar
55c243e490SMarcel Moolenaaratf_test_case arguments
56c243e490SMarcel Moolenaararguments_body()
57c243e490SMarcel Moolenaar{
58c243e490SMarcel Moolenaar    create_test_program tp <<EOF
59c243e490SMarcel Moolenaarmain() {
60c243e490SMarcel Moolenaar    echo ">>>\${0}<<<"
61c243e490SMarcel Moolenaar    while test \${#} -gt 0; do
62c243e490SMarcel Moolenaar        echo ">>>\${1}<<<"
63c243e490SMarcel Moolenaar        shift
64c243e490SMarcel Moolenaar    done
65c243e490SMarcel Moolenaar    true
66c243e490SMarcel Moolenaar}
67c243e490SMarcel MoolenaarEOF
68c243e490SMarcel Moolenaar
69c243e490SMarcel Moolenaar    cat >expout <<EOF
70c243e490SMarcel Moolenaar>>>./tp<<<
71c243e490SMarcel Moolenaar>>> a b <<<
72c243e490SMarcel Moolenaar>>>foo<<<
73c243e490SMarcel MoolenaarEOF
74c243e490SMarcel Moolenaar    atf_check -s eq:0 -o file:expout -e empty ./tp ' a b ' foo
75c243e490SMarcel Moolenaar
76c243e490SMarcel Moolenaar    cat >expout <<EOF
77c243e490SMarcel Moolenaar>>>tp<<<
78c243e490SMarcel Moolenaar>>> hello bye <<<
79c243e490SMarcel Moolenaar>>>foo bar<<<
80c243e490SMarcel MoolenaarEOF
81c243e490SMarcel Moolenaar    atf_check -s eq:0 -o file:expout -e empty atf-sh tp ' hello bye ' 'foo bar'
82c243e490SMarcel Moolenaar}
83c243e490SMarcel Moolenaar
84c243e490SMarcel Moolenaaratf_init_test_cases()
85c243e490SMarcel Moolenaar{
86c243e490SMarcel Moolenaar    atf_add_test_case no_args
87c243e490SMarcel Moolenaar    atf_add_test_case missing_script
88c243e490SMarcel Moolenaar    atf_add_test_case arguments
89c243e490SMarcel Moolenaar}
90c243e490SMarcel Moolenaar
91c243e490SMarcel Moolenaar# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
92