blob: fcb713633c6ff2c9db5206365c569155d0f39d33 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#!/bin/ksh
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
# Copyright 2022 OmniOS Community Edition (OmniOSce) Association.
set -o errexit
set -o pipefail
builtin print
typeset -r ROOT=$(dirname $0)
typeset -ri MAX_VARIANT=5
typeset -i failures=0
function fatal
{
echo "Test Failed: $@" >&2
exit 1
}
function fail
{
((failures++))
echo "FAIL: $*" >&2
}
function pass
{
echo "PASS: $*"
}
function run
{
typeset key="$1"
typeset keyf="$ROOT/data/$key"
shift;
stderr=${ { stdout=$("$@"); } 2>&1; }
exit=$?
output=${
cat <<- EOM
::STDOUT::
$stdout
::STDERR::
$stderr
::EXIT::
$exit
EOM
}
if [[ -r "$keyf" ]]; then
expect=$(<$keyf)
else
fatal "Data file $keyf is not readable"
fi
if [[ "$expect" != "$output" ]]; then
fail "$key"
diff -u <(print "$output") <(print "$expect") || true
else
pass "$key"
fi
}
for v in {0..$MAX_VARIANT}; do
((errcode = 3 + v * 2))
((exitcode = 4 + v * 2))
key="${v}.${errcode}.${exitcode}"
# err(3C) family
cmd="$ROOT/err -v $v -e $errcode -x $exitcode"
run "E.$key" $cmd
# warn(3C) family
cmd="$ROOT/err -v $v -e $errcode"
run "W.$key" $cmd
done
exit $failures
|