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