1#!/bin/sh 2########################################################################### 3# @(#)misc 1.5 19/05/09 Written 2011-2019 by J. Schilling 4########################################################################### 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License, Version 1.0 only 7# (the "License"). You may not use this file except in compliance 8# with the License. 9# 10# See the file CDDL.Schily.txt in this distribution for details. 11# A copy of the CDDL is also available via the Internet at 12# http://www.opensource.org/licenses/cddl1.txt 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file CDDL.Schily.txt from this distribution. 16########################################################################### 17# 18# Miscellaneous test functions 19# 20# $expect_fail = true prevents to abort a test script 21# $EXPECT_FAIL = true is a global overwrite for $expect_fail 22# 23########################################################################### 24# 25# xfail() is used internally to handle failed commands 26# 27########################################################################### 28xfail() { 29 echo "$0 could not be completed:" "$@" 30 exit 1 31} 32 33########################################################################### 34# 35# remove() is used internally to remove files created by the test 36# 37########################################################################### 38remove() { 39 if test -z "$*" 40 then 41 : 42 else 43 rm -rf "$@" || xfail "Could not remove $@" 44 fi 45} 46 47########################################################################### 48# 49# rename() rename files and check for success 50# 51########################################################################### 52rename() { 53 mv "$1" "$2" || xfail "Could not rename $1 to $2" 54} 55 56########################################################################### 57# 58# success() is the clear up code called at the end of a test script 59# 60########################################################################### 61success() { 62 remove exp.stdout exp.stderr got.stdout got.stderr cmd.last cmd.log 63 64 echo 65 echo "All tests in $0 have completed" 66 if ${expect_fail-false} 67 then 68 echo XPASS "$0" "$@" 69 exit 0 70 else 71 echo PASS "$0" "$@" 72 exit 0 73 fi 74} 75 76########################################################################### 77# 78# expect_fail is used to tell docommand() and do_output() not to abort a 79# test script completely in case of a failure. 80# 81# Make sure to set it back to "false" after relelated tests 82# Allow a global overwrite to "true" from $EXPECT_FAIL 83# 84########################################################################### 85expect_fail=false 86if test .$EXPECT_FAIL = .true 87then 88 expect_fail=true 89fi 90 91########################################################################### 92# 93# fail() is called by docommand() and do_output() in case of a 94# miscompare. If "expect_fail=true", the whole test script 95# is aborted. 96# 97########################################################################### 98fail() { 99 if ${expect_fail-false} || ${EXPECT_FAIL-false} 100 then 101 if ${esilent-false} 102 then 103 : 104 else 105 echo XFAIL "$0" "$@" 106 fi 107 failed=true 108 false 109 else 110 echo FAIL "$0" "$@" 111 exit 2 112 fi 113} 114 115fail_init() { 116 failed=false 117} 118