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