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