File: mtests

package info (click to toggle)
mksh 59c-43
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,688 kB
  • sloc: ansic: 58,251; sh: 6,114; perl: 2,155; makefile: 127
file content (82 lines) | stat: -rw-r--r-- 2,152 bytes parent folder | download
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
#!/bin/sh

# work around sadt not honouring the latest DEP8
test -n "$AUTOPKGTEST_TMP" || AUTOPKGTEST_TMP=${ADTTMP:-$TMPDIR}

set -e
# just to be safe
test -n "$AUTOPKGTEST_TMP"

cp /usr/share/doc/mksh/check.* "$AUTOPKGTEST_TMP/"
cp /usr/share/doc/mksh/testdata.* "$AUTOPKGTEST_TMP/"
for x in "$AUTOPKGTEST_TMP/"*.gz; do
	test -e "$x" || continue
	gzip -d "$x"
done

rv=0
bad() {
	echo "E: $*"
	rv=1
}

echo I: self-test
set -- $(md5sum debian/rtchecks)
test bd51f320dcb3970f0119db72f7ae6be4 = "$1" || bad rtchecks corrupt

for fn in "$AUTOPKGTEST_TMP"/testdata.*; do
	what=${fn#"$AUTOPKGTEST_TMP"/testdata.}
	echo "I: testing $what"
	test -s "$fn" || {
		# deliberately catches testdata.* matching nothing
		echo >&2 "E: $fn empty"
		exit 1
	}
	cat= shell=/bin/false skip= asanopts=
	. "$fn"
	if test x"$skip" = x"1"; then
		echo "W: skipping $shell"
		continue
	elif test x"$skip" != x"0"; then
		bad "$what: testdata file error"
	fi
	:>"$AUTOPKGTEST_TMP"/rtchecks.out
	if test x"$what" = x"legacy"; then
		echo "I: $what: rtchecks skipped"
	elif env ${asanopts:+ASAN_OPTIONS="$asanopts"} \
	    "$shell" debian/rtchecks >"$AUTOPKGTEST_TMP"/rtchecks.out; then
		set -- $(md5sum "$AUTOPKGTEST_TMP"/rtchecks.out)
		if test d5345290b8f3a343f6446710007d4e5a = "$1"; then
			echo "I: $what: rtchecks passed"
		else
			bad "$what: rtchecks mismatched"
			sed 's/^/N: /' <"$AUTOPKGTEST_TMP"/rtchecks.out
		fi
	else
		bad "$what: rtchecks failed"
	fi
	echo "I: $what: Starting mtest; this takes about 30 seconds..."
	:>"$AUTOPKGTEST_TMP"/mtest.log
	if perl "$AUTOPKGTEST_TMP"/check.pl -T "$AUTOPKGTEST_TMP" \
	    -U C.UTF-8 -s debian/mtest.t -p "$shell" -v \
	    ${asanopts:+-e ASAN_OPTIONS="$asanopts"} \
	    >"$AUTOPKGTEST_TMP"/mtest.log 2>&1; then
		if grep '^Total failed: 0$' "$AUTOPKGTEST_TMP"/mtest.log \
		    >/dev/null; then
			echo "I: $what: mtest passed"
		else
			bad "$what: mtest did not pass"
			sed 's/^/N: /' <"$AUTOPKGTEST_TMP"/mtest.log
		fi
	else
		bad "$what: mtest failed"
		sed 's/^/N: /' <"$AUTOPKGTEST_TMP"/mtest.log
	fi
done

if test x"$rv" = x"0"; then
	echo "I: success"
	exit 0
fi
echo >&2 "E: there were failures"
exit $rv