##// END OF EJS Templates
tests: add a --retest test to demonstrate a fix in next patch...
Sushil khanchi -
r45966:fa1a5527 default
parent child Browse files
Show More
@@ -1,2012 +1,2031
1 This file tests the behavior of run-tests.py itself.
1 This file tests the behavior of run-tests.py itself.
2
2
3 Avoid interference from actual test env:
3 Avoid interference from actual test env:
4
4
5 $ . "$TESTDIR/helper-runtests.sh"
5 $ . "$TESTDIR/helper-runtests.sh"
6
6
7 Smoke test with install
7 Smoke test with install
8 ============
8 ============
9 $ "$PYTHON" $TESTDIR/run-tests.py $HGTEST_RUN_TESTS_PURE -l
9 $ "$PYTHON" $TESTDIR/run-tests.py $HGTEST_RUN_TESTS_PURE -l
10 running 0 tests using 0 parallel processes
10 running 0 tests using 0 parallel processes
11
11
12 # Ran 0 tests, 0 skipped, 0 failed.
12 # Ran 0 tests, 0 skipped, 0 failed.
13
13
14 Define a helper to avoid the install step
14 Define a helper to avoid the install step
15 =============
15 =============
16 $ rt()
16 $ rt()
17 > {
17 > {
18 > "$PYTHON" $TESTDIR/run-tests.py --with-hg=`which hg` -j1 "$@"
18 > "$PYTHON" $TESTDIR/run-tests.py --with-hg=`which hg` -j1 "$@"
19 > }
19 > }
20
20
21 error paths
21 error paths
22
22
23 #if symlink
23 #if symlink
24 $ ln -s `which true` hg
24 $ ln -s `which true` hg
25 $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg
25 $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg
26 warning: --with-hg should specify an hg script
26 warning: --with-hg should specify an hg script
27 running 0 tests using 0 parallel processes
27 running 0 tests using 0 parallel processes
28
28
29 # Ran 0 tests, 0 skipped, 0 failed.
29 # Ran 0 tests, 0 skipped, 0 failed.
30 $ rm hg
30 $ rm hg
31 #endif
31 #endif
32
32
33 #if execbit
33 #if execbit
34 $ touch hg
34 $ touch hg
35 $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg
35 $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg
36 usage: run-tests.py [options] [tests]
36 usage: run-tests.py [options] [tests]
37 run-tests.py: error: --with-hg must specify an executable hg script
37 run-tests.py: error: --with-hg must specify an executable hg script
38 [2]
38 [2]
39 $ rm hg
39 $ rm hg
40 #endif
40 #endif
41
41
42 Features for testing optional lines
42 Features for testing optional lines
43 ===================================
43 ===================================
44
44
45 $ cat > hghaveaddon.py <<EOF
45 $ cat > hghaveaddon.py <<EOF
46 > import hghave
46 > import hghave
47 > @hghave.check("custom", "custom hghave feature")
47 > @hghave.check("custom", "custom hghave feature")
48 > def has_custom():
48 > def has_custom():
49 > return True
49 > return True
50 > @hghave.check("missing", "missing hghave feature")
50 > @hghave.check("missing", "missing hghave feature")
51 > def has_missing():
51 > def has_missing():
52 > return False
52 > return False
53 > EOF
53 > EOF
54
54
55 an empty test
55 an empty test
56 =======================
56 =======================
57
57
58 $ touch test-empty.t
58 $ touch test-empty.t
59 $ rt
59 $ rt
60 running 1 tests using 1 parallel processes
60 running 1 tests using 1 parallel processes
61 .
61 .
62 # Ran 1 tests, 0 skipped, 0 failed.
62 # Ran 1 tests, 0 skipped, 0 failed.
63 $ rm test-empty.t
63 $ rm test-empty.t
64
64
65 a succesful test
65 a succesful test
66 =======================
66 =======================
67
67
68 $ cat > test-success.t << EOF
68 $ cat > test-success.t << EOF
69 > $ echo babar
69 > $ echo babar
70 > babar
70 > babar
71 > $ echo xyzzy
71 > $ echo xyzzy
72 > dont_print (?)
72 > dont_print (?)
73 > nothing[42]line (re) (?)
73 > nothing[42]line (re) (?)
74 > never*happens (glob) (?)
74 > never*happens (glob) (?)
75 > more_nothing (?)
75 > more_nothing (?)
76 > xyzzy
76 > xyzzy
77 > nor this (?)
77 > nor this (?)
78 > $ printf 'abc\ndef\nxyz\n'
78 > $ printf 'abc\ndef\nxyz\n'
79 > 123 (?)
79 > 123 (?)
80 > abc
80 > abc
81 > def (?)
81 > def (?)
82 > 456 (?)
82 > 456 (?)
83 > xyz
83 > xyz
84 > $ printf 'zyx\nwvu\ntsr\n'
84 > $ printf 'zyx\nwvu\ntsr\n'
85 > abc (?)
85 > abc (?)
86 > zyx (custom !)
86 > zyx (custom !)
87 > wvu
87 > wvu
88 > no_print (no-custom !)
88 > no_print (no-custom !)
89 > tsr (no-missing !)
89 > tsr (no-missing !)
90 > missing (missing !)
90 > missing (missing !)
91 > EOF
91 > EOF
92
92
93 $ rt
93 $ rt
94 running 1 tests using 1 parallel processes
94 running 1 tests using 1 parallel processes
95 .
95 .
96 # Ran 1 tests, 0 skipped, 0 failed.
96 # Ran 1 tests, 0 skipped, 0 failed.
97
97
98 failing test
98 failing test
99 ==================
99 ==================
100
100
101 test churn with globs
101 test churn with globs
102 $ cat > test-failure.t <<EOF
102 $ cat > test-failure.t <<EOF
103 > $ echo "bar-baz"; echo "bar-bad"; echo foo
103 > $ echo "bar-baz"; echo "bar-bad"; echo foo
104 > bar*bad (glob)
104 > bar*bad (glob)
105 > bar*baz (glob)
105 > bar*baz (glob)
106 > | fo (re)
106 > | fo (re)
107 > EOF
107 > EOF
108 $ rt test-failure.t
108 $ rt test-failure.t
109 running 1 tests using 1 parallel processes
109 running 1 tests using 1 parallel processes
110
110
111 --- $TESTTMP/test-failure.t
111 --- $TESTTMP/test-failure.t
112 +++ $TESTTMP/test-failure.t.err
112 +++ $TESTTMP/test-failure.t.err
113 @@ -1,4 +1,4 @@
113 @@ -1,4 +1,4 @@
114 $ echo "bar-baz"; echo "bar-bad"; echo foo
114 $ echo "bar-baz"; echo "bar-bad"; echo foo
115 + bar*baz (glob)
115 + bar*baz (glob)
116 bar*bad (glob)
116 bar*bad (glob)
117 - bar*baz (glob)
117 - bar*baz (glob)
118 - | fo (re)
118 - | fo (re)
119 + foo
119 + foo
120
120
121 ERROR: test-failure.t output changed
121 ERROR: test-failure.t output changed
122 !
122 !
123 Failed test-failure.t: output changed
123 Failed test-failure.t: output changed
124 # Ran 1 tests, 0 skipped, 1 failed.
124 # Ran 1 tests, 0 skipped, 1 failed.
125 python hash seed: * (glob)
125 python hash seed: * (glob)
126 [1]
126 [1]
127
127
128 test how multiple globs gets matched with lines in output
128 test how multiple globs gets matched with lines in output
129 $ cat > test-failure-globs.t <<EOF
129 $ cat > test-failure-globs.t <<EOF
130 > $ echo "context"; echo "context"; \
130 > $ echo "context"; echo "context"; \
131 > echo "key: 1"; echo "value: not a"; \
131 > echo "key: 1"; echo "value: not a"; \
132 > echo "key: 2"; echo "value: not b"; \
132 > echo "key: 2"; echo "value: not b"; \
133 > echo "key: 3"; echo "value: c"; \
133 > echo "key: 3"; echo "value: c"; \
134 > echo "key: 4"; echo "value: d"
134 > echo "key: 4"; echo "value: d"
135 > context
135 > context
136 > context
136 > context
137 > key: 1
137 > key: 1
138 > value: a
138 > value: a
139 > key: 2
139 > key: 2
140 > value: b
140 > value: b
141 > key: 3
141 > key: 3
142 > value: * (glob)
142 > value: * (glob)
143 > key: 4
143 > key: 4
144 > value: * (glob)
144 > value: * (glob)
145 > EOF
145 > EOF
146 $ rt test-failure-globs.t
146 $ rt test-failure-globs.t
147 running 1 tests using 1 parallel processes
147 running 1 tests using 1 parallel processes
148
148
149 --- $TESTTMP/test-failure-globs.t
149 --- $TESTTMP/test-failure-globs.t
150 +++ $TESTTMP/test-failure-globs.t.err
150 +++ $TESTTMP/test-failure-globs.t.err
151 @@ -2,9 +2,9 @@
151 @@ -2,9 +2,9 @@
152 context
152 context
153 context
153 context
154 key: 1
154 key: 1
155 - value: a
155 - value: a
156 + value: not a
156 + value: not a
157 key: 2
157 key: 2
158 - value: b
158 - value: b
159 + value: not b
159 + value: not b
160 key: 3
160 key: 3
161 value: * (glob)
161 value: * (glob)
162 key: 4
162 key: 4
163
163
164 ERROR: test-failure-globs.t output changed
164 ERROR: test-failure-globs.t output changed
165 !
165 !
166 Failed test-failure-globs.t: output changed
166 Failed test-failure-globs.t: output changed
167 # Ran 1 tests, 0 skipped, 1 failed.
167 # Ran 1 tests, 0 skipped, 1 failed.
168 python hash seed: * (glob)
168 python hash seed: * (glob)
169 [1]
169 [1]
170 $ rm test-failure-globs.t
170 $ rm test-failure-globs.t
171
171
172 test diff colorisation
172 test diff colorisation
173
173
174 #if no-windows pygments
174 #if no-windows pygments
175 $ rt test-failure.t --color always
175 $ rt test-failure.t --color always
176 running 1 tests using 1 parallel processes
176 running 1 tests using 1 parallel processes
177
177
178 \x1b[38;5;124m--- $TESTTMP/test-failure.t\x1b[39m (esc)
178 \x1b[38;5;124m--- $TESTTMP/test-failure.t\x1b[39m (esc)
179 \x1b[38;5;34m+++ $TESTTMP/test-failure.t.err\x1b[39m (esc)
179 \x1b[38;5;34m+++ $TESTTMP/test-failure.t.err\x1b[39m (esc)
180 \x1b[38;5;90;01m@@ -1,4 +1,4 @@\x1b[39;00m (esc)
180 \x1b[38;5;90;01m@@ -1,4 +1,4 @@\x1b[39;00m (esc)
181 $ echo "bar-baz"; echo "bar-bad"; echo foo
181 $ echo "bar-baz"; echo "bar-bad"; echo foo
182 \x1b[38;5;34m+ bar*baz (glob)\x1b[39m (esc)
182 \x1b[38;5;34m+ bar*baz (glob)\x1b[39m (esc)
183 bar*bad (glob)
183 bar*bad (glob)
184 \x1b[38;5;124m- bar*baz (glob)\x1b[39m (esc)
184 \x1b[38;5;124m- bar*baz (glob)\x1b[39m (esc)
185 \x1b[38;5;124m- | fo (re)\x1b[39m (esc)
185 \x1b[38;5;124m- | fo (re)\x1b[39m (esc)
186 \x1b[38;5;34m+ foo\x1b[39m (esc)
186 \x1b[38;5;34m+ foo\x1b[39m (esc)
187
187
188 \x1b[38;5;88mERROR: \x1b[39m\x1b[38;5;9mtest-failure.t\x1b[39m\x1b[38;5;88m output changed\x1b[39m (esc)
188 \x1b[38;5;88mERROR: \x1b[39m\x1b[38;5;9mtest-failure.t\x1b[39m\x1b[38;5;88m output changed\x1b[39m (esc)
189 !
189 !
190 \x1b[38;5;88mFailed \x1b[39m\x1b[38;5;9mtest-failure.t\x1b[39m\x1b[38;5;88m: output changed\x1b[39m (esc)
190 \x1b[38;5;88mFailed \x1b[39m\x1b[38;5;9mtest-failure.t\x1b[39m\x1b[38;5;88m: output changed\x1b[39m (esc)
191 # Ran 1 tests, 0 skipped, 1 failed.
191 # Ran 1 tests, 0 skipped, 1 failed.
192 python hash seed: * (glob)
192 python hash seed: * (glob)
193 [1]
193 [1]
194
194
195 $ rt test-failure.t 2> tmp.log
195 $ rt test-failure.t 2> tmp.log
196 running 1 tests using 1 parallel processes
196 running 1 tests using 1 parallel processes
197 [1]
197 [1]
198 $ cat tmp.log
198 $ cat tmp.log
199
199
200 --- $TESTTMP/test-failure.t
200 --- $TESTTMP/test-failure.t
201 +++ $TESTTMP/test-failure.t.err
201 +++ $TESTTMP/test-failure.t.err
202 @@ -1,4 +1,4 @@
202 @@ -1,4 +1,4 @@
203 $ echo "bar-baz"; echo "bar-bad"; echo foo
203 $ echo "bar-baz"; echo "bar-bad"; echo foo
204 + bar*baz (glob)
204 + bar*baz (glob)
205 bar*bad (glob)
205 bar*bad (glob)
206 - bar*baz (glob)
206 - bar*baz (glob)
207 - | fo (re)
207 - | fo (re)
208 + foo
208 + foo
209
209
210 ERROR: test-failure.t output changed
210 ERROR: test-failure.t output changed
211 !
211 !
212 Failed test-failure.t: output changed
212 Failed test-failure.t: output changed
213 # Ran 1 tests, 0 skipped, 1 failed.
213 # Ran 1 tests, 0 skipped, 1 failed.
214 python hash seed: * (glob)
214 python hash seed: * (glob)
215 #endif
215 #endif
216
216
217 $ cat > test-failure.t << EOF
217 $ cat > test-failure.t << EOF
218 > $ true
218 > $ true
219 > should go away (true !)
219 > should go away (true !)
220 > $ true
220 > $ true
221 > should stay (false !)
221 > should stay (false !)
222 >
222 >
223 > Should remove first line, not second or third
223 > Should remove first line, not second or third
224 > $ echo 'testing'
224 > $ echo 'testing'
225 > baz*foo (glob) (true !)
225 > baz*foo (glob) (true !)
226 > foobar*foo (glob) (false !)
226 > foobar*foo (glob) (false !)
227 > te*ting (glob) (true !)
227 > te*ting (glob) (true !)
228 >
228 >
229 > Should keep first two lines, remove third and last
229 > Should keep first two lines, remove third and last
230 > $ echo 'testing'
230 > $ echo 'testing'
231 > test.ng (re) (true !)
231 > test.ng (re) (true !)
232 > foo.ar (re) (false !)
232 > foo.ar (re) (false !)
233 > b.r (re) (true !)
233 > b.r (re) (true !)
234 > missing (?)
234 > missing (?)
235 > awol (true !)
235 > awol (true !)
236 >
236 >
237 > The "missing" line should stay, even though awol is dropped
237 > The "missing" line should stay, even though awol is dropped
238 > $ echo 'testing'
238 > $ echo 'testing'
239 > test.ng (re) (true !)
239 > test.ng (re) (true !)
240 > foo.ar (?)
240 > foo.ar (?)
241 > awol
241 > awol
242 > missing (?)
242 > missing (?)
243 > EOF
243 > EOF
244 $ rt test-failure.t
244 $ rt test-failure.t
245 running 1 tests using 1 parallel processes
245 running 1 tests using 1 parallel processes
246
246
247 --- $TESTTMP/test-failure.t
247 --- $TESTTMP/test-failure.t
248 +++ $TESTTMP/test-failure.t.err
248 +++ $TESTTMP/test-failure.t.err
249 @@ -1,11 +1,9 @@
249 @@ -1,11 +1,9 @@
250 $ true
250 $ true
251 - should go away (true !)
251 - should go away (true !)
252 $ true
252 $ true
253 should stay (false !)
253 should stay (false !)
254
254
255 Should remove first line, not second or third
255 Should remove first line, not second or third
256 $ echo 'testing'
256 $ echo 'testing'
257 - baz*foo (glob) (true !)
257 - baz*foo (glob) (true !)
258 foobar*foo (glob) (false !)
258 foobar*foo (glob) (false !)
259 te*ting (glob) (true !)
259 te*ting (glob) (true !)
260
260
261 foo.ar (re) (false !)
261 foo.ar (re) (false !)
262 missing (?)
262 missing (?)
263 @@ -13,13 +11,10 @@
263 @@ -13,13 +11,10 @@
264 $ echo 'testing'
264 $ echo 'testing'
265 test.ng (re) (true !)
265 test.ng (re) (true !)
266 foo.ar (re) (false !)
266 foo.ar (re) (false !)
267 - b.r (re) (true !)
267 - b.r (re) (true !)
268 missing (?)
268 missing (?)
269 - awol (true !)
269 - awol (true !)
270
270
271 The "missing" line should stay, even though awol is dropped
271 The "missing" line should stay, even though awol is dropped
272 $ echo 'testing'
272 $ echo 'testing'
273 test.ng (re) (true !)
273 test.ng (re) (true !)
274 foo.ar (?)
274 foo.ar (?)
275 - awol
275 - awol
276 missing (?)
276 missing (?)
277
277
278 ERROR: test-failure.t output changed
278 ERROR: test-failure.t output changed
279 !
279 !
280 Failed test-failure.t: output changed
280 Failed test-failure.t: output changed
281 # Ran 1 tests, 0 skipped, 1 failed.
281 # Ran 1 tests, 0 skipped, 1 failed.
282 python hash seed: * (glob)
282 python hash seed: * (glob)
283 [1]
283 [1]
284
284
285 basic failing test
285 basic failing test
286 $ cat > test-failure.t << EOF
286 $ cat > test-failure.t << EOF
287 > $ echo babar
287 > $ echo babar
288 > rataxes
288 > rataxes
289 > This is a noop statement so that
289 > This is a noop statement so that
290 > this test is still more bytes than success.
290 > this test is still more bytes than success.
291 > pad pad pad pad............................................................
291 > pad pad pad pad............................................................
292 > pad pad pad pad............................................................
292 > pad pad pad pad............................................................
293 > pad pad pad pad............................................................
293 > pad pad pad pad............................................................
294 > pad pad pad pad............................................................
294 > pad pad pad pad............................................................
295 > pad pad pad pad............................................................
295 > pad pad pad pad............................................................
296 > pad pad pad pad............................................................
296 > pad pad pad pad............................................................
297 > EOF
297 > EOF
298
298
299 >>> fh = open('test-failure-unicode.t', 'wb')
299 >>> fh = open('test-failure-unicode.t', 'wb')
300 >>> fh.write(u' $ echo babar\u03b1\n'.encode('utf-8')) and None
300 >>> fh.write(u' $ echo babar\u03b1\n'.encode('utf-8')) and None
301 >>> fh.write(u' l\u03b5\u03b5t\n'.encode('utf-8')) and None
301 >>> fh.write(u' l\u03b5\u03b5t\n'.encode('utf-8')) and None
302
302
303 $ rt
303 $ rt
304 running 3 tests using 1 parallel processes
304 running 3 tests using 1 parallel processes
305
305
306 --- $TESTTMP/test-failure.t
306 --- $TESTTMP/test-failure.t
307 +++ $TESTTMP/test-failure.t.err
307 +++ $TESTTMP/test-failure.t.err
308 @@ -1,5 +1,5 @@
308 @@ -1,5 +1,5 @@
309 $ echo babar
309 $ echo babar
310 - rataxes
310 - rataxes
311 + babar
311 + babar
312 This is a noop statement so that
312 This is a noop statement so that
313 this test is still more bytes than success.
313 this test is still more bytes than success.
314 pad pad pad pad............................................................
314 pad pad pad pad............................................................
315
315
316 ERROR: test-failure.t output changed
316 ERROR: test-failure.t output changed
317 !.
317 !.
318 --- $TESTTMP/test-failure-unicode.t
318 --- $TESTTMP/test-failure-unicode.t
319 +++ $TESTTMP/test-failure-unicode.t.err
319 +++ $TESTTMP/test-failure-unicode.t.err
320 @@ -1,2 +1,2 @@
320 @@ -1,2 +1,2 @@
321 $ echo babar\xce\xb1 (esc)
321 $ echo babar\xce\xb1 (esc)
322 - l\xce\xb5\xce\xb5t (esc)
322 - l\xce\xb5\xce\xb5t (esc)
323 + babar\xce\xb1 (esc)
323 + babar\xce\xb1 (esc)
324
324
325 ERROR: test-failure-unicode.t output changed
325 ERROR: test-failure-unicode.t output changed
326 !
326 !
327 Failed test-failure-unicode.t: output changed
327 Failed test-failure-unicode.t: output changed
328 Failed test-failure.t: output changed
328 Failed test-failure.t: output changed
329 # Ran 3 tests, 0 skipped, 2 failed.
329 # Ran 3 tests, 0 skipped, 2 failed.
330 python hash seed: * (glob)
330 python hash seed: * (glob)
331 [1]
331 [1]
332
332
333 test --outputdir
333 test --outputdir
334 $ mkdir output
334 $ mkdir output
335 $ rt --outputdir output
335 $ rt --outputdir output
336 running 3 tests using 1 parallel processes
336 running 3 tests using 1 parallel processes
337
337
338 --- $TESTTMP/test-failure.t
338 --- $TESTTMP/test-failure.t
339 +++ $TESTTMP/output/test-failure.t.err
339 +++ $TESTTMP/output/test-failure.t.err
340 @@ -1,5 +1,5 @@
340 @@ -1,5 +1,5 @@
341 $ echo babar
341 $ echo babar
342 - rataxes
342 - rataxes
343 + babar
343 + babar
344 This is a noop statement so that
344 This is a noop statement so that
345 this test is still more bytes than success.
345 this test is still more bytes than success.
346 pad pad pad pad............................................................
346 pad pad pad pad............................................................
347
347
348 ERROR: test-failure.t output changed
348 ERROR: test-failure.t output changed
349 !.
349 !.
350 --- $TESTTMP/test-failure-unicode.t
350 --- $TESTTMP/test-failure-unicode.t
351 +++ $TESTTMP/output/test-failure-unicode.t.err
351 +++ $TESTTMP/output/test-failure-unicode.t.err
352 @@ -1,2 +1,2 @@
352 @@ -1,2 +1,2 @@
353 $ echo babar\xce\xb1 (esc)
353 $ echo babar\xce\xb1 (esc)
354 - l\xce\xb5\xce\xb5t (esc)
354 - l\xce\xb5\xce\xb5t (esc)
355 + babar\xce\xb1 (esc)
355 + babar\xce\xb1 (esc)
356
356
357 ERROR: test-failure-unicode.t output changed
357 ERROR: test-failure-unicode.t output changed
358 !
358 !
359 Failed test-failure-unicode.t: output changed
359 Failed test-failure-unicode.t: output changed
360 Failed test-failure.t: output changed
360 Failed test-failure.t: output changed
361 # Ran 3 tests, 0 skipped, 2 failed.
361 # Ran 3 tests, 0 skipped, 2 failed.
362 python hash seed: * (glob)
362 python hash seed: * (glob)
363 [1]
363 [1]
364 $ ls -a output
364 $ ls -a output
365 .
365 .
366 ..
366 ..
367 .testtimes
367 .testtimes
368 test-failure-unicode.t.err
368 test-failure-unicode.t.err
369 test-failure.t.err
369 test-failure.t.err
370
370
371 test --xunit support
371 test --xunit support
372 $ rt --xunit=xunit.xml
372 $ rt --xunit=xunit.xml
373 running 3 tests using 1 parallel processes
373 running 3 tests using 1 parallel processes
374
374
375 --- $TESTTMP/test-failure.t
375 --- $TESTTMP/test-failure.t
376 +++ $TESTTMP/test-failure.t.err
376 +++ $TESTTMP/test-failure.t.err
377 @@ -1,5 +1,5 @@
377 @@ -1,5 +1,5 @@
378 $ echo babar
378 $ echo babar
379 - rataxes
379 - rataxes
380 + babar
380 + babar
381 This is a noop statement so that
381 This is a noop statement so that
382 this test is still more bytes than success.
382 this test is still more bytes than success.
383 pad pad pad pad............................................................
383 pad pad pad pad............................................................
384
384
385 ERROR: test-failure.t output changed
385 ERROR: test-failure.t output changed
386 !.
386 !.
387 --- $TESTTMP/test-failure-unicode.t
387 --- $TESTTMP/test-failure-unicode.t
388 +++ $TESTTMP/test-failure-unicode.t.err
388 +++ $TESTTMP/test-failure-unicode.t.err
389 @@ -1,2 +1,2 @@
389 @@ -1,2 +1,2 @@
390 $ echo babar\xce\xb1 (esc)
390 $ echo babar\xce\xb1 (esc)
391 - l\xce\xb5\xce\xb5t (esc)
391 - l\xce\xb5\xce\xb5t (esc)
392 + babar\xce\xb1 (esc)
392 + babar\xce\xb1 (esc)
393
393
394 ERROR: test-failure-unicode.t output changed
394 ERROR: test-failure-unicode.t output changed
395 !
395 !
396 Failed test-failure-unicode.t: output changed
396 Failed test-failure-unicode.t: output changed
397 Failed test-failure.t: output changed
397 Failed test-failure.t: output changed
398 # Ran 3 tests, 0 skipped, 2 failed.
398 # Ran 3 tests, 0 skipped, 2 failed.
399 python hash seed: * (glob)
399 python hash seed: * (glob)
400 [1]
400 [1]
401 $ cat xunit.xml
401 $ cat xunit.xml
402 <?xml version="1.0" encoding="utf-8"?>
402 <?xml version="1.0" encoding="utf-8"?>
403 <testsuite errors="0" failures="2" name="run-tests" skipped="0" tests="3">
403 <testsuite errors="0" failures="2" name="run-tests" skipped="0" tests="3">
404 <testcase name="test-success.t" time="*"/> (glob)
404 <testcase name="test-success.t" time="*"/> (glob)
405 <testcase name="test-failure-unicode.t" time="*"> (glob)
405 <testcase name="test-failure-unicode.t" time="*"> (glob)
406 <failure message="output changed" type="output-mismatch"><![CDATA[--- $TESTTMP/test-failure-unicode.t (py38 !)
406 <failure message="output changed" type="output-mismatch"><![CDATA[--- $TESTTMP/test-failure-unicode.t (py38 !)
407 <failure message="output changed" type="output-mismatch"> (no-py38 !)
407 <failure message="output changed" type="output-mismatch"> (no-py38 !)
408 <![CDATA[--- $TESTTMP/test-failure-unicode.t (no-py38 !)
408 <![CDATA[--- $TESTTMP/test-failure-unicode.t (no-py38 !)
409 +++ $TESTTMP/test-failure-unicode.t.err
409 +++ $TESTTMP/test-failure-unicode.t.err
410 @@ -1,2 +1,2 @@
410 @@ -1,2 +1,2 @@
411 $ echo babar\xce\xb1 (esc)
411 $ echo babar\xce\xb1 (esc)
412 - l\xce\xb5\xce\xb5t (esc)
412 - l\xce\xb5\xce\xb5t (esc)
413 + babar\xce\xb1 (esc)
413 + babar\xce\xb1 (esc)
414 ]]></failure> (py38 !)
414 ]]></failure> (py38 !)
415 ]]> </failure> (no-py38 !)
415 ]]> </failure> (no-py38 !)
416 </testcase>
416 </testcase>
417 <testcase name="test-failure.t" time="*"> (glob)
417 <testcase name="test-failure.t" time="*"> (glob)
418 <failure message="output changed" type="output-mismatch"><![CDATA[--- $TESTTMP/test-failure.t (py38 !)
418 <failure message="output changed" type="output-mismatch"><![CDATA[--- $TESTTMP/test-failure.t (py38 !)
419 <failure message="output changed" type="output-mismatch"> (no-py38 !)
419 <failure message="output changed" type="output-mismatch"> (no-py38 !)
420 <![CDATA[--- $TESTTMP/test-failure.t (no-py38 !)
420 <![CDATA[--- $TESTTMP/test-failure.t (no-py38 !)
421 +++ $TESTTMP/test-failure.t.err
421 +++ $TESTTMP/test-failure.t.err
422 @@ -1,5 +1,5 @@
422 @@ -1,5 +1,5 @@
423 $ echo babar
423 $ echo babar
424 - rataxes
424 - rataxes
425 + babar
425 + babar
426 This is a noop statement so that
426 This is a noop statement so that
427 this test is still more bytes than success.
427 this test is still more bytes than success.
428 pad pad pad pad............................................................
428 pad pad pad pad............................................................
429 ]]></failure> (py38 !)
429 ]]></failure> (py38 !)
430 ]]> </failure> (no-py38 !)
430 ]]> </failure> (no-py38 !)
431 </testcase>
431 </testcase>
432 </testsuite>
432 </testsuite>
433
433
434 $ cat .testtimes
434 $ cat .testtimes
435 test-empty.t * (glob)
435 test-empty.t * (glob)
436 test-failure-globs.t * (glob)
436 test-failure-globs.t * (glob)
437 test-failure-unicode.t * (glob)
437 test-failure-unicode.t * (glob)
438 test-failure.t * (glob)
438 test-failure.t * (glob)
439 test-success.t * (glob)
439 test-success.t * (glob)
440
440
441 $ rt --list-tests
441 $ rt --list-tests
442 test-failure-unicode.t
442 test-failure-unicode.t
443 test-failure.t
443 test-failure.t
444 test-success.t
444 test-success.t
445
445
446 $ rt --list-tests --json
446 $ rt --list-tests --json
447 test-failure-unicode.t
447 test-failure-unicode.t
448 test-failure.t
448 test-failure.t
449 test-success.t
449 test-success.t
450 $ cat report.json
450 $ cat report.json
451 testreport ={
451 testreport ={
452 "test-failure-unicode.t": {
452 "test-failure-unicode.t": {
453 "result": "success"
453 "result": "success"
454 },
454 },
455 "test-failure.t": {
455 "test-failure.t": {
456 "result": "success"
456 "result": "success"
457 },
457 },
458 "test-success.t": {
458 "test-success.t": {
459 "result": "success"
459 "result": "success"
460 }
460 }
461 } (no-eol)
461 } (no-eol)
462
462
463 $ rt --list-tests --xunit=xunit.xml
463 $ rt --list-tests --xunit=xunit.xml
464 test-failure-unicode.t
464 test-failure-unicode.t
465 test-failure.t
465 test-failure.t
466 test-success.t
466 test-success.t
467 $ cat xunit.xml
467 $ cat xunit.xml
468 <?xml version="1.0" encoding="utf-8"?>
468 <?xml version="1.0" encoding="utf-8"?>
469 <testsuite errors="0" failures="0" name="run-tests" skipped="0" tests="0">
469 <testsuite errors="0" failures="0" name="run-tests" skipped="0" tests="0">
470 <testcase name="test-failure-unicode.t"/>
470 <testcase name="test-failure-unicode.t"/>
471 <testcase name="test-failure.t"/>
471 <testcase name="test-failure.t"/>
472 <testcase name="test-success.t"/>
472 <testcase name="test-success.t"/>
473 </testsuite>
473 </testsuite>
474
474
475 $ rt --list-tests test-failure* --json --xunit=xunit.xml --outputdir output
475 $ rt --list-tests test-failure* --json --xunit=xunit.xml --outputdir output
476 test-failure-unicode.t
476 test-failure-unicode.t
477 test-failure.t
477 test-failure.t
478 $ cat output/report.json
478 $ cat output/report.json
479 testreport ={
479 testreport ={
480 "test-failure-unicode.t": {
480 "test-failure-unicode.t": {
481 "result": "success"
481 "result": "success"
482 },
482 },
483 "test-failure.t": {
483 "test-failure.t": {
484 "result": "success"
484 "result": "success"
485 }
485 }
486 } (no-eol)
486 } (no-eol)
487 $ cat xunit.xml
487 $ cat xunit.xml
488 <?xml version="1.0" encoding="utf-8"?>
488 <?xml version="1.0" encoding="utf-8"?>
489 <testsuite errors="0" failures="0" name="run-tests" skipped="0" tests="0">
489 <testsuite errors="0" failures="0" name="run-tests" skipped="0" tests="0">
490 <testcase name="test-failure-unicode.t"/>
490 <testcase name="test-failure-unicode.t"/>
491 <testcase name="test-failure.t"/>
491 <testcase name="test-failure.t"/>
492 </testsuite>
492 </testsuite>
493
493
494 $ rm test-failure-unicode.t
494 $ rm test-failure-unicode.t
495
495
496 test for --retest
496 test for --retest
497 ====================
497 ====================
498
498
499 $ rt --retest
499 $ rt --retest
500 running 2 tests using 1 parallel processes
500 running 2 tests using 1 parallel processes
501
501
502 --- $TESTTMP/test-failure.t
502 --- $TESTTMP/test-failure.t
503 +++ $TESTTMP/test-failure.t.err
503 +++ $TESTTMP/test-failure.t.err
504 @@ -1,5 +1,5 @@
504 @@ -1,5 +1,5 @@
505 $ echo babar
505 $ echo babar
506 - rataxes
506 - rataxes
507 + babar
507 + babar
508 This is a noop statement so that
508 This is a noop statement so that
509 this test is still more bytes than success.
509 this test is still more bytes than success.
510 pad pad pad pad............................................................
510 pad pad pad pad............................................................
511
511
512 ERROR: test-failure.t output changed
512 ERROR: test-failure.t output changed
513 !
513 !
514 Failed test-failure.t: output changed
514 Failed test-failure.t: output changed
515 # Ran 2 tests, 1 skipped, 1 failed.
515 # Ran 2 tests, 1 skipped, 1 failed.
516 python hash seed: * (glob)
516 python hash seed: * (glob)
517 [1]
517 [1]
518
518
519 --retest works with --outputdir
519 --retest works with --outputdir
520 $ rm -r output
520 $ rm -r output
521 $ mkdir output
521 $ mkdir output
522 $ mv test-failure.t.err output
522 $ mv test-failure.t.err output
523 $ rt --retest --outputdir output
523 $ rt --retest --outputdir output
524 running 2 tests using 1 parallel processes
524 running 2 tests using 1 parallel processes
525
525
526 --- $TESTTMP/test-failure.t
526 --- $TESTTMP/test-failure.t
527 +++ $TESTTMP/output/test-failure.t.err
527 +++ $TESTTMP/output/test-failure.t.err
528 @@ -1,5 +1,5 @@
528 @@ -1,5 +1,5 @@
529 $ echo babar
529 $ echo babar
530 - rataxes
530 - rataxes
531 + babar
531 + babar
532 This is a noop statement so that
532 This is a noop statement so that
533 this test is still more bytes than success.
533 this test is still more bytes than success.
534 pad pad pad pad............................................................
534 pad pad pad pad............................................................
535
535
536 ERROR: test-failure.t output changed
536 ERROR: test-failure.t output changed
537 !
537 !
538 Failed test-failure.t: output changed
538 Failed test-failure.t: output changed
539 # Ran 2 tests, 1 skipped, 1 failed.
539 # Ran 2 tests, 1 skipped, 1 failed.
540 python hash seed: * (glob)
540 python hash seed: * (glob)
541 [1]
541 [1]
542
542
543 Selecting Tests To Run
543 Selecting Tests To Run
544 ======================
544 ======================
545
545
546 successful
546 successful
547
547
548 $ rt test-success.t
548 $ rt test-success.t
549 running 1 tests using 1 parallel processes
549 running 1 tests using 1 parallel processes
550 .
550 .
551 # Ran 1 tests, 0 skipped, 0 failed.
551 # Ran 1 tests, 0 skipped, 0 failed.
552
552
553 success w/ keyword
553 success w/ keyword
554 $ rt -k xyzzy
554 $ rt -k xyzzy
555 running 2 tests using 1 parallel processes
555 running 2 tests using 1 parallel processes
556 .
556 .
557 # Ran 2 tests, 1 skipped, 0 failed.
557 # Ran 2 tests, 1 skipped, 0 failed.
558
558
559 failed
559 failed
560
560
561 $ rt test-failure.t
561 $ rt test-failure.t
562 running 1 tests using 1 parallel processes
562 running 1 tests using 1 parallel processes
563
563
564 --- $TESTTMP/test-failure.t
564 --- $TESTTMP/test-failure.t
565 +++ $TESTTMP/test-failure.t.err
565 +++ $TESTTMP/test-failure.t.err
566 @@ -1,5 +1,5 @@
566 @@ -1,5 +1,5 @@
567 $ echo babar
567 $ echo babar
568 - rataxes
568 - rataxes
569 + babar
569 + babar
570 This is a noop statement so that
570 This is a noop statement so that
571 this test is still more bytes than success.
571 this test is still more bytes than success.
572 pad pad pad pad............................................................
572 pad pad pad pad............................................................
573
573
574 ERROR: test-failure.t output changed
574 ERROR: test-failure.t output changed
575 !
575 !
576 Failed test-failure.t: output changed
576 Failed test-failure.t: output changed
577 # Ran 1 tests, 0 skipped, 1 failed.
577 # Ran 1 tests, 0 skipped, 1 failed.
578 python hash seed: * (glob)
578 python hash seed: * (glob)
579 [1]
579 [1]
580
580
581 failure w/ keyword
581 failure w/ keyword
582 $ rt -k rataxes
582 $ rt -k rataxes
583 running 2 tests using 1 parallel processes
583 running 2 tests using 1 parallel processes
584
584
585 --- $TESTTMP/test-failure.t
585 --- $TESTTMP/test-failure.t
586 +++ $TESTTMP/test-failure.t.err
586 +++ $TESTTMP/test-failure.t.err
587 @@ -1,5 +1,5 @@
587 @@ -1,5 +1,5 @@
588 $ echo babar
588 $ echo babar
589 - rataxes
589 - rataxes
590 + babar
590 + babar
591 This is a noop statement so that
591 This is a noop statement so that
592 this test is still more bytes than success.
592 this test is still more bytes than success.
593 pad pad pad pad............................................................
593 pad pad pad pad............................................................
594
594
595 ERROR: test-failure.t output changed
595 ERROR: test-failure.t output changed
596 !
596 !
597 Failed test-failure.t: output changed
597 Failed test-failure.t: output changed
598 # Ran 2 tests, 1 skipped, 1 failed.
598 # Ran 2 tests, 1 skipped, 1 failed.
599 python hash seed: * (glob)
599 python hash seed: * (glob)
600 [1]
600 [1]
601
601
602 Verify that when a process fails to start we show a useful message
602 Verify that when a process fails to start we show a useful message
603 ==================================================================
603 ==================================================================
604
604
605 $ cat > test-serve-fail.t <<EOF
605 $ cat > test-serve-fail.t <<EOF
606 > $ echo 'abort: child process failed to start blah'
606 > $ echo 'abort: child process failed to start blah'
607 > EOF
607 > EOF
608 $ rt test-serve-fail.t
608 $ rt test-serve-fail.t
609 running 1 tests using 1 parallel processes
609 running 1 tests using 1 parallel processes
610
610
611 --- $TESTTMP/test-serve-fail.t
611 --- $TESTTMP/test-serve-fail.t
612 +++ $TESTTMP/test-serve-fail.t.err
612 +++ $TESTTMP/test-serve-fail.t.err
613 @@ -1* +1,2 @@ (glob)
613 @@ -1* +1,2 @@ (glob)
614 $ echo 'abort: child process failed to start blah'
614 $ echo 'abort: child process failed to start blah'
615 + abort: child process failed to start blah
615 + abort: child process failed to start blah
616
616
617 ERROR: test-serve-fail.t output changed
617 ERROR: test-serve-fail.t output changed
618 !
618 !
619 Failed test-serve-fail.t: server failed to start (HGPORT=*) (glob)
619 Failed test-serve-fail.t: server failed to start (HGPORT=*) (glob)
620 # Ran 1 tests, 0 skipped, 1 failed.
620 # Ran 1 tests, 0 skipped, 1 failed.
621 python hash seed: * (glob)
621 python hash seed: * (glob)
622 [1]
622 [1]
623 $ rm test-serve-fail.t
623 $ rm test-serve-fail.t
624
624
625 Verify that we can try other ports
625 Verify that we can try other ports
626 ===================================
626 ===================================
627
627
628 Extensions aren't inherited by the invoked run-tests.py. An extension
628 Extensions aren't inherited by the invoked run-tests.py. An extension
629 introducing a repository requirement could cause this to fail. So we force
629 introducing a repository requirement could cause this to fail. So we force
630 HGRCPATH to get a clean environment.
630 HGRCPATH to get a clean environment.
631
631
632 $ HGRCPATH= hg init inuse
632 $ HGRCPATH= hg init inuse
633 $ hg serve -R inuse -p $HGPORT -d --pid-file=blocks.pid
633 $ hg serve -R inuse -p $HGPORT -d --pid-file=blocks.pid
634 $ cat blocks.pid >> $DAEMON_PIDS
634 $ cat blocks.pid >> $DAEMON_PIDS
635 $ cat > test-serve-inuse.t <<EOF
635 $ cat > test-serve-inuse.t <<EOF
636 > $ hg serve -R `pwd`/inuse -p \$HGPORT -d --pid-file=hg.pid
636 > $ hg serve -R `pwd`/inuse -p \$HGPORT -d --pid-file=hg.pid
637 > $ cat hg.pid >> \$DAEMON_PIDS
637 > $ cat hg.pid >> \$DAEMON_PIDS
638 > EOF
638 > EOF
639 $ rt test-serve-inuse.t
639 $ rt test-serve-inuse.t
640 running 1 tests using 1 parallel processes
640 running 1 tests using 1 parallel processes
641 .
641 .
642 # Ran 1 tests, 0 skipped, 0 failed.
642 # Ran 1 tests, 0 skipped, 0 failed.
643 $ rm test-serve-inuse.t
643 $ rm test-serve-inuse.t
644 $ killdaemons.py $DAEMON_PIDS
644 $ killdaemons.py $DAEMON_PIDS
645
645
646 Running In Debug Mode
646 Running In Debug Mode
647 ======================
647 ======================
648
648
649 $ rt --debug 2>&1 | grep -v pwd
649 $ rt --debug 2>&1 | grep -v pwd
650 running 2 tests using 1 parallel processes
650 running 2 tests using 1 parallel processes
651 + alias hg=hg.exe (windows !)
651 + alias hg=hg.exe (windows !)
652 + echo *SALT* 0 0 (glob)
652 + echo *SALT* 0 0 (glob)
653 *SALT* 0 0 (glob)
653 *SALT* 0 0 (glob)
654 + echo babar
654 + echo babar
655 babar
655 babar
656 + echo *SALT* 10 0 (glob)
656 + echo *SALT* 10 0 (glob)
657 *SALT* 10 0 (glob)
657 *SALT* 10 0 (glob)
658 .+ alias hg=hg.exe (windows !)
658 .+ alias hg=hg.exe (windows !)
659 *+ echo *SALT* 0 0 (glob)
659 *+ echo *SALT* 0 0 (glob)
660 *SALT* 0 0 (glob)
660 *SALT* 0 0 (glob)
661 + echo babar
661 + echo babar
662 babar
662 babar
663 + echo *SALT* 2 0 (glob)
663 + echo *SALT* 2 0 (glob)
664 *SALT* 2 0 (glob)
664 *SALT* 2 0 (glob)
665 + echo xyzzy
665 + echo xyzzy
666 xyzzy
666 xyzzy
667 + echo *SALT* 9 0 (glob)
667 + echo *SALT* 9 0 (glob)
668 *SALT* 9 0 (glob)
668 *SALT* 9 0 (glob)
669 + printf *abc\ndef\nxyz\n* (glob)
669 + printf *abc\ndef\nxyz\n* (glob)
670 abc
670 abc
671 def
671 def
672 xyz
672 xyz
673 + echo *SALT* 15 0 (glob)
673 + echo *SALT* 15 0 (glob)
674 *SALT* 15 0 (glob)
674 *SALT* 15 0 (glob)
675 + printf *zyx\nwvu\ntsr\n* (glob)
675 + printf *zyx\nwvu\ntsr\n* (glob)
676 zyx
676 zyx
677 wvu
677 wvu
678 tsr
678 tsr
679 + echo *SALT* 22 0 (glob)
679 + echo *SALT* 22 0 (glob)
680 *SALT* 22 0 (glob)
680 *SALT* 22 0 (glob)
681 .
681 .
682 # Ran 2 tests, 0 skipped, 0 failed.
682 # Ran 2 tests, 0 skipped, 0 failed.
683
683
684 Parallel runs
684 Parallel runs
685 ==============
685 ==============
686
686
687 (duplicate the failing test to get predictable output)
687 (duplicate the failing test to get predictable output)
688 $ cp test-failure.t test-failure-copy.t
688 $ cp test-failure.t test-failure-copy.t
689
689
690 $ rt --jobs 2 test-failure*.t -n
690 $ rt --jobs 2 test-failure*.t -n
691 running 2 tests using 2 parallel processes
691 running 2 tests using 2 parallel processes
692 !!
692 !!
693 Failed test-failure*.t: output changed (glob)
693 Failed test-failure*.t: output changed (glob)
694 Failed test-failure*.t: output changed (glob)
694 Failed test-failure*.t: output changed (glob)
695 # Ran 2 tests, 0 skipped, 2 failed.
695 # Ran 2 tests, 0 skipped, 2 failed.
696 python hash seed: * (glob)
696 python hash seed: * (glob)
697 [1]
697 [1]
698
698
699 failures in parallel with --first should only print one failure
699 failures in parallel with --first should only print one failure
700 $ rt --jobs 2 --first test-failure*.t
700 $ rt --jobs 2 --first test-failure*.t
701 running 2 tests using 2 parallel processes
701 running 2 tests using 2 parallel processes
702
702
703 --- $TESTTMP/test-failure*.t (glob)
703 --- $TESTTMP/test-failure*.t (glob)
704 +++ $TESTTMP/test-failure*.t.err (glob)
704 +++ $TESTTMP/test-failure*.t.err (glob)
705 @@ -1,5 +1,5 @@
705 @@ -1,5 +1,5 @@
706 $ echo babar
706 $ echo babar
707 - rataxes
707 - rataxes
708 + babar
708 + babar
709 This is a noop statement so that
709 This is a noop statement so that
710 this test is still more bytes than success.
710 this test is still more bytes than success.
711 pad pad pad pad............................................................
711 pad pad pad pad............................................................
712
712
713 Failed test-failure*.t: output changed (glob)
713 Failed test-failure*.t: output changed (glob)
714 Failed test-failure*.t: output changed (glob)
714 Failed test-failure*.t: output changed (glob)
715 # Ran 2 tests, 0 skipped, 2 failed.
715 # Ran 2 tests, 0 skipped, 2 failed.
716 python hash seed: * (glob)
716 python hash seed: * (glob)
717 [1]
717 [1]
718
718
719
719
720 (delete the duplicated test file)
720 (delete the duplicated test file)
721 $ rm test-failure-copy.t
721 $ rm test-failure-copy.t
722
722
723 multiple runs per test should be parallelized
723 multiple runs per test should be parallelized
724
724
725 $ rt --jobs 2 --runs-per-test 2 test-success.t
725 $ rt --jobs 2 --runs-per-test 2 test-success.t
726 running 2 tests using 2 parallel processes
726 running 2 tests using 2 parallel processes
727 ..
727 ..
728 # Ran 2 tests, 0 skipped, 0 failed.
728 # Ran 2 tests, 0 skipped, 0 failed.
729
729
730 Interactive run
730 Interactive run
731 ===============
731 ===============
732
732
733 (backup the failing test)
733 (backup the failing test)
734 $ cp test-failure.t backup
734 $ cp test-failure.t backup
735
735
736 Refuse the fix
736 Refuse the fix
737
737
738 $ echo 'n' | rt -i
738 $ echo 'n' | rt -i
739 running 2 tests using 1 parallel processes
739 running 2 tests using 1 parallel processes
740
740
741 --- $TESTTMP/test-failure.t
741 --- $TESTTMP/test-failure.t
742 +++ $TESTTMP/test-failure.t.err
742 +++ $TESTTMP/test-failure.t.err
743 @@ -1,5 +1,5 @@
743 @@ -1,5 +1,5 @@
744 $ echo babar
744 $ echo babar
745 - rataxes
745 - rataxes
746 + babar
746 + babar
747 This is a noop statement so that
747 This is a noop statement so that
748 this test is still more bytes than success.
748 this test is still more bytes than success.
749 pad pad pad pad............................................................
749 pad pad pad pad............................................................
750 Accept this change? [y/N]
750 Accept this change? [y/N]
751 ERROR: test-failure.t output changed
751 ERROR: test-failure.t output changed
752 !.
752 !.
753 Failed test-failure.t: output changed
753 Failed test-failure.t: output changed
754 # Ran 2 tests, 0 skipped, 1 failed.
754 # Ran 2 tests, 0 skipped, 1 failed.
755 python hash seed: * (glob)
755 python hash seed: * (glob)
756 [1]
756 [1]
757
757
758 $ cat test-failure.t
758 $ cat test-failure.t
759 $ echo babar
759 $ echo babar
760 rataxes
760 rataxes
761 This is a noop statement so that
761 This is a noop statement so that
762 this test is still more bytes than success.
762 this test is still more bytes than success.
763 pad pad pad pad............................................................
763 pad pad pad pad............................................................
764 pad pad pad pad............................................................
764 pad pad pad pad............................................................
765 pad pad pad pad............................................................
765 pad pad pad pad............................................................
766 pad pad pad pad............................................................
766 pad pad pad pad............................................................
767 pad pad pad pad............................................................
767 pad pad pad pad............................................................
768 pad pad pad pad............................................................
768 pad pad pad pad............................................................
769
769
770 Interactive with custom view
770 Interactive with custom view
771
771
772 $ echo 'n' | rt -i --view echo
772 $ echo 'n' | rt -i --view echo
773 running 2 tests using 1 parallel processes
773 running 2 tests using 1 parallel processes
774 $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err
774 $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err
775 Accept this change? [y/N]* (glob)
775 Accept this change? [y/N]* (glob)
776 ERROR: test-failure.t output changed
776 ERROR: test-failure.t output changed
777 !.
777 !.
778 Failed test-failure.t: output changed
778 Failed test-failure.t: output changed
779 # Ran 2 tests, 0 skipped, 1 failed.
779 # Ran 2 tests, 0 skipped, 1 failed.
780 python hash seed: * (glob)
780 python hash seed: * (glob)
781 [1]
781 [1]
782
782
783 View the fix
783 View the fix
784
784
785 $ echo 'y' | rt --view echo
785 $ echo 'y' | rt --view echo
786 running 2 tests using 1 parallel processes
786 running 2 tests using 1 parallel processes
787 $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err
787 $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err
788
788
789 ERROR: test-failure.t output changed
789 ERROR: test-failure.t output changed
790 !.
790 !.
791 Failed test-failure.t: output changed
791 Failed test-failure.t: output changed
792 # Ran 2 tests, 0 skipped, 1 failed.
792 # Ran 2 tests, 0 skipped, 1 failed.
793 python hash seed: * (glob)
793 python hash seed: * (glob)
794 [1]
794 [1]
795
795
796 Accept the fix
796 Accept the fix
797
797
798 $ cat >> test-failure.t <<EOF
798 $ cat >> test-failure.t <<EOF
799 > $ echo 'saved backup bundle to \$TESTTMP/foo.hg'
799 > $ echo 'saved backup bundle to \$TESTTMP/foo.hg'
800 > saved backup bundle to \$TESTTMP/foo.hg
800 > saved backup bundle to \$TESTTMP/foo.hg
801 > $ echo 'saved backup bundle to \$TESTTMP/foo.hg'
801 > $ echo 'saved backup bundle to \$TESTTMP/foo.hg'
802 > saved backup bundle to $TESTTMP\\foo.hg
802 > saved backup bundle to $TESTTMP\\foo.hg
803 > $ echo 'saved backup bundle to \$TESTTMP/foo.hg'
803 > $ echo 'saved backup bundle to \$TESTTMP/foo.hg'
804 > saved backup bundle to \$TESTTMP/*.hg (glob)
804 > saved backup bundle to \$TESTTMP/*.hg (glob)
805 > EOF
805 > EOF
806 $ echo 'y' | rt -i 2>&1
806 $ echo 'y' | rt -i 2>&1
807 running 2 tests using 1 parallel processes
807 running 2 tests using 1 parallel processes
808
808
809 --- $TESTTMP/test-failure.t
809 --- $TESTTMP/test-failure.t
810 +++ $TESTTMP/test-failure.t.err
810 +++ $TESTTMP/test-failure.t.err
811 @@ -1,5 +1,5 @@
811 @@ -1,5 +1,5 @@
812 $ echo babar
812 $ echo babar
813 - rataxes
813 - rataxes
814 + babar
814 + babar
815 This is a noop statement so that
815 This is a noop statement so that
816 this test is still more bytes than success.
816 this test is still more bytes than success.
817 pad pad pad pad............................................................
817 pad pad pad pad............................................................
818 @@ -11,6 +11,6 @@
818 @@ -11,6 +11,6 @@
819 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
819 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
820 saved backup bundle to $TESTTMP/foo.hg
820 saved backup bundle to $TESTTMP/foo.hg
821 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
821 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
822 - saved backup bundle to $TESTTMP\foo.hg
822 - saved backup bundle to $TESTTMP\foo.hg
823 + saved backup bundle to $TESTTMP/foo.hg
823 + saved backup bundle to $TESTTMP/foo.hg
824 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
824 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
825 saved backup bundle to $TESTTMP/*.hg (glob)
825 saved backup bundle to $TESTTMP/*.hg (glob)
826 Accept this change? [y/N] ..
826 Accept this change? [y/N] ..
827 # Ran 2 tests, 0 skipped, 0 failed.
827 # Ran 2 tests, 0 skipped, 0 failed.
828
828
829 $ sed -e 's,(glob)$,&<,g' test-failure.t
829 $ sed -e 's,(glob)$,&<,g' test-failure.t
830 $ echo babar
830 $ echo babar
831 babar
831 babar
832 This is a noop statement so that
832 This is a noop statement so that
833 this test is still more bytes than success.
833 this test is still more bytes than success.
834 pad pad pad pad............................................................
834 pad pad pad pad............................................................
835 pad pad pad pad............................................................
835 pad pad pad pad............................................................
836 pad pad pad pad............................................................
836 pad pad pad pad............................................................
837 pad pad pad pad............................................................
837 pad pad pad pad............................................................
838 pad pad pad pad............................................................
838 pad pad pad pad............................................................
839 pad pad pad pad............................................................
839 pad pad pad pad............................................................
840 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
840 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
841 saved backup bundle to $TESTTMP/foo.hg
841 saved backup bundle to $TESTTMP/foo.hg
842 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
842 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
843 saved backup bundle to $TESTTMP/foo.hg
843 saved backup bundle to $TESTTMP/foo.hg
844 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
844 $ echo 'saved backup bundle to $TESTTMP/foo.hg'
845 saved backup bundle to $TESTTMP/*.hg (glob)<
845 saved backup bundle to $TESTTMP/*.hg (glob)<
846
846
847 $ rm test-failure.t
847 $ rm test-failure.t
848
848
849 Race condition - test file was modified when test is running
849 Race condition - test file was modified when test is running
850
850
851 $ TESTRACEDIR=`pwd`
851 $ TESTRACEDIR=`pwd`
852 $ export TESTRACEDIR
852 $ export TESTRACEDIR
853 $ cat > test-race.t <<EOF
853 $ cat > test-race.t <<EOF
854 > $ echo 1
854 > $ echo 1
855 > $ echo "# a new line" >> $TESTRACEDIR/test-race.t
855 > $ echo "# a new line" >> $TESTRACEDIR/test-race.t
856 > EOF
856 > EOF
857
857
858 $ rt -i test-race.t
858 $ rt -i test-race.t
859 running 1 tests using 1 parallel processes
859 running 1 tests using 1 parallel processes
860
860
861 --- $TESTTMP/test-race.t
861 --- $TESTTMP/test-race.t
862 +++ $TESTTMP/test-race.t.err
862 +++ $TESTTMP/test-race.t.err
863 @@ -1,2 +1,3 @@
863 @@ -1,2 +1,3 @@
864 $ echo 1
864 $ echo 1
865 + 1
865 + 1
866 $ echo "# a new line" >> $TESTTMP/test-race.t
866 $ echo "# a new line" >> $TESTTMP/test-race.t
867 Reference output has changed (run again to prompt changes)
867 Reference output has changed (run again to prompt changes)
868 ERROR: test-race.t output changed
868 ERROR: test-race.t output changed
869 !
869 !
870 Failed test-race.t: output changed
870 Failed test-race.t: output changed
871 # Ran 1 tests, 0 skipped, 1 failed.
871 # Ran 1 tests, 0 skipped, 1 failed.
872 python hash seed: * (glob)
872 python hash seed: * (glob)
873 [1]
873 [1]
874
874
875 $ rm test-race.t
875 $ rm test-race.t
876
876
877 When "#testcases" is used in .t files
877 When "#testcases" is used in .t files
878
878
879 $ cat >> test-cases.t <<EOF
879 $ cat >> test-cases.t <<EOF
880 > #testcases a b
880 > #testcases a b
881 > #if a
881 > #if a
882 > $ echo 1
882 > $ echo 1
883 > #endif
883 > #endif
884 > #if b
884 > #if b
885 > $ echo 2
885 > $ echo 2
886 > #endif
886 > #endif
887 > EOF
887 > EOF
888
888
889 $ cat <<EOF | rt -i test-cases.t 2>&1
889 $ cat <<EOF | rt -i test-cases.t 2>&1
890 > y
890 > y
891 > y
891 > y
892 > EOF
892 > EOF
893 running 2 tests using 1 parallel processes
893 running 2 tests using 1 parallel processes
894
894
895 --- $TESTTMP/test-cases.t
895 --- $TESTTMP/test-cases.t
896 +++ $TESTTMP/test-cases.t#a.err
896 +++ $TESTTMP/test-cases.t#a.err
897 @@ -1,6 +1,7 @@
897 @@ -1,6 +1,7 @@
898 #testcases a b
898 #testcases a b
899 #if a
899 #if a
900 $ echo 1
900 $ echo 1
901 + 1
901 + 1
902 #endif
902 #endif
903 #if b
903 #if b
904 $ echo 2
904 $ echo 2
905 Accept this change? [y/N] .
905 Accept this change? [y/N] .
906 --- $TESTTMP/test-cases.t
906 --- $TESTTMP/test-cases.t
907 +++ $TESTTMP/test-cases.t#b.err
907 +++ $TESTTMP/test-cases.t#b.err
908 @@ -5,4 +5,5 @@
908 @@ -5,4 +5,5 @@
909 #endif
909 #endif
910 #if b
910 #if b
911 $ echo 2
911 $ echo 2
912 + 2
912 + 2
913 #endif
913 #endif
914 Accept this change? [y/N] .
914 Accept this change? [y/N] .
915 # Ran 2 tests, 0 skipped, 0 failed.
915 # Ran 2 tests, 0 skipped, 0 failed.
916
916
917 $ cat test-cases.t
917 $ cat test-cases.t
918 #testcases a b
918 #testcases a b
919 #if a
919 #if a
920 $ echo 1
920 $ echo 1
921 1
921 1
922 #endif
922 #endif
923 #if b
923 #if b
924 $ echo 2
924 $ echo 2
925 2
925 2
926 #endif
926 #endif
927
927
928 $ cat >> test-cases.t <<'EOF'
928 $ cat >> test-cases.t <<'EOF'
929 > #if a
929 > #if a
930 > $ NAME=A
930 > $ NAME=A
931 > #else
931 > #else
932 > $ NAME=B
932 > $ NAME=B
933 > #endif
933 > #endif
934 > $ echo $NAME
934 > $ echo $NAME
935 > A (a !)
935 > A (a !)
936 > B (b !)
936 > B (b !)
937 > EOF
937 > EOF
938 $ rt test-cases.t
938 $ rt test-cases.t
939 running 2 tests using 1 parallel processes
939 running 2 tests using 1 parallel processes
940 ..
940 ..
941 # Ran 2 tests, 0 skipped, 0 failed.
941 # Ran 2 tests, 0 skipped, 0 failed.
942
942
943 When using multiple dimensions of "#testcases" in .t files
943 When using multiple dimensions of "#testcases" in .t files
944
944
945 $ cat > test-cases.t <<'EOF'
945 $ cat > test-cases.t <<'EOF'
946 > #testcases a b
946 > #testcases a b
947 > #testcases c d
947 > #testcases c d
948 > #if a d
948 > #if a d
949 > $ echo $TESTCASE
949 > $ echo $TESTCASE
950 > a#d
950 > a#d
951 > #endif
951 > #endif
952 > #if b c
952 > #if b c
953 > $ echo yes
953 > $ echo yes
954 > no
954 > no
955 > #endif
955 > #endif
956 > EOF
956 > EOF
957 $ rt test-cases.t
957 $ rt test-cases.t
958 running 4 tests using 1 parallel processes
958 running 4 tests using 1 parallel processes
959 ..
959 ..
960 --- $TESTTMP/test-cases.t
960 --- $TESTTMP/test-cases.t
961 +++ $TESTTMP/test-cases.t#b#c.err
961 +++ $TESTTMP/test-cases.t#b#c.err
962 @@ -6,5 +6,5 @@
962 @@ -6,5 +6,5 @@
963 #endif
963 #endif
964 #if b c
964 #if b c
965 $ echo yes
965 $ echo yes
966 - no
966 - no
967 + yes
967 + yes
968 #endif
968 #endif
969
969
970 ERROR: test-cases.t#b#c output changed
970 ERROR: test-cases.t#b#c output changed
971 !.
971 !.
972 Failed test-cases.t#b#c: output changed
972 Failed test-cases.t#b#c: output changed
973 # Ran 4 tests, 0 skipped, 1 failed.
973 # Ran 4 tests, 0 skipped, 1 failed.
974 python hash seed: * (glob)
974 python hash seed: * (glob)
975 [1]
975 [1]
976
976
977 $ rt --retest
978 running 5 tests using 1 parallel processes
979
980 --- $TESTTMP/test-cases.t
981 +++ $TESTTMP/test-cases.t#b#c.err
982 @@ -6,5 +6,5 @@
983 #endif
984 #if b c
985 $ echo yes
986 - no
987 + yes
988 #endif
989
990 ERROR: test-cases.t#b#c output changed
991 !
992 Failed test-cases.t#b#c: output changed
993 # Ran 5 tests, 4 skipped, 1 failed.
994 python hash seed: * (glob)
995 [1]
977 $ rm test-cases.t#b#c.err
996 $ rm test-cases.t#b#c.err
978 $ rm test-cases.t
997 $ rm test-cases.t
979
998
980 (reinstall)
999 (reinstall)
981 $ mv backup test-failure.t
1000 $ mv backup test-failure.t
982
1001
983 No Diff
1002 No Diff
984 ===============
1003 ===============
985
1004
986 $ rt --nodiff
1005 $ rt --nodiff
987 running 2 tests using 1 parallel processes
1006 running 2 tests using 1 parallel processes
988 !.
1007 !.
989 Failed test-failure.t: output changed
1008 Failed test-failure.t: output changed
990 # Ran 2 tests, 0 skipped, 1 failed.
1009 # Ran 2 tests, 0 skipped, 1 failed.
991 python hash seed: * (glob)
1010 python hash seed: * (glob)
992 [1]
1011 [1]
993
1012
994 test --tmpdir support
1013 test --tmpdir support
995 $ rt --tmpdir=$TESTTMP/keep test-success.t
1014 $ rt --tmpdir=$TESTTMP/keep test-success.t
996 running 1 tests using 1 parallel processes
1015 running 1 tests using 1 parallel processes
997
1016
998 Keeping testtmp dir: $TESTTMP/keep/child1/test-success.t
1017 Keeping testtmp dir: $TESTTMP/keep/child1/test-success.t
999 Keeping threadtmp dir: $TESTTMP/keep/child1
1018 Keeping threadtmp dir: $TESTTMP/keep/child1
1000 .
1019 .
1001 # Ran 1 tests, 0 skipped, 0 failed.
1020 # Ran 1 tests, 0 skipped, 0 failed.
1002
1021
1003 timeouts
1022 timeouts
1004 ========
1023 ========
1005 $ cat > test-timeout.t <<EOF
1024 $ cat > test-timeout.t <<EOF
1006 > $ sleep 2
1025 > $ sleep 2
1007 > $ echo pass
1026 > $ echo pass
1008 > pass
1027 > pass
1009 > EOF
1028 > EOF
1010 > echo '#require slow' > test-slow-timeout.t
1029 > echo '#require slow' > test-slow-timeout.t
1011 > cat test-timeout.t >> test-slow-timeout.t
1030 > cat test-timeout.t >> test-slow-timeout.t
1012 $ rt --timeout=1 --slowtimeout=3 test-timeout.t test-slow-timeout.t
1031 $ rt --timeout=1 --slowtimeout=3 test-timeout.t test-slow-timeout.t
1013 running 2 tests using 1 parallel processes
1032 running 2 tests using 1 parallel processes
1014 st
1033 st
1015 Skipped test-slow-timeout.t: missing feature: allow slow tests (use --allow-slow-tests)
1034 Skipped test-slow-timeout.t: missing feature: allow slow tests (use --allow-slow-tests)
1016 Failed test-timeout.t: timed out
1035 Failed test-timeout.t: timed out
1017 # Ran 1 tests, 1 skipped, 1 failed.
1036 # Ran 1 tests, 1 skipped, 1 failed.
1018 python hash seed: * (glob)
1037 python hash seed: * (glob)
1019 [1]
1038 [1]
1020 $ rt --timeout=1 --slowtimeout=3 \
1039 $ rt --timeout=1 --slowtimeout=3 \
1021 > test-timeout.t test-slow-timeout.t --allow-slow-tests
1040 > test-timeout.t test-slow-timeout.t --allow-slow-tests
1022 running 2 tests using 1 parallel processes
1041 running 2 tests using 1 parallel processes
1023 .t
1042 .t
1024 Failed test-timeout.t: timed out
1043 Failed test-timeout.t: timed out
1025 # Ran 2 tests, 0 skipped, 1 failed.
1044 # Ran 2 tests, 0 skipped, 1 failed.
1026 python hash seed: * (glob)
1045 python hash seed: * (glob)
1027 [1]
1046 [1]
1028 $ rm test-timeout.t test-slow-timeout.t
1047 $ rm test-timeout.t test-slow-timeout.t
1029
1048
1030 test for --time
1049 test for --time
1031 ==================
1050 ==================
1032
1051
1033 $ rt test-success.t --time
1052 $ rt test-success.t --time
1034 running 1 tests using 1 parallel processes
1053 running 1 tests using 1 parallel processes
1035 .
1054 .
1036 # Ran 1 tests, 0 skipped, 0 failed.
1055 # Ran 1 tests, 0 skipped, 0 failed.
1037 # Producing time report
1056 # Producing time report
1038 start end cuser csys real Test
1057 start end cuser csys real Test
1039 \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} test-success.t (re)
1058 \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} test-success.t (re)
1040
1059
1041 test for --time with --job enabled
1060 test for --time with --job enabled
1042 ====================================
1061 ====================================
1043
1062
1044 $ rt test-success.t --time --jobs 2
1063 $ rt test-success.t --time --jobs 2
1045 running 1 tests using 1 parallel processes
1064 running 1 tests using 1 parallel processes
1046 .
1065 .
1047 # Ran 1 tests, 0 skipped, 0 failed.
1066 # Ran 1 tests, 0 skipped, 0 failed.
1048 # Producing time report
1067 # Producing time report
1049 start end cuser csys real Test
1068 start end cuser csys real Test
1050 \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} test-success.t (re)
1069 \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} \s*[\d\.]{5,8} test-success.t (re)
1051
1070
1052 Skips
1071 Skips
1053 ================
1072 ================
1054 $ cat > test-skip.t <<EOF
1073 $ cat > test-skip.t <<EOF
1055 > $ echo xyzzy
1074 > $ echo xyzzy
1056 > #if true
1075 > #if true
1057 > #require false
1076 > #require false
1058 > #end
1077 > #end
1059 > EOF
1078 > EOF
1060 $ cat > test-noskip.t <<EOF
1079 $ cat > test-noskip.t <<EOF
1061 > #if false
1080 > #if false
1062 > #require false
1081 > #require false
1063 > #endif
1082 > #endif
1064 > EOF
1083 > EOF
1065 $ rt --nodiff
1084 $ rt --nodiff
1066 running 4 tests using 1 parallel processes
1085 running 4 tests using 1 parallel processes
1067 !.s.
1086 !.s.
1068 Skipped test-skip.t: missing feature: nail clipper
1087 Skipped test-skip.t: missing feature: nail clipper
1069 Failed test-failure.t: output changed
1088 Failed test-failure.t: output changed
1070 # Ran 3 tests, 1 skipped, 1 failed.
1089 # Ran 3 tests, 1 skipped, 1 failed.
1071 python hash seed: * (glob)
1090 python hash seed: * (glob)
1072 [1]
1091 [1]
1073
1092
1074 $ rm test-noskip.t
1093 $ rm test-noskip.t
1075 $ rt --keyword xyzzy
1094 $ rt --keyword xyzzy
1076 running 3 tests using 1 parallel processes
1095 running 3 tests using 1 parallel processes
1077 .s
1096 .s
1078 Skipped test-skip.t: missing feature: nail clipper
1097 Skipped test-skip.t: missing feature: nail clipper
1079 # Ran 2 tests, 2 skipped, 0 failed.
1098 # Ran 2 tests, 2 skipped, 0 failed.
1080
1099
1081 Skips with xml
1100 Skips with xml
1082 $ rt --keyword xyzzy \
1101 $ rt --keyword xyzzy \
1083 > --xunit=xunit.xml
1102 > --xunit=xunit.xml
1084 running 3 tests using 1 parallel processes
1103 running 3 tests using 1 parallel processes
1085 .s
1104 .s
1086 Skipped test-skip.t: missing feature: nail clipper
1105 Skipped test-skip.t: missing feature: nail clipper
1087 # Ran 2 tests, 2 skipped, 0 failed.
1106 # Ran 2 tests, 2 skipped, 0 failed.
1088 $ cat xunit.xml
1107 $ cat xunit.xml
1089 <?xml version="1.0" encoding="utf-8"?>
1108 <?xml version="1.0" encoding="utf-8"?>
1090 <testsuite errors="0" failures="0" name="run-tests" skipped="2" tests="2">
1109 <testsuite errors="0" failures="0" name="run-tests" skipped="2" tests="2">
1091 <testcase name="test-success.t" time="*"/> (glob)
1110 <testcase name="test-success.t" time="*"/> (glob)
1092 <testcase name="test-skip.t">
1111 <testcase name="test-skip.t">
1093 <skipped><![CDATA[missing feature: nail clipper]]></skipped> (py38 !)
1112 <skipped><![CDATA[missing feature: nail clipper]]></skipped> (py38 !)
1094 <skipped> (no-py38 !)
1113 <skipped> (no-py38 !)
1095 <![CDATA[missing feature: nail clipper]]> </skipped> (no-py38 !)
1114 <![CDATA[missing feature: nail clipper]]> </skipped> (no-py38 !)
1096 </testcase>
1115 </testcase>
1097 </testsuite>
1116 </testsuite>
1098
1117
1099 Missing skips or blacklisted skips don't count as executed:
1118 Missing skips or blacklisted skips don't count as executed:
1100 $ echo test-failure.t > blacklist
1119 $ echo test-failure.t > blacklist
1101 $ rt --blacklist=blacklist --json\
1120 $ rt --blacklist=blacklist --json\
1102 > test-failure.t test-bogus.t
1121 > test-failure.t test-bogus.t
1103 running 2 tests using 1 parallel processes
1122 running 2 tests using 1 parallel processes
1104 ss
1123 ss
1105 Skipped test-bogus.t: Doesn't exist
1124 Skipped test-bogus.t: Doesn't exist
1106 Skipped test-failure.t: blacklisted
1125 Skipped test-failure.t: blacklisted
1107 # Ran 0 tests, 2 skipped, 0 failed.
1126 # Ran 0 tests, 2 skipped, 0 failed.
1108 $ cat report.json
1127 $ cat report.json
1109 testreport ={
1128 testreport ={
1110 "test-bogus.t": {
1129 "test-bogus.t": {
1111 "result": "skip"
1130 "result": "skip"
1112 },
1131 },
1113 "test-failure.t": {
1132 "test-failure.t": {
1114 "result": "skip"
1133 "result": "skip"
1115 }
1134 }
1116 } (no-eol)
1135 } (no-eol)
1117
1136
1118 Whitelist trumps blacklist
1137 Whitelist trumps blacklist
1119 $ echo test-failure.t > whitelist
1138 $ echo test-failure.t > whitelist
1120 $ rt --blacklist=blacklist --whitelist=whitelist --json\
1139 $ rt --blacklist=blacklist --whitelist=whitelist --json\
1121 > test-failure.t test-bogus.t
1140 > test-failure.t test-bogus.t
1122 running 2 tests using 1 parallel processes
1141 running 2 tests using 1 parallel processes
1123 s
1142 s
1124 --- $TESTTMP/test-failure.t
1143 --- $TESTTMP/test-failure.t
1125 +++ $TESTTMP/test-failure.t.err
1144 +++ $TESTTMP/test-failure.t.err
1126 @@ -1,5 +1,5 @@
1145 @@ -1,5 +1,5 @@
1127 $ echo babar
1146 $ echo babar
1128 - rataxes
1147 - rataxes
1129 + babar
1148 + babar
1130 This is a noop statement so that
1149 This is a noop statement so that
1131 this test is still more bytes than success.
1150 this test is still more bytes than success.
1132 pad pad pad pad............................................................
1151 pad pad pad pad............................................................
1133
1152
1134 ERROR: test-failure.t output changed
1153 ERROR: test-failure.t output changed
1135 !
1154 !
1136 Skipped test-bogus.t: Doesn't exist
1155 Skipped test-bogus.t: Doesn't exist
1137 Failed test-failure.t: output changed
1156 Failed test-failure.t: output changed
1138 # Ran 1 tests, 1 skipped, 1 failed.
1157 # Ran 1 tests, 1 skipped, 1 failed.
1139 python hash seed: * (glob)
1158 python hash seed: * (glob)
1140 [1]
1159 [1]
1141
1160
1142 Ensure that --test-list causes only the tests listed in that file to
1161 Ensure that --test-list causes only the tests listed in that file to
1143 be executed.
1162 be executed.
1144 $ echo test-success.t >> onlytest
1163 $ echo test-success.t >> onlytest
1145 $ rt --test-list=onlytest
1164 $ rt --test-list=onlytest
1146 running 1 tests using 1 parallel processes
1165 running 1 tests using 1 parallel processes
1147 .
1166 .
1148 # Ran 1 tests, 0 skipped, 0 failed.
1167 # Ran 1 tests, 0 skipped, 0 failed.
1149 $ echo test-bogus.t >> anothertest
1168 $ echo test-bogus.t >> anothertest
1150 $ rt --test-list=onlytest --test-list=anothertest
1169 $ rt --test-list=onlytest --test-list=anothertest
1151 running 2 tests using 1 parallel processes
1170 running 2 tests using 1 parallel processes
1152 s.
1171 s.
1153 Skipped test-bogus.t: Doesn't exist
1172 Skipped test-bogus.t: Doesn't exist
1154 # Ran 1 tests, 1 skipped, 0 failed.
1173 # Ran 1 tests, 1 skipped, 0 failed.
1155 $ rm onlytest anothertest
1174 $ rm onlytest anothertest
1156
1175
1157 test for --json
1176 test for --json
1158 ==================
1177 ==================
1159
1178
1160 $ rt --json
1179 $ rt --json
1161 running 3 tests using 1 parallel processes
1180 running 3 tests using 1 parallel processes
1162
1181
1163 --- $TESTTMP/test-failure.t
1182 --- $TESTTMP/test-failure.t
1164 +++ $TESTTMP/test-failure.t.err
1183 +++ $TESTTMP/test-failure.t.err
1165 @@ -1,5 +1,5 @@
1184 @@ -1,5 +1,5 @@
1166 $ echo babar
1185 $ echo babar
1167 - rataxes
1186 - rataxes
1168 + babar
1187 + babar
1169 This is a noop statement so that
1188 This is a noop statement so that
1170 this test is still more bytes than success.
1189 this test is still more bytes than success.
1171 pad pad pad pad............................................................
1190 pad pad pad pad............................................................
1172
1191
1173 ERROR: test-failure.t output changed
1192 ERROR: test-failure.t output changed
1174 !.s
1193 !.s
1175 Skipped test-skip.t: missing feature: nail clipper
1194 Skipped test-skip.t: missing feature: nail clipper
1176 Failed test-failure.t: output changed
1195 Failed test-failure.t: output changed
1177 # Ran 2 tests, 1 skipped, 1 failed.
1196 # Ran 2 tests, 1 skipped, 1 failed.
1178 python hash seed: * (glob)
1197 python hash seed: * (glob)
1179 [1]
1198 [1]
1180
1199
1181 $ cat report.json
1200 $ cat report.json
1182 testreport ={
1201 testreport ={
1183 "test-failure.t": [\{] (re)
1202 "test-failure.t": [\{] (re)
1184 "csys": "\s*\d+\.\d{3,4}", ? (re)
1203 "csys": "\s*\d+\.\d{3,4}", ? (re)
1185 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1204 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1186 "diff": "---.+\+\+\+.+", ? (re)
1205 "diff": "---.+\+\+\+.+", ? (re)
1187 "end": "\s*\d+\.\d{3,4}", ? (re)
1206 "end": "\s*\d+\.\d{3,4}", ? (re)
1188 "result": "failure", ? (re)
1207 "result": "failure", ? (re)
1189 "start": "\s*\d+\.\d{3,4}", ? (re)
1208 "start": "\s*\d+\.\d{3,4}", ? (re)
1190 "time": "\s*\d+\.\d{3,4}" (re)
1209 "time": "\s*\d+\.\d{3,4}" (re)
1191 }, ? (re)
1210 }, ? (re)
1192 "test-skip.t": {
1211 "test-skip.t": {
1193 "csys": "\s*\d+\.\d{3,4}", ? (re)
1212 "csys": "\s*\d+\.\d{3,4}", ? (re)
1194 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1213 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1195 "diff": "", ? (re)
1214 "diff": "", ? (re)
1196 "end": "\s*\d+\.\d{3,4}", ? (re)
1215 "end": "\s*\d+\.\d{3,4}", ? (re)
1197 "result": "skip", ? (re)
1216 "result": "skip", ? (re)
1198 "start": "\s*\d+\.\d{3,4}", ? (re)
1217 "start": "\s*\d+\.\d{3,4}", ? (re)
1199 "time": "\s*\d+\.\d{3,4}" (re)
1218 "time": "\s*\d+\.\d{3,4}" (re)
1200 }, ? (re)
1219 }, ? (re)
1201 "test-success.t": [\{] (re)
1220 "test-success.t": [\{] (re)
1202 "csys": "\s*\d+\.\d{3,4}", ? (re)
1221 "csys": "\s*\d+\.\d{3,4}", ? (re)
1203 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1222 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1204 "diff": "", ? (re)
1223 "diff": "", ? (re)
1205 "end": "\s*\d+\.\d{3,4}", ? (re)
1224 "end": "\s*\d+\.\d{3,4}", ? (re)
1206 "result": "success", ? (re)
1225 "result": "success", ? (re)
1207 "start": "\s*\d+\.\d{3,4}", ? (re)
1226 "start": "\s*\d+\.\d{3,4}", ? (re)
1208 "time": "\s*\d+\.\d{3,4}" (re)
1227 "time": "\s*\d+\.\d{3,4}" (re)
1209 }
1228 }
1210 } (no-eol)
1229 } (no-eol)
1211 --json with --outputdir
1230 --json with --outputdir
1212
1231
1213 $ rm report.json
1232 $ rm report.json
1214 $ rm -r output
1233 $ rm -r output
1215 $ mkdir output
1234 $ mkdir output
1216 $ rt --json --outputdir output
1235 $ rt --json --outputdir output
1217 running 3 tests using 1 parallel processes
1236 running 3 tests using 1 parallel processes
1218
1237
1219 --- $TESTTMP/test-failure.t
1238 --- $TESTTMP/test-failure.t
1220 +++ $TESTTMP/output/test-failure.t.err
1239 +++ $TESTTMP/output/test-failure.t.err
1221 @@ -1,5 +1,5 @@
1240 @@ -1,5 +1,5 @@
1222 $ echo babar
1241 $ echo babar
1223 - rataxes
1242 - rataxes
1224 + babar
1243 + babar
1225 This is a noop statement so that
1244 This is a noop statement so that
1226 this test is still more bytes than success.
1245 this test is still more bytes than success.
1227 pad pad pad pad............................................................
1246 pad pad pad pad............................................................
1228
1247
1229 ERROR: test-failure.t output changed
1248 ERROR: test-failure.t output changed
1230 !.s
1249 !.s
1231 Skipped test-skip.t: missing feature: nail clipper
1250 Skipped test-skip.t: missing feature: nail clipper
1232 Failed test-failure.t: output changed
1251 Failed test-failure.t: output changed
1233 # Ran 2 tests, 1 skipped, 1 failed.
1252 # Ran 2 tests, 1 skipped, 1 failed.
1234 python hash seed: * (glob)
1253 python hash seed: * (glob)
1235 [1]
1254 [1]
1236 $ f report.json
1255 $ f report.json
1237 report.json: file not found
1256 report.json: file not found
1238 $ cat output/report.json
1257 $ cat output/report.json
1239 testreport ={
1258 testreport ={
1240 "test-failure.t": [\{] (re)
1259 "test-failure.t": [\{] (re)
1241 "csys": "\s*\d+\.\d{3,4}", ? (re)
1260 "csys": "\s*\d+\.\d{3,4}", ? (re)
1242 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1261 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1243 "diff": "---.+\+\+\+.+", ? (re)
1262 "diff": "---.+\+\+\+.+", ? (re)
1244 "end": "\s*\d+\.\d{3,4}", ? (re)
1263 "end": "\s*\d+\.\d{3,4}", ? (re)
1245 "result": "failure", ? (re)
1264 "result": "failure", ? (re)
1246 "start": "\s*\d+\.\d{3,4}", ? (re)
1265 "start": "\s*\d+\.\d{3,4}", ? (re)
1247 "time": "\s*\d+\.\d{3,4}" (re)
1266 "time": "\s*\d+\.\d{3,4}" (re)
1248 }, ? (re)
1267 }, ? (re)
1249 "test-skip.t": {
1268 "test-skip.t": {
1250 "csys": "\s*\d+\.\d{3,4}", ? (re)
1269 "csys": "\s*\d+\.\d{3,4}", ? (re)
1251 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1270 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1252 "diff": "", ? (re)
1271 "diff": "", ? (re)
1253 "end": "\s*\d+\.\d{3,4}", ? (re)
1272 "end": "\s*\d+\.\d{3,4}", ? (re)
1254 "result": "skip", ? (re)
1273 "result": "skip", ? (re)
1255 "start": "\s*\d+\.\d{3,4}", ? (re)
1274 "start": "\s*\d+\.\d{3,4}", ? (re)
1256 "time": "\s*\d+\.\d{3,4}" (re)
1275 "time": "\s*\d+\.\d{3,4}" (re)
1257 }, ? (re)
1276 }, ? (re)
1258 "test-success.t": [\{] (re)
1277 "test-success.t": [\{] (re)
1259 "csys": "\s*\d+\.\d{3,4}", ? (re)
1278 "csys": "\s*\d+\.\d{3,4}", ? (re)
1260 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1279 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1261 "diff": "", ? (re)
1280 "diff": "", ? (re)
1262 "end": "\s*\d+\.\d{3,4}", ? (re)
1281 "end": "\s*\d+\.\d{3,4}", ? (re)
1263 "result": "success", ? (re)
1282 "result": "success", ? (re)
1264 "start": "\s*\d+\.\d{3,4}", ? (re)
1283 "start": "\s*\d+\.\d{3,4}", ? (re)
1265 "time": "\s*\d+\.\d{3,4}" (re)
1284 "time": "\s*\d+\.\d{3,4}" (re)
1266 }
1285 }
1267 } (no-eol)
1286 } (no-eol)
1268 $ ls -a output
1287 $ ls -a output
1269 .
1288 .
1270 ..
1289 ..
1271 .testtimes
1290 .testtimes
1272 report.json
1291 report.json
1273 test-failure.t.err
1292 test-failure.t.err
1274
1293
1275 Test that failed test accepted through interactive are properly reported:
1294 Test that failed test accepted through interactive are properly reported:
1276
1295
1277 $ cp test-failure.t backup
1296 $ cp test-failure.t backup
1278 $ echo y | rt --json -i
1297 $ echo y | rt --json -i
1279 running 3 tests using 1 parallel processes
1298 running 3 tests using 1 parallel processes
1280
1299
1281 --- $TESTTMP/test-failure.t
1300 --- $TESTTMP/test-failure.t
1282 +++ $TESTTMP/test-failure.t.err
1301 +++ $TESTTMP/test-failure.t.err
1283 @@ -1,5 +1,5 @@
1302 @@ -1,5 +1,5 @@
1284 $ echo babar
1303 $ echo babar
1285 - rataxes
1304 - rataxes
1286 + babar
1305 + babar
1287 This is a noop statement so that
1306 This is a noop statement so that
1288 this test is still more bytes than success.
1307 this test is still more bytes than success.
1289 pad pad pad pad............................................................
1308 pad pad pad pad............................................................
1290 Accept this change? [y/N] ..s
1309 Accept this change? [y/N] ..s
1291 Skipped test-skip.t: missing feature: nail clipper
1310 Skipped test-skip.t: missing feature: nail clipper
1292 # Ran 2 tests, 1 skipped, 0 failed.
1311 # Ran 2 tests, 1 skipped, 0 failed.
1293
1312
1294 $ cat report.json
1313 $ cat report.json
1295 testreport ={
1314 testreport ={
1296 "test-failure.t": [\{] (re)
1315 "test-failure.t": [\{] (re)
1297 "csys": "\s*\d+\.\d{3,4}", ? (re)
1316 "csys": "\s*\d+\.\d{3,4}", ? (re)
1298 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1317 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1299 "diff": "", ? (re)
1318 "diff": "", ? (re)
1300 "end": "\s*\d+\.\d{3,4}", ? (re)
1319 "end": "\s*\d+\.\d{3,4}", ? (re)
1301 "result": "success", ? (re)
1320 "result": "success", ? (re)
1302 "start": "\s*\d+\.\d{3,4}", ? (re)
1321 "start": "\s*\d+\.\d{3,4}", ? (re)
1303 "time": "\s*\d+\.\d{3,4}" (re)
1322 "time": "\s*\d+\.\d{3,4}" (re)
1304 }, ? (re)
1323 }, ? (re)
1305 "test-skip.t": {
1324 "test-skip.t": {
1306 "csys": "\s*\d+\.\d{3,4}", ? (re)
1325 "csys": "\s*\d+\.\d{3,4}", ? (re)
1307 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1326 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1308 "diff": "", ? (re)
1327 "diff": "", ? (re)
1309 "end": "\s*\d+\.\d{3,4}", ? (re)
1328 "end": "\s*\d+\.\d{3,4}", ? (re)
1310 "result": "skip", ? (re)
1329 "result": "skip", ? (re)
1311 "start": "\s*\d+\.\d{3,4}", ? (re)
1330 "start": "\s*\d+\.\d{3,4}", ? (re)
1312 "time": "\s*\d+\.\d{3,4}" (re)
1331 "time": "\s*\d+\.\d{3,4}" (re)
1313 }, ? (re)
1332 }, ? (re)
1314 "test-success.t": [\{] (re)
1333 "test-success.t": [\{] (re)
1315 "csys": "\s*\d+\.\d{3,4}", ? (re)
1334 "csys": "\s*\d+\.\d{3,4}", ? (re)
1316 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1335 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1317 "diff": "", ? (re)
1336 "diff": "", ? (re)
1318 "end": "\s*\d+\.\d{3,4}", ? (re)
1337 "end": "\s*\d+\.\d{3,4}", ? (re)
1319 "result": "success", ? (re)
1338 "result": "success", ? (re)
1320 "start": "\s*\d+\.\d{3,4}", ? (re)
1339 "start": "\s*\d+\.\d{3,4}", ? (re)
1321 "time": "\s*\d+\.\d{3,4}" (re)
1340 "time": "\s*\d+\.\d{3,4}" (re)
1322 }
1341 }
1323 } (no-eol)
1342 } (no-eol)
1324 $ mv backup test-failure.t
1343 $ mv backup test-failure.t
1325
1344
1326 backslash on end of line with glob matching is handled properly
1345 backslash on end of line with glob matching is handled properly
1327
1346
1328 $ cat > test-glob-backslash.t << EOF
1347 $ cat > test-glob-backslash.t << EOF
1329 > $ echo 'foo bar \\'
1348 > $ echo 'foo bar \\'
1330 > foo * \ (glob)
1349 > foo * \ (glob)
1331 > EOF
1350 > EOF
1332
1351
1333 $ rt test-glob-backslash.t
1352 $ rt test-glob-backslash.t
1334 running 1 tests using 1 parallel processes
1353 running 1 tests using 1 parallel processes
1335 .
1354 .
1336 # Ran 1 tests, 0 skipped, 0 failed.
1355 # Ran 1 tests, 0 skipped, 0 failed.
1337
1356
1338 $ rm -f test-glob-backslash.t
1357 $ rm -f test-glob-backslash.t
1339
1358
1340 Test globbing of local IP addresses
1359 Test globbing of local IP addresses
1341 $ echo 172.16.18.1
1360 $ echo 172.16.18.1
1342 $LOCALIP (glob)
1361 $LOCALIP (glob)
1343 $ echo dead:beef::1
1362 $ echo dead:beef::1
1344 $LOCALIP (glob)
1363 $LOCALIP (glob)
1345
1364
1346 Add support for external test formatter
1365 Add support for external test formatter
1347 =======================================
1366 =======================================
1348
1367
1349 $ CUSTOM_TEST_RESULT=basic_test_result "$PYTHON" $TESTDIR/run-tests.py --with-hg=`which hg` -j1 "$@" test-success.t test-failure.t
1368 $ CUSTOM_TEST_RESULT=basic_test_result "$PYTHON" $TESTDIR/run-tests.py --with-hg=`which hg` -j1 "$@" test-success.t test-failure.t
1350 running 2 tests using 1 parallel processes
1369 running 2 tests using 1 parallel processes
1351
1370
1352 # Ran 2 tests, 0 skipped, 0 failed.
1371 # Ran 2 tests, 0 skipped, 0 failed.
1353 ON_START! <__main__.TestSuite tests=[<__main__.TTest testMethod=test-failure.t>, <__main__.TTest testMethod=test-success.t>]>
1372 ON_START! <__main__.TestSuite tests=[<__main__.TTest testMethod=test-failure.t>, <__main__.TTest testMethod=test-success.t>]>
1354 FAILURE! test-failure.t output changed
1373 FAILURE! test-failure.t output changed
1355 SUCCESS! test-success.t
1374 SUCCESS! test-success.t
1356 ON_END!
1375 ON_END!
1357
1376
1358 Test reusability for third party tools
1377 Test reusability for third party tools
1359 ======================================
1378 ======================================
1360
1379
1361 $ mkdir "$TESTTMP"/anothertests
1380 $ mkdir "$TESTTMP"/anothertests
1362 $ cd "$TESTTMP"/anothertests
1381 $ cd "$TESTTMP"/anothertests
1363
1382
1364 test that `run-tests.py` can execute hghave, even if it runs not in
1383 test that `run-tests.py` can execute hghave, even if it runs not in
1365 Mercurial source tree.
1384 Mercurial source tree.
1366
1385
1367 $ cat > test-hghave.t <<EOF
1386 $ cat > test-hghave.t <<EOF
1368 > #require true
1387 > #require true
1369 > $ echo foo
1388 > $ echo foo
1370 > foo
1389 > foo
1371 > EOF
1390 > EOF
1372 $ rt test-hghave.t
1391 $ rt test-hghave.t
1373 running 1 tests using 1 parallel processes
1392 running 1 tests using 1 parallel processes
1374 .
1393 .
1375 # Ran 1 tests, 0 skipped, 0 failed.
1394 # Ran 1 tests, 0 skipped, 0 failed.
1376
1395
1377 test that RUNTESTDIR refers the directory, in which `run-tests.py` now
1396 test that RUNTESTDIR refers the directory, in which `run-tests.py` now
1378 running is placed.
1397 running is placed.
1379
1398
1380 $ cat > test-runtestdir.t <<EOF
1399 $ cat > test-runtestdir.t <<EOF
1381 > - $TESTDIR, in which test-run-tests.t is placed
1400 > - $TESTDIR, in which test-run-tests.t is placed
1382 > - \$TESTDIR, in which test-runtestdir.t is placed (expanded at runtime)
1401 > - \$TESTDIR, in which test-runtestdir.t is placed (expanded at runtime)
1383 > - \$RUNTESTDIR, in which run-tests.py is placed (expanded at runtime)
1402 > - \$RUNTESTDIR, in which run-tests.py is placed (expanded at runtime)
1384 >
1403 >
1385 > #if windows
1404 > #if windows
1386 > $ test "\$TESTDIR" = "$TESTTMP\anothertests"
1405 > $ test "\$TESTDIR" = "$TESTTMP\anothertests"
1387 > #else
1406 > #else
1388 > $ test "\$TESTDIR" = "$TESTTMP"/anothertests
1407 > $ test "\$TESTDIR" = "$TESTTMP"/anothertests
1389 > #endif
1408 > #endif
1390 > If this prints a path, that means RUNTESTDIR didn't equal
1409 > If this prints a path, that means RUNTESTDIR didn't equal
1391 > TESTDIR as it should have.
1410 > TESTDIR as it should have.
1392 > $ test "\$RUNTESTDIR" = "$TESTDIR" || echo "\$RUNTESTDIR"
1411 > $ test "\$RUNTESTDIR" = "$TESTDIR" || echo "\$RUNTESTDIR"
1393 > This should print the start of check-code. If this passes but the
1412 > This should print the start of check-code. If this passes but the
1394 > previous check failed, that means we found a copy of check-code at whatever
1413 > previous check failed, that means we found a copy of check-code at whatever
1395 > RUNTESTSDIR ended up containing, even though it doesn't match TESTDIR.
1414 > RUNTESTSDIR ended up containing, even though it doesn't match TESTDIR.
1396 > $ head -n 3 "\$RUNTESTDIR"/../contrib/check-code.py | sed 's@.!.*python@#!USRBINENVPY@'
1415 > $ head -n 3 "\$RUNTESTDIR"/../contrib/check-code.py | sed 's@.!.*python@#!USRBINENVPY@'
1397 > #!USRBINENVPY
1416 > #!USRBINENVPY
1398 > #
1417 > #
1399 > # check-code - a style and portability checker for Mercurial
1418 > # check-code - a style and portability checker for Mercurial
1400 > EOF
1419 > EOF
1401 $ rt test-runtestdir.t
1420 $ rt test-runtestdir.t
1402 running 1 tests using 1 parallel processes
1421 running 1 tests using 1 parallel processes
1403 .
1422 .
1404 # Ran 1 tests, 0 skipped, 0 failed.
1423 # Ran 1 tests, 0 skipped, 0 failed.
1405
1424
1406 #if execbit
1425 #if execbit
1407
1426
1408 test that TESTDIR is referred in PATH
1427 test that TESTDIR is referred in PATH
1409
1428
1410 $ cat > custom-command.sh <<EOF
1429 $ cat > custom-command.sh <<EOF
1411 > #!/bin/sh
1430 > #!/bin/sh
1412 > echo "hello world"
1431 > echo "hello world"
1413 > EOF
1432 > EOF
1414 $ chmod +x custom-command.sh
1433 $ chmod +x custom-command.sh
1415 $ cat > test-testdir-path.t <<EOF
1434 $ cat > test-testdir-path.t <<EOF
1416 > $ custom-command.sh
1435 > $ custom-command.sh
1417 > hello world
1436 > hello world
1418 > EOF
1437 > EOF
1419 $ rt test-testdir-path.t
1438 $ rt test-testdir-path.t
1420 running 1 tests using 1 parallel processes
1439 running 1 tests using 1 parallel processes
1421 .
1440 .
1422 # Ran 1 tests, 0 skipped, 0 failed.
1441 # Ran 1 tests, 0 skipped, 0 failed.
1423
1442
1424 #endif
1443 #endif
1425
1444
1426 test support for --allow-slow-tests
1445 test support for --allow-slow-tests
1427 $ cat > test-very-slow-test.t <<EOF
1446 $ cat > test-very-slow-test.t <<EOF
1428 > #require slow
1447 > #require slow
1429 > $ echo pass
1448 > $ echo pass
1430 > pass
1449 > pass
1431 > EOF
1450 > EOF
1432 $ rt test-very-slow-test.t
1451 $ rt test-very-slow-test.t
1433 running 1 tests using 1 parallel processes
1452 running 1 tests using 1 parallel processes
1434 s
1453 s
1435 Skipped test-very-slow-test.t: missing feature: allow slow tests (use --allow-slow-tests)
1454 Skipped test-very-slow-test.t: missing feature: allow slow tests (use --allow-slow-tests)
1436 # Ran 0 tests, 1 skipped, 0 failed.
1455 # Ran 0 tests, 1 skipped, 0 failed.
1437 $ rt $HGTEST_RUN_TESTS_PURE --allow-slow-tests test-very-slow-test.t
1456 $ rt $HGTEST_RUN_TESTS_PURE --allow-slow-tests test-very-slow-test.t
1438 running 1 tests using 1 parallel processes
1457 running 1 tests using 1 parallel processes
1439 .
1458 .
1440 # Ran 1 tests, 0 skipped, 0 failed.
1459 # Ran 1 tests, 0 skipped, 0 failed.
1441
1460
1442 support for running a test outside the current directory
1461 support for running a test outside the current directory
1443 $ mkdir nonlocal
1462 $ mkdir nonlocal
1444 $ cat > nonlocal/test-is-not-here.t << EOF
1463 $ cat > nonlocal/test-is-not-here.t << EOF
1445 > $ echo pass
1464 > $ echo pass
1446 > pass
1465 > pass
1447 > EOF
1466 > EOF
1448 $ rt nonlocal/test-is-not-here.t
1467 $ rt nonlocal/test-is-not-here.t
1449 running 1 tests using 1 parallel processes
1468 running 1 tests using 1 parallel processes
1450 .
1469 .
1451 # Ran 1 tests, 0 skipped, 0 failed.
1470 # Ran 1 tests, 0 skipped, 0 failed.
1452
1471
1453 support for automatically discovering test if arg is a folder
1472 support for automatically discovering test if arg is a folder
1454 $ mkdir tmp && cd tmp
1473 $ mkdir tmp && cd tmp
1455
1474
1456 $ cat > test-uno.t << EOF
1475 $ cat > test-uno.t << EOF
1457 > $ echo line
1476 > $ echo line
1458 > line
1477 > line
1459 > EOF
1478 > EOF
1460
1479
1461 $ cp test-uno.t test-dos.t
1480 $ cp test-uno.t test-dos.t
1462 $ cd ..
1481 $ cd ..
1463 $ cp -R tmp tmpp
1482 $ cp -R tmp tmpp
1464 $ cp tmp/test-uno.t test-solo.t
1483 $ cp tmp/test-uno.t test-solo.t
1465
1484
1466 $ rt tmp/ test-solo.t tmpp
1485 $ rt tmp/ test-solo.t tmpp
1467 running 5 tests using 1 parallel processes
1486 running 5 tests using 1 parallel processes
1468 .....
1487 .....
1469 # Ran 5 tests, 0 skipped, 0 failed.
1488 # Ran 5 tests, 0 skipped, 0 failed.
1470 $ rm -rf tmp tmpp
1489 $ rm -rf tmp tmpp
1471
1490
1472 support for running run-tests.py from another directory
1491 support for running run-tests.py from another directory
1473 $ mkdir tmp && cd tmp
1492 $ mkdir tmp && cd tmp
1474
1493
1475 $ cat > useful-file.sh << EOF
1494 $ cat > useful-file.sh << EOF
1476 > important command
1495 > important command
1477 > EOF
1496 > EOF
1478
1497
1479 $ cat > test-folder.t << EOF
1498 $ cat > test-folder.t << EOF
1480 > $ cat \$TESTDIR/useful-file.sh
1499 > $ cat \$TESTDIR/useful-file.sh
1481 > important command
1500 > important command
1482 > EOF
1501 > EOF
1483
1502
1484 $ cat > test-folder-fail.t << EOF
1503 $ cat > test-folder-fail.t << EOF
1485 > $ cat \$TESTDIR/useful-file.sh
1504 > $ cat \$TESTDIR/useful-file.sh
1486 > important commando
1505 > important commando
1487 > EOF
1506 > EOF
1488
1507
1489 $ cd ..
1508 $ cd ..
1490 $ rt tmp/test-*.t
1509 $ rt tmp/test-*.t
1491 running 2 tests using 1 parallel processes
1510 running 2 tests using 1 parallel processes
1492
1511
1493 --- $TESTTMP/anothertests/tmp/test-folder-fail.t
1512 --- $TESTTMP/anothertests/tmp/test-folder-fail.t
1494 +++ $TESTTMP/anothertests/tmp/test-folder-fail.t.err
1513 +++ $TESTTMP/anothertests/tmp/test-folder-fail.t.err
1495 @@ -1,2 +1,2 @@
1514 @@ -1,2 +1,2 @@
1496 $ cat $TESTDIR/useful-file.sh
1515 $ cat $TESTDIR/useful-file.sh
1497 - important commando
1516 - important commando
1498 + important command
1517 + important command
1499
1518
1500 ERROR: test-folder-fail.t output changed
1519 ERROR: test-folder-fail.t output changed
1501 !.
1520 !.
1502 Failed test-folder-fail.t: output changed
1521 Failed test-folder-fail.t: output changed
1503 # Ran 2 tests, 0 skipped, 1 failed.
1522 # Ran 2 tests, 0 skipped, 1 failed.
1504 python hash seed: * (glob)
1523 python hash seed: * (glob)
1505 [1]
1524 [1]
1506
1525
1507 support for bisecting failed tests automatically
1526 support for bisecting failed tests automatically
1508 $ hg init bisect
1527 $ hg init bisect
1509 $ cd bisect
1528 $ cd bisect
1510 $ cat >> test-bisect.t <<EOF
1529 $ cat >> test-bisect.t <<EOF
1511 > $ echo pass
1530 > $ echo pass
1512 > pass
1531 > pass
1513 > EOF
1532 > EOF
1514 $ hg add test-bisect.t
1533 $ hg add test-bisect.t
1515 $ hg ci -m 'good'
1534 $ hg ci -m 'good'
1516 $ cat >> test-bisect.t <<EOF
1535 $ cat >> test-bisect.t <<EOF
1517 > $ echo pass
1536 > $ echo pass
1518 > fail
1537 > fail
1519 > EOF
1538 > EOF
1520 $ hg ci -m 'bad'
1539 $ hg ci -m 'bad'
1521 $ rt --known-good-rev=0 test-bisect.t
1540 $ rt --known-good-rev=0 test-bisect.t
1522 running 1 tests using 1 parallel processes
1541 running 1 tests using 1 parallel processes
1523
1542
1524 --- $TESTTMP/anothertests/bisect/test-bisect.t
1543 --- $TESTTMP/anothertests/bisect/test-bisect.t
1525 +++ $TESTTMP/anothertests/bisect/test-bisect.t.err
1544 +++ $TESTTMP/anothertests/bisect/test-bisect.t.err
1526 @@ -1,4 +1,4 @@
1545 @@ -1,4 +1,4 @@
1527 $ echo pass
1546 $ echo pass
1528 pass
1547 pass
1529 $ echo pass
1548 $ echo pass
1530 - fail
1549 - fail
1531 + pass
1550 + pass
1532
1551
1533 ERROR: test-bisect.t output changed
1552 ERROR: test-bisect.t output changed
1534 !
1553 !
1535 Failed test-bisect.t: output changed
1554 Failed test-bisect.t: output changed
1536 test-bisect.t broken by 72cbf122d116 (bad)
1555 test-bisect.t broken by 72cbf122d116 (bad)
1537 # Ran 1 tests, 0 skipped, 1 failed.
1556 # Ran 1 tests, 0 skipped, 1 failed.
1538 python hash seed: * (glob)
1557 python hash seed: * (glob)
1539 [1]
1558 [1]
1540
1559
1541 $ cd ..
1560 $ cd ..
1542
1561
1543 support bisecting a separate repo
1562 support bisecting a separate repo
1544
1563
1545 $ hg init bisect-dependent
1564 $ hg init bisect-dependent
1546 $ cd bisect-dependent
1565 $ cd bisect-dependent
1547 $ cat > test-bisect-dependent.t <<EOF
1566 $ cat > test-bisect-dependent.t <<EOF
1548 > $ tail -1 \$TESTDIR/../bisect/test-bisect.t
1567 > $ tail -1 \$TESTDIR/../bisect/test-bisect.t
1549 > pass
1568 > pass
1550 > EOF
1569 > EOF
1551 $ hg commit -Am dependent test-bisect-dependent.t
1570 $ hg commit -Am dependent test-bisect-dependent.t
1552
1571
1553 $ rt --known-good-rev=0 test-bisect-dependent.t
1572 $ rt --known-good-rev=0 test-bisect-dependent.t
1554 running 1 tests using 1 parallel processes
1573 running 1 tests using 1 parallel processes
1555
1574
1556 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1575 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1557 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1576 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1558 @@ -1,2 +1,2 @@
1577 @@ -1,2 +1,2 @@
1559 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1578 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1560 - pass
1579 - pass
1561 + fail
1580 + fail
1562
1581
1563 ERROR: test-bisect-dependent.t output changed
1582 ERROR: test-bisect-dependent.t output changed
1564 !
1583 !
1565 Failed test-bisect-dependent.t: output changed
1584 Failed test-bisect-dependent.t: output changed
1566 Failed to identify failure point for test-bisect-dependent.t
1585 Failed to identify failure point for test-bisect-dependent.t
1567 # Ran 1 tests, 0 skipped, 1 failed.
1586 # Ran 1 tests, 0 skipped, 1 failed.
1568 python hash seed: * (glob)
1587 python hash seed: * (glob)
1569 [1]
1588 [1]
1570
1589
1571 $ rt --bisect-repo=../test-bisect test-bisect-dependent.t
1590 $ rt --bisect-repo=../test-bisect test-bisect-dependent.t
1572 usage: run-tests.py [options] [tests]
1591 usage: run-tests.py [options] [tests]
1573 run-tests.py: error: --bisect-repo cannot be used without --known-good-rev
1592 run-tests.py: error: --bisect-repo cannot be used without --known-good-rev
1574 [2]
1593 [2]
1575
1594
1576 $ rt --known-good-rev=0 --bisect-repo=../bisect test-bisect-dependent.t
1595 $ rt --known-good-rev=0 --bisect-repo=../bisect test-bisect-dependent.t
1577 running 1 tests using 1 parallel processes
1596 running 1 tests using 1 parallel processes
1578
1597
1579 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1598 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1580 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1599 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1581 @@ -1,2 +1,2 @@
1600 @@ -1,2 +1,2 @@
1582 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1601 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1583 - pass
1602 - pass
1584 + fail
1603 + fail
1585
1604
1586 ERROR: test-bisect-dependent.t output changed
1605 ERROR: test-bisect-dependent.t output changed
1587 !
1606 !
1588 Failed test-bisect-dependent.t: output changed
1607 Failed test-bisect-dependent.t: output changed
1589 test-bisect-dependent.t broken by 72cbf122d116 (bad)
1608 test-bisect-dependent.t broken by 72cbf122d116 (bad)
1590 # Ran 1 tests, 0 skipped, 1 failed.
1609 # Ran 1 tests, 0 skipped, 1 failed.
1591 python hash seed: * (glob)
1610 python hash seed: * (glob)
1592 [1]
1611 [1]
1593
1612
1594 $ cd ..
1613 $ cd ..
1595
1614
1596 Test a broken #if statement doesn't break run-tests threading.
1615 Test a broken #if statement doesn't break run-tests threading.
1597 ==============================================================
1616 ==============================================================
1598 $ mkdir broken
1617 $ mkdir broken
1599 $ cd broken
1618 $ cd broken
1600 $ cat > test-broken.t <<EOF
1619 $ cat > test-broken.t <<EOF
1601 > true
1620 > true
1602 > #if notarealhghavefeature
1621 > #if notarealhghavefeature
1603 > $ false
1622 > $ false
1604 > #endif
1623 > #endif
1605 > EOF
1624 > EOF
1606 $ for f in 1 2 3 4 ; do
1625 $ for f in 1 2 3 4 ; do
1607 > cat > test-works-$f.t <<EOF
1626 > cat > test-works-$f.t <<EOF
1608 > This is test case $f
1627 > This is test case $f
1609 > $ sleep 1
1628 > $ sleep 1
1610 > EOF
1629 > EOF
1611 > done
1630 > done
1612 $ rt -j 2
1631 $ rt -j 2
1613 running 5 tests using 2 parallel processes
1632 running 5 tests using 2 parallel processes
1614 ....
1633 ....
1615 # Ran 5 tests, 0 skipped, 0 failed.
1634 # Ran 5 tests, 0 skipped, 0 failed.
1616 skipped: unknown feature: notarealhghavefeature
1635 skipped: unknown feature: notarealhghavefeature
1617
1636
1618 $ cd ..
1637 $ cd ..
1619 $ rm -rf broken
1638 $ rm -rf broken
1620
1639
1621 Test cases in .t files
1640 Test cases in .t files
1622 ======================
1641 ======================
1623 $ mkdir cases
1642 $ mkdir cases
1624 $ cd cases
1643 $ cd cases
1625 $ cat > test-cases-abc.t <<'EOF'
1644 $ cat > test-cases-abc.t <<'EOF'
1626 > #testcases A B C
1645 > #testcases A B C
1627 > $ V=B
1646 > $ V=B
1628 > #if A
1647 > #if A
1629 > $ V=A
1648 > $ V=A
1630 > #endif
1649 > #endif
1631 > #if C
1650 > #if C
1632 > $ V=C
1651 > $ V=C
1633 > #endif
1652 > #endif
1634 > $ echo $V | sed 's/A/C/'
1653 > $ echo $V | sed 's/A/C/'
1635 > C
1654 > C
1636 > #if C
1655 > #if C
1637 > $ [ $V = C ]
1656 > $ [ $V = C ]
1638 > #endif
1657 > #endif
1639 > #if A
1658 > #if A
1640 > $ [ $V = C ]
1659 > $ [ $V = C ]
1641 > [1]
1660 > [1]
1642 > #endif
1661 > #endif
1643 > #if no-C
1662 > #if no-C
1644 > $ [ $V = C ]
1663 > $ [ $V = C ]
1645 > [1]
1664 > [1]
1646 > #endif
1665 > #endif
1647 > $ [ $V = D ]
1666 > $ [ $V = D ]
1648 > [1]
1667 > [1]
1649 > EOF
1668 > EOF
1650 $ rt
1669 $ rt
1651 running 3 tests using 1 parallel processes
1670 running 3 tests using 1 parallel processes
1652 .
1671 .
1653 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1672 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1654 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1673 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1655 @@ -7,7 +7,7 @@
1674 @@ -7,7 +7,7 @@
1656 $ V=C
1675 $ V=C
1657 #endif
1676 #endif
1658 $ echo $V | sed 's/A/C/'
1677 $ echo $V | sed 's/A/C/'
1659 - C
1678 - C
1660 + B
1679 + B
1661 #if C
1680 #if C
1662 $ [ $V = C ]
1681 $ [ $V = C ]
1663 #endif
1682 #endif
1664
1683
1665 ERROR: test-cases-abc.t#B output changed
1684 ERROR: test-cases-abc.t#B output changed
1666 !.
1685 !.
1667 Failed test-cases-abc.t#B: output changed
1686 Failed test-cases-abc.t#B: output changed
1668 # Ran 3 tests, 0 skipped, 1 failed.
1687 # Ran 3 tests, 0 skipped, 1 failed.
1669 python hash seed: * (glob)
1688 python hash seed: * (glob)
1670 [1]
1689 [1]
1671
1690
1672 --restart works
1691 --restart works
1673
1692
1674 $ rt --restart
1693 $ rt --restart
1675 running 2 tests using 1 parallel processes
1694 running 2 tests using 1 parallel processes
1676
1695
1677 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1696 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1678 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1697 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1679 @@ -7,7 +7,7 @@
1698 @@ -7,7 +7,7 @@
1680 $ V=C
1699 $ V=C
1681 #endif
1700 #endif
1682 $ echo $V | sed 's/A/C/'
1701 $ echo $V | sed 's/A/C/'
1683 - C
1702 - C
1684 + B
1703 + B
1685 #if C
1704 #if C
1686 $ [ $V = C ]
1705 $ [ $V = C ]
1687 #endif
1706 #endif
1688
1707
1689 ERROR: test-cases-abc.t#B output changed
1708 ERROR: test-cases-abc.t#B output changed
1690 !.
1709 !.
1691 Failed test-cases-abc.t#B: output changed
1710 Failed test-cases-abc.t#B: output changed
1692 # Ran 2 tests, 0 skipped, 1 failed.
1711 # Ran 2 tests, 0 skipped, 1 failed.
1693 python hash seed: * (glob)
1712 python hash seed: * (glob)
1694 [1]
1713 [1]
1695
1714
1696 --restart works with outputdir
1715 --restart works with outputdir
1697
1716
1698 $ mkdir output
1717 $ mkdir output
1699 $ mv test-cases-abc.t#B.err output
1718 $ mv test-cases-abc.t#B.err output
1700 $ rt --restart --outputdir output
1719 $ rt --restart --outputdir output
1701 running 2 tests using 1 parallel processes
1720 running 2 tests using 1 parallel processes
1702
1721
1703 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1722 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1704 +++ $TESTTMP/anothertests/cases/output/test-cases-abc.t#B.err
1723 +++ $TESTTMP/anothertests/cases/output/test-cases-abc.t#B.err
1705 @@ -7,7 +7,7 @@
1724 @@ -7,7 +7,7 @@
1706 $ V=C
1725 $ V=C
1707 #endif
1726 #endif
1708 $ echo $V | sed 's/A/C/'
1727 $ echo $V | sed 's/A/C/'
1709 - C
1728 - C
1710 + B
1729 + B
1711 #if C
1730 #if C
1712 $ [ $V = C ]
1731 $ [ $V = C ]
1713 #endif
1732 #endif
1714
1733
1715 ERROR: test-cases-abc.t#B output changed
1734 ERROR: test-cases-abc.t#B output changed
1716 !.
1735 !.
1717 Failed test-cases-abc.t#B: output changed
1736 Failed test-cases-abc.t#B: output changed
1718 # Ran 2 tests, 0 skipped, 1 failed.
1737 # Ran 2 tests, 0 skipped, 1 failed.
1719 python hash seed: * (glob)
1738 python hash seed: * (glob)
1720 [1]
1739 [1]
1721
1740
1722 Test TESTCASE variable
1741 Test TESTCASE variable
1723
1742
1724 $ cat > test-cases-ab.t <<'EOF'
1743 $ cat > test-cases-ab.t <<'EOF'
1725 > $ dostuff() {
1744 > $ dostuff() {
1726 > > echo "In case $TESTCASE"
1745 > > echo "In case $TESTCASE"
1727 > > }
1746 > > }
1728 > #testcases A B
1747 > #testcases A B
1729 > #if A
1748 > #if A
1730 > $ dostuff
1749 > $ dostuff
1731 > In case A
1750 > In case A
1732 > #endif
1751 > #endif
1733 > #if B
1752 > #if B
1734 > $ dostuff
1753 > $ dostuff
1735 > In case B
1754 > In case B
1736 > #endif
1755 > #endif
1737 > EOF
1756 > EOF
1738 $ rt test-cases-ab.t
1757 $ rt test-cases-ab.t
1739 running 2 tests using 1 parallel processes
1758 running 2 tests using 1 parallel processes
1740 ..
1759 ..
1741 # Ran 2 tests, 0 skipped, 0 failed.
1760 # Ran 2 tests, 0 skipped, 0 failed.
1742
1761
1743 Support running a specific test case
1762 Support running a specific test case
1744
1763
1745 $ rt "test-cases-abc.t#B"
1764 $ rt "test-cases-abc.t#B"
1746 running 1 tests using 1 parallel processes
1765 running 1 tests using 1 parallel processes
1747
1766
1748 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1767 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1749 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1768 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1750 @@ -7,7 +7,7 @@
1769 @@ -7,7 +7,7 @@
1751 $ V=C
1770 $ V=C
1752 #endif
1771 #endif
1753 $ echo $V | sed 's/A/C/'
1772 $ echo $V | sed 's/A/C/'
1754 - C
1773 - C
1755 + B
1774 + B
1756 #if C
1775 #if C
1757 $ [ $V = C ]
1776 $ [ $V = C ]
1758 #endif
1777 #endif
1759
1778
1760 ERROR: test-cases-abc.t#B output changed
1779 ERROR: test-cases-abc.t#B output changed
1761 !
1780 !
1762 Failed test-cases-abc.t#B: output changed
1781 Failed test-cases-abc.t#B: output changed
1763 # Ran 1 tests, 0 skipped, 1 failed.
1782 # Ran 1 tests, 0 skipped, 1 failed.
1764 python hash seed: * (glob)
1783 python hash seed: * (glob)
1765 [1]
1784 [1]
1766
1785
1767 Support running multiple test cases in the same file
1786 Support running multiple test cases in the same file
1768
1787
1769 $ rt test-cases-abc.t#B test-cases-abc.t#C
1788 $ rt test-cases-abc.t#B test-cases-abc.t#C
1770 running 2 tests using 1 parallel processes
1789 running 2 tests using 1 parallel processes
1771
1790
1772 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1791 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1773 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1792 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1774 @@ -7,7 +7,7 @@
1793 @@ -7,7 +7,7 @@
1775 $ V=C
1794 $ V=C
1776 #endif
1795 #endif
1777 $ echo $V | sed 's/A/C/'
1796 $ echo $V | sed 's/A/C/'
1778 - C
1797 - C
1779 + B
1798 + B
1780 #if C
1799 #if C
1781 $ [ $V = C ]
1800 $ [ $V = C ]
1782 #endif
1801 #endif
1783
1802
1784 ERROR: test-cases-abc.t#B output changed
1803 ERROR: test-cases-abc.t#B output changed
1785 !.
1804 !.
1786 Failed test-cases-abc.t#B: output changed
1805 Failed test-cases-abc.t#B: output changed
1787 # Ran 2 tests, 0 skipped, 1 failed.
1806 # Ran 2 tests, 0 skipped, 1 failed.
1788 python hash seed: * (glob)
1807 python hash seed: * (glob)
1789 [1]
1808 [1]
1790
1809
1791 Support ignoring invalid test cases
1810 Support ignoring invalid test cases
1792
1811
1793 $ rt test-cases-abc.t#B test-cases-abc.t#D
1812 $ rt test-cases-abc.t#B test-cases-abc.t#D
1794 running 1 tests using 1 parallel processes
1813 running 1 tests using 1 parallel processes
1795
1814
1796 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1815 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1797 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1816 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1798 @@ -7,7 +7,7 @@
1817 @@ -7,7 +7,7 @@
1799 $ V=C
1818 $ V=C
1800 #endif
1819 #endif
1801 $ echo $V | sed 's/A/C/'
1820 $ echo $V | sed 's/A/C/'
1802 - C
1821 - C
1803 + B
1822 + B
1804 #if C
1823 #if C
1805 $ [ $V = C ]
1824 $ [ $V = C ]
1806 #endif
1825 #endif
1807
1826
1808 ERROR: test-cases-abc.t#B output changed
1827 ERROR: test-cases-abc.t#B output changed
1809 !
1828 !
1810 Failed test-cases-abc.t#B: output changed
1829 Failed test-cases-abc.t#B: output changed
1811 # Ran 1 tests, 0 skipped, 1 failed.
1830 # Ran 1 tests, 0 skipped, 1 failed.
1812 python hash seed: * (glob)
1831 python hash seed: * (glob)
1813 [1]
1832 [1]
1814
1833
1815 Support running complex test cases names
1834 Support running complex test cases names
1816
1835
1817 $ cat > test-cases-advanced-cases.t <<'EOF'
1836 $ cat > test-cases-advanced-cases.t <<'EOF'
1818 > #testcases simple case-with-dashes casewith_-.chars
1837 > #testcases simple case-with-dashes casewith_-.chars
1819 > $ echo $TESTCASE
1838 > $ echo $TESTCASE
1820 > simple
1839 > simple
1821 > EOF
1840 > EOF
1822
1841
1823 $ cat test-cases-advanced-cases.t
1842 $ cat test-cases-advanced-cases.t
1824 #testcases simple case-with-dashes casewith_-.chars
1843 #testcases simple case-with-dashes casewith_-.chars
1825 $ echo $TESTCASE
1844 $ echo $TESTCASE
1826 simple
1845 simple
1827
1846
1828 $ rt test-cases-advanced-cases.t
1847 $ rt test-cases-advanced-cases.t
1829 running 3 tests using 1 parallel processes
1848 running 3 tests using 1 parallel processes
1830
1849
1831 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1850 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1832 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1851 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1833 @@ -1,3 +1,3 @@
1852 @@ -1,3 +1,3 @@
1834 #testcases simple case-with-dashes casewith_-.chars
1853 #testcases simple case-with-dashes casewith_-.chars
1835 $ echo $TESTCASE
1854 $ echo $TESTCASE
1836 - simple
1855 - simple
1837 + case-with-dashes
1856 + case-with-dashes
1838
1857
1839 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1858 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1840 !
1859 !
1841 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1860 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1842 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1861 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1843 @@ -1,3 +1,3 @@
1862 @@ -1,3 +1,3 @@
1844 #testcases simple case-with-dashes casewith_-.chars
1863 #testcases simple case-with-dashes casewith_-.chars
1845 $ echo $TESTCASE
1864 $ echo $TESTCASE
1846 - simple
1865 - simple
1847 + casewith_-.chars
1866 + casewith_-.chars
1848
1867
1849 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1868 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1850 !.
1869 !.
1851 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1870 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1852 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1871 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1853 # Ran 3 tests, 0 skipped, 2 failed.
1872 # Ran 3 tests, 0 skipped, 2 failed.
1854 python hash seed: * (glob)
1873 python hash seed: * (glob)
1855 [1]
1874 [1]
1856
1875
1857 $ rt "test-cases-advanced-cases.t#case-with-dashes"
1876 $ rt "test-cases-advanced-cases.t#case-with-dashes"
1858 running 1 tests using 1 parallel processes
1877 running 1 tests using 1 parallel processes
1859
1878
1860 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1879 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1861 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1880 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1862 @@ -1,3 +1,3 @@
1881 @@ -1,3 +1,3 @@
1863 #testcases simple case-with-dashes casewith_-.chars
1882 #testcases simple case-with-dashes casewith_-.chars
1864 $ echo $TESTCASE
1883 $ echo $TESTCASE
1865 - simple
1884 - simple
1866 + case-with-dashes
1885 + case-with-dashes
1867
1886
1868 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1887 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1869 !
1888 !
1870 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1889 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1871 # Ran 1 tests, 0 skipped, 1 failed.
1890 # Ran 1 tests, 0 skipped, 1 failed.
1872 python hash seed: * (glob)
1891 python hash seed: * (glob)
1873 [1]
1892 [1]
1874
1893
1875 $ rt "test-cases-advanced-cases.t#casewith_-.chars"
1894 $ rt "test-cases-advanced-cases.t#casewith_-.chars"
1876 running 1 tests using 1 parallel processes
1895 running 1 tests using 1 parallel processes
1877
1896
1878 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1897 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1879 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1898 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1880 @@ -1,3 +1,3 @@
1899 @@ -1,3 +1,3 @@
1881 #testcases simple case-with-dashes casewith_-.chars
1900 #testcases simple case-with-dashes casewith_-.chars
1882 $ echo $TESTCASE
1901 $ echo $TESTCASE
1883 - simple
1902 - simple
1884 + casewith_-.chars
1903 + casewith_-.chars
1885
1904
1886 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1905 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1887 !
1906 !
1888 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1907 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1889 # Ran 1 tests, 0 skipped, 1 failed.
1908 # Ran 1 tests, 0 skipped, 1 failed.
1890 python hash seed: * (glob)
1909 python hash seed: * (glob)
1891 [1]
1910 [1]
1892
1911
1893 Test automatic pattern replacement
1912 Test automatic pattern replacement
1894 ==================================
1913 ==================================
1895
1914
1896 $ cat << EOF >> common-pattern.py
1915 $ cat << EOF >> common-pattern.py
1897 > substitutions = [
1916 > substitutions = [
1898 > (br'foo-(.*)\\b',
1917 > (br'foo-(.*)\\b',
1899 > br'\$XXX=\\1\$'),
1918 > br'\$XXX=\\1\$'),
1900 > (br'bar\\n',
1919 > (br'bar\\n',
1901 > br'\$YYY$\\n'),
1920 > br'\$YYY$\\n'),
1902 > ]
1921 > ]
1903 > EOF
1922 > EOF
1904
1923
1905 $ cat << EOF >> test-substitution.t
1924 $ cat << EOF >> test-substitution.t
1906 > $ echo foo-12
1925 > $ echo foo-12
1907 > \$XXX=12$
1926 > \$XXX=12$
1908 > $ echo foo-42
1927 > $ echo foo-42
1909 > \$XXX=42$
1928 > \$XXX=42$
1910 > $ echo bar prior
1929 > $ echo bar prior
1911 > bar prior
1930 > bar prior
1912 > $ echo lastbar
1931 > $ echo lastbar
1913 > last\$YYY$
1932 > last\$YYY$
1914 > $ echo foo-bar foo-baz
1933 > $ echo foo-bar foo-baz
1915 > EOF
1934 > EOF
1916
1935
1917 $ rt test-substitution.t
1936 $ rt test-substitution.t
1918 running 1 tests using 1 parallel processes
1937 running 1 tests using 1 parallel processes
1919
1938
1920 --- $TESTTMP/anothertests/cases/test-substitution.t
1939 --- $TESTTMP/anothertests/cases/test-substitution.t
1921 +++ $TESTTMP/anothertests/cases/test-substitution.t.err
1940 +++ $TESTTMP/anothertests/cases/test-substitution.t.err
1922 @@ -7,3 +7,4 @@
1941 @@ -7,3 +7,4 @@
1923 $ echo lastbar
1942 $ echo lastbar
1924 last$YYY$
1943 last$YYY$
1925 $ echo foo-bar foo-baz
1944 $ echo foo-bar foo-baz
1926 + $XXX=bar foo-baz$
1945 + $XXX=bar foo-baz$
1927
1946
1928 ERROR: test-substitution.t output changed
1947 ERROR: test-substitution.t output changed
1929 !
1948 !
1930 Failed test-substitution.t: output changed
1949 Failed test-substitution.t: output changed
1931 # Ran 1 tests, 0 skipped, 1 failed.
1950 # Ran 1 tests, 0 skipped, 1 failed.
1932 python hash seed: * (glob)
1951 python hash seed: * (glob)
1933 [1]
1952 [1]
1934
1953
1935 --extra-config-opt works
1954 --extra-config-opt works
1936
1955
1937 $ cat << EOF >> test-config-opt.t
1956 $ cat << EOF >> test-config-opt.t
1938 > $ hg init test-config-opt
1957 > $ hg init test-config-opt
1939 > $ hg -R test-config-opt purge
1958 > $ hg -R test-config-opt purge
1940 > EOF
1959 > EOF
1941
1960
1942 $ rt --extra-config-opt extensions.purge= test-config-opt.t
1961 $ rt --extra-config-opt extensions.purge= test-config-opt.t
1943 running 1 tests using 1 parallel processes
1962 running 1 tests using 1 parallel processes
1944 .
1963 .
1945 # Ran 1 tests, 0 skipped, 0 failed.
1964 # Ran 1 tests, 0 skipped, 0 failed.
1946
1965
1947 Test conditional output matching
1966 Test conditional output matching
1948 ================================
1967 ================================
1949
1968
1950 $ cat << EOF >> test-conditional-matching.t
1969 $ cat << EOF >> test-conditional-matching.t
1951 > #testcases foo bar
1970 > #testcases foo bar
1952 > $ echo richtig
1971 > $ echo richtig
1953 > richtig (true !)
1972 > richtig (true !)
1954 > $ echo falsch
1973 > $ echo falsch
1955 > falsch (false !)
1974 > falsch (false !)
1956 > #if foo
1975 > #if foo
1957 > $ echo arthur
1976 > $ echo arthur
1958 > arthur (bar !)
1977 > arthur (bar !)
1959 > #endif
1978 > #endif
1960 > $ echo celeste
1979 > $ echo celeste
1961 > celeste (foo !)
1980 > celeste (foo !)
1962 > $ echo zephir
1981 > $ echo zephir
1963 > zephir (bar !)
1982 > zephir (bar !)
1964 > EOF
1983 > EOF
1965
1984
1966 $ rt test-conditional-matching.t
1985 $ rt test-conditional-matching.t
1967 running 2 tests using 1 parallel processes
1986 running 2 tests using 1 parallel processes
1968
1987
1969 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
1988 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
1970 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#bar.err
1989 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#bar.err
1971 @@ -3,11 +3,13 @@
1990 @@ -3,11 +3,13 @@
1972 richtig (true !)
1991 richtig (true !)
1973 $ echo falsch
1992 $ echo falsch
1974 falsch (false !)
1993 falsch (false !)
1975 + falsch
1994 + falsch
1976 #if foo
1995 #if foo
1977 $ echo arthur
1996 $ echo arthur
1978 arthur \(bar !\) (re)
1997 arthur \(bar !\) (re)
1979 #endif
1998 #endif
1980 $ echo celeste
1999 $ echo celeste
1981 celeste \(foo !\) (re)
2000 celeste \(foo !\) (re)
1982 + celeste
2001 + celeste
1983 $ echo zephir
2002 $ echo zephir
1984 zephir \(bar !\) (re)
2003 zephir \(bar !\) (re)
1985
2004
1986 ERROR: test-conditional-matching.t#bar output changed
2005 ERROR: test-conditional-matching.t#bar output changed
1987 !
2006 !
1988 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
2007 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
1989 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#foo.err
2008 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#foo.err
1990 @@ -3,11 +3,14 @@
2009 @@ -3,11 +3,14 @@
1991 richtig (true !)
2010 richtig (true !)
1992 $ echo falsch
2011 $ echo falsch
1993 falsch (false !)
2012 falsch (false !)
1994 + falsch
2013 + falsch
1995 #if foo
2014 #if foo
1996 $ echo arthur
2015 $ echo arthur
1997 arthur \(bar !\) (re)
2016 arthur \(bar !\) (re)
1998 + arthur
2017 + arthur
1999 #endif
2018 #endif
2000 $ echo celeste
2019 $ echo celeste
2001 celeste \(foo !\) (re)
2020 celeste \(foo !\) (re)
2002 $ echo zephir
2021 $ echo zephir
2003 zephir \(bar !\) (re)
2022 zephir \(bar !\) (re)
2004 + zephir
2023 + zephir
2005
2024
2006 ERROR: test-conditional-matching.t#foo output changed
2025 ERROR: test-conditional-matching.t#foo output changed
2007 !
2026 !
2008 Failed test-conditional-matching.t#bar: output changed
2027 Failed test-conditional-matching.t#bar: output changed
2009 Failed test-conditional-matching.t#foo: output changed
2028 Failed test-conditional-matching.t#foo: output changed
2010 # Ran 2 tests, 0 skipped, 2 failed.
2029 # Ran 2 tests, 0 skipped, 2 failed.
2011 python hash seed: * (glob)
2030 python hash seed: * (glob)
2012 [1]
2031 [1]
General Comments 0
You need to be logged in to leave comments. Login now