blob: 8daa45a5efe85199e23b82b2bc86b1404bfbb888 (
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
#! /bin/sh
# Copyright (C) 2011-2017 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# TAP support:
# - all input (valid TAP lines, invalid TAP lines, non-TAP lines)
# are passed through in the log file
# - TAP errors are reported in the log file too
# See also related test 'tap-passthrough-exit.sh'.
. test-init.sh
weirdchars=\''"\$@!&()[]<>#;,:.^?*/'
. tap-setup.sh
#
# Only successful tests.
#
# The whitespace in this test might be normalized in the testsuite
# progress output, but should be copied verbatim in the log files.
cat > ok.test <<END
1..6
TAP plan in the previous line.
ok${tab}
ok 2
ok - foo
ok 4 - x
This is not a TAP line, but should still be copied in the log file!
# some diagnostic${tab}
not ok # TODO low priority
ok # SKIP who cares?
$weirdchars
END
run_make TESTS=ok.test check || { cat ok.log; exit 1; }
cat ok.log
for rx in \
'1\.\.6' \
'TAP plan in the previous line\.' \
"ok${tab}" \
'ok 2' \
'ok - foo' \
'ok 4 - x' \
' This is not a TAP line, but should still be copied in the log file!' \
"# some diagnostic${tab}" \
'not ok # TODO low priority' \
'ok # SKIP who cares?' \
; do
grep "^$rx$" ok.log
done
$FGREP "$weirdchars" ok.log
#
# Mixed failing/successful tests.
#
cat > tiny.test <<END
1..1
ok
END
cat > ok.test <<END
1..1
ok
only one success here
END
cat > ko.test <<END
1..5
foo foo foo
ok${tab}
ok 2
not ok - foo
not ok 4 - x
# diagnostic ko
bar${tab}bar${tab}bar
ok # TODO dunno
$weirdchars
END
cat > bail.test <<END
Bail out! Test is taking too long!
END
cat > skip.test <<END
1..0 # Skipped: WWW::Mechanize not installed
END
cat > err.test <<END
1..3
ok 1
Invalid test count
ok 23
Misplaced plan
1..13
ok
Extra test
ok
Last line
END
st=0
run_make check \
TESTS='tiny.test ok.test ko.test bail.test skip.test err.test' || st=$?
cat tiny.log
cat ok.log
cat ko.log
cat bail.log
cat skip.log
cat err.log
test $st -gt 0 || exit 1
grep '^1\.\.1$' tiny.log
grep '^ok$' tiny.log
grep '^only one success here$' ok.log
for rx in \
'1\.\.5' \
'foo foo foo' \
"ok${tab}" \
'ok 2' \
'not ok - foo' \
'not ok 4 - x' \
'# diagnostic ko' \
" bar${tab}bar${tab}bar" \
'ok # TODO dunno' \
; do
grep "^$rx$" ko.log
done
$FGREP "$weirdchars" ko.log
grep '^Bail out! Test is taking too long!$' bail.log
grep '^1\.\.0 # Skipped: WWW::Mechanize not installed$' skip.log
for rx in \
'^1\.\.3$' \
'^Invalid test count$' \
'^ok 23$' \
'^Misplaced plan$' \
'^1\.\.13$' \
'^ERROR:.* multiple test plans' \
'^Extra test$' \
'^Last line$' \
'^ERROR:.* [tT]oo many tests run.*expected 3, got 4' \
'^ERROR:.* err\.test 23 .*OUT[ -]OF[ -]ORDER.*expecting 2' \
; do
grep "$rx" err.log
done
:
|