##// END OF EJS Templates
test-run-tests: add missing backslash for Windows...
Raphaël Gomès -
r48364:57bdecf4 default
parent child Browse files
Show More
@@ -1,2069 +1,2069 b''
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 1 tests using 1 parallel processes
500 running 1 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 1 tests, 0 skipped, 1 failed.
515 # Ran 1 tests, 0 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 1 tests using 1 parallel processes
524 running 1 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 1 tests, 0 skipped, 1 failed.
539 # Ran 1 tests, 0 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
977 $ rt --retest
978 running 1 tests using 1 parallel processes
978 running 1 tests using 1 parallel processes
979
979
980 --- $TESTTMP/test-cases.t
980 --- $TESTTMP/test-cases.t
981 +++ $TESTTMP/test-cases.t#b#c.err
981 +++ $TESTTMP/test-cases.t#b#c.err
982 @@ -6,5 +6,5 @@
982 @@ -6,5 +6,5 @@
983 #endif
983 #endif
984 #if b c
984 #if b c
985 $ echo yes
985 $ echo yes
986 - no
986 - no
987 + yes
987 + yes
988 #endif
988 #endif
989
989
990 ERROR: test-cases.t#b#c output changed
990 ERROR: test-cases.t#b#c output changed
991 !
991 !
992 Failed test-cases.t#b#c: output changed
992 Failed test-cases.t#b#c: output changed
993 # Ran 1 tests, 0 skipped, 1 failed.
993 # Ran 1 tests, 0 skipped, 1 failed.
994 python hash seed: * (glob)
994 python hash seed: * (glob)
995 [1]
995 [1]
996 $ rm test-cases.t#b#c.err
996 $ rm test-cases.t#b#c.err
997 $ rm test-cases.t
997 $ rm test-cases.t
998
998
999 (reinstall)
999 (reinstall)
1000 $ mv backup test-failure.t
1000 $ mv backup test-failure.t
1001
1001
1002 No Diff
1002 No Diff
1003 ===============
1003 ===============
1004
1004
1005 $ rt --nodiff
1005 $ rt --nodiff
1006 running 2 tests using 1 parallel processes
1006 running 2 tests using 1 parallel processes
1007 !.
1007 !.
1008 Failed test-failure.t: output changed
1008 Failed test-failure.t: output changed
1009 # Ran 2 tests, 0 skipped, 1 failed.
1009 # Ran 2 tests, 0 skipped, 1 failed.
1010 python hash seed: * (glob)
1010 python hash seed: * (glob)
1011 [1]
1011 [1]
1012
1012
1013 test --tmpdir support
1013 test --tmpdir support
1014 $ rt --tmpdir=$TESTTMP/keep test-success.t
1014 $ rt --tmpdir=$TESTTMP/keep test-success.t
1015 running 1 tests using 1 parallel processes
1015 running 1 tests using 1 parallel processes
1016
1016
1017 Keeping testtmp dir: $TESTTMP/keep/child1/test-success.t
1017 Keeping testtmp dir: $TESTTMP/keep/child1/test-success.t
1018 Keeping threadtmp dir: $TESTTMP/keep/child1
1018 Keeping threadtmp dir: $TESTTMP/keep/child1
1019 .
1019 .
1020 # Ran 1 tests, 0 skipped, 0 failed.
1020 # Ran 1 tests, 0 skipped, 0 failed.
1021
1021
1022 timeouts
1022 timeouts
1023 ========
1023 ========
1024 $ cat > test-timeout.t <<EOF
1024 $ cat > test-timeout.t <<EOF
1025 > $ sleep 2
1025 > $ sleep 2
1026 > $ echo pass
1026 > $ echo pass
1027 > pass
1027 > pass
1028 > EOF
1028 > EOF
1029 > echo '#require slow' > test-slow-timeout.t
1029 > echo '#require slow' > test-slow-timeout.t
1030 > cat test-timeout.t >> test-slow-timeout.t
1030 > cat test-timeout.t >> test-slow-timeout.t
1031 $ 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
1032 running 2 tests using 1 parallel processes
1032 running 2 tests using 1 parallel processes
1033 st
1033 st
1034 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)
1035 Failed test-timeout.t: timed out
1035 Failed test-timeout.t: timed out
1036 # Ran 1 tests, 1 skipped, 1 failed.
1036 # Ran 1 tests, 1 skipped, 1 failed.
1037 python hash seed: * (glob)
1037 python hash seed: * (glob)
1038 [1]
1038 [1]
1039 $ rt --timeout=1 --slowtimeout=3 \
1039 $ rt --timeout=1 --slowtimeout=3 \
1040 > test-timeout.t test-slow-timeout.t --allow-slow-tests
1040 > test-timeout.t test-slow-timeout.t --allow-slow-tests
1041 running 2 tests using 1 parallel processes
1041 running 2 tests using 1 parallel processes
1042 .t
1042 .t
1043 Failed test-timeout.t: timed out
1043 Failed test-timeout.t: timed out
1044 # Ran 2 tests, 0 skipped, 1 failed.
1044 # Ran 2 tests, 0 skipped, 1 failed.
1045 python hash seed: * (glob)
1045 python hash seed: * (glob)
1046 [1]
1046 [1]
1047 $ rm test-timeout.t test-slow-timeout.t
1047 $ rm test-timeout.t test-slow-timeout.t
1048
1048
1049 test for --time
1049 test for --time
1050 ==================
1050 ==================
1051
1051
1052 $ rt test-success.t --time
1052 $ rt test-success.t --time
1053 running 1 tests using 1 parallel processes
1053 running 1 tests using 1 parallel processes
1054 .
1054 .
1055 # Ran 1 tests, 0 skipped, 0 failed.
1055 # Ran 1 tests, 0 skipped, 0 failed.
1056 # Producing time report
1056 # Producing time report
1057 start end cuser csys real Test
1057 start end cuser csys real Test
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)
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)
1059
1059
1060 test for --time with --job enabled
1060 test for --time with --job enabled
1061 ====================================
1061 ====================================
1062
1062
1063 $ rt test-success.t --time --jobs 2
1063 $ rt test-success.t --time --jobs 2
1064 running 1 tests using 1 parallel processes
1064 running 1 tests using 1 parallel processes
1065 .
1065 .
1066 # Ran 1 tests, 0 skipped, 0 failed.
1066 # Ran 1 tests, 0 skipped, 0 failed.
1067 # Producing time report
1067 # Producing time report
1068 start end cuser csys real Test
1068 start end cuser csys real Test
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)
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)
1070
1070
1071 Skips
1071 Skips
1072 ================
1072 ================
1073 $ cat > test-skip.t <<EOF
1073 $ cat > test-skip.t <<EOF
1074 > $ echo xyzzy
1074 > $ echo xyzzy
1075 > #if true
1075 > #if true
1076 > #require false
1076 > #require false
1077 > #end
1077 > #end
1078 > EOF
1078 > EOF
1079 $ cat > test-noskip.t <<EOF
1079 $ cat > test-noskip.t <<EOF
1080 > #if false
1080 > #if false
1081 > #require false
1081 > #require false
1082 > #endif
1082 > #endif
1083 > EOF
1083 > EOF
1084 $ rt --nodiff
1084 $ rt --nodiff
1085 running 4 tests using 1 parallel processes
1085 running 4 tests using 1 parallel processes
1086 !.s.
1086 !.s.
1087 Skipped test-skip.t: missing feature: nail clipper
1087 Skipped test-skip.t: missing feature: nail clipper
1088 Failed test-failure.t: output changed
1088 Failed test-failure.t: output changed
1089 # Ran 3 tests, 1 skipped, 1 failed.
1089 # Ran 3 tests, 1 skipped, 1 failed.
1090 python hash seed: * (glob)
1090 python hash seed: * (glob)
1091 [1]
1091 [1]
1092
1092
1093 $ rm test-noskip.t
1093 $ rm test-noskip.t
1094 $ rt --keyword xyzzy
1094 $ rt --keyword xyzzy
1095 running 3 tests using 1 parallel processes
1095 running 3 tests using 1 parallel processes
1096 .s
1096 .s
1097 Skipped test-skip.t: missing feature: nail clipper
1097 Skipped test-skip.t: missing feature: nail clipper
1098 # Ran 2 tests, 2 skipped, 0 failed.
1098 # Ran 2 tests, 2 skipped, 0 failed.
1099
1099
1100 Skips with xml
1100 Skips with xml
1101 $ rt --keyword xyzzy \
1101 $ rt --keyword xyzzy \
1102 > --xunit=xunit.xml
1102 > --xunit=xunit.xml
1103 running 3 tests using 1 parallel processes
1103 running 3 tests using 1 parallel processes
1104 .s
1104 .s
1105 Skipped test-skip.t: missing feature: nail clipper
1105 Skipped test-skip.t: missing feature: nail clipper
1106 # Ran 2 tests, 2 skipped, 0 failed.
1106 # Ran 2 tests, 2 skipped, 0 failed.
1107 $ cat xunit.xml
1107 $ cat xunit.xml
1108 <?xml version="1.0" encoding="utf-8"?>
1108 <?xml version="1.0" encoding="utf-8"?>
1109 <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">
1110 <testcase name="test-success.t" time="*"/> (glob)
1110 <testcase name="test-success.t" time="*"/> (glob)
1111 <testcase name="test-skip.t">
1111 <testcase name="test-skip.t">
1112 <skipped><![CDATA[missing feature: nail clipper]]></skipped> (py38 !)
1112 <skipped><![CDATA[missing feature: nail clipper]]></skipped> (py38 !)
1113 <skipped> (no-py38 !)
1113 <skipped> (no-py38 !)
1114 <![CDATA[missing feature: nail clipper]]> </skipped> (no-py38 !)
1114 <![CDATA[missing feature: nail clipper]]> </skipped> (no-py38 !)
1115 </testcase>
1115 </testcase>
1116 </testsuite>
1116 </testsuite>
1117
1117
1118 Missing skips or blacklisted skips don't count as executed:
1118 Missing skips or blacklisted skips don't count as executed:
1119 $ mkdir tests
1119 $ mkdir tests
1120 $ echo tests/test-failure.t > blacklist
1120 $ echo tests/test-failure.t > blacklist
1121 $ cp test-failure.t tests
1121 $ cp test-failure.t tests
1122 $ rt --blacklist=blacklist --json\
1122 $ rt --blacklist=blacklist --json\
1123 > tests/test-failure.t tests/test-bogus.t
1123 > tests/test-failure.t tests/test-bogus.t
1124 running 2 tests using 1 parallel processes
1124 running 2 tests using 1 parallel processes
1125 ss
1125 ss
1126 Skipped test-bogus.t: Doesn't exist
1126 Skipped test-bogus.t: Doesn't exist
1127 Skipped test-failure.t: blacklisted
1127 Skipped test-failure.t: blacklisted
1128 # Ran 0 tests, 2 skipped, 0 failed.
1128 # Ran 0 tests, 2 skipped, 0 failed.
1129 $ cat tests/report.json
1129 $ cat tests/report.json
1130 testreport ={
1130 testreport ={
1131 "test-bogus.t": {
1131 "test-bogus.t": {
1132 "result": "skip"
1132 "result": "skip"
1133 },
1133 },
1134 "test-failure.t": {
1134 "test-failure.t": {
1135 "result": "skip"
1135 "result": "skip"
1136 }
1136 }
1137 } (no-eol)
1137 } (no-eol)
1138 $ rm -r tests
1138 $ rm -r tests
1139 $ echo test-failure.t > blacklist
1139 $ echo test-failure.t > blacklist
1140
1140
1141 Whitelist trumps blacklist
1141 Whitelist trumps blacklist
1142 $ echo test-failure.t > whitelist
1142 $ echo test-failure.t > whitelist
1143 $ rt --blacklist=blacklist --whitelist=whitelist --json\
1143 $ rt --blacklist=blacklist --whitelist=whitelist --json\
1144 > test-failure.t test-bogus.t
1144 > test-failure.t test-bogus.t
1145 running 2 tests using 1 parallel processes
1145 running 2 tests using 1 parallel processes
1146 s
1146 s
1147 --- $TESTTMP/test-failure.t
1147 --- $TESTTMP/test-failure.t
1148 +++ $TESTTMP/test-failure.t.err
1148 +++ $TESTTMP/test-failure.t.err
1149 @@ -1,5 +1,5 @@
1149 @@ -1,5 +1,5 @@
1150 $ echo babar
1150 $ echo babar
1151 - rataxes
1151 - rataxes
1152 + babar
1152 + babar
1153 This is a noop statement so that
1153 This is a noop statement so that
1154 this test is still more bytes than success.
1154 this test is still more bytes than success.
1155 pad pad pad pad............................................................
1155 pad pad pad pad............................................................
1156
1156
1157 ERROR: test-failure.t output changed
1157 ERROR: test-failure.t output changed
1158 !
1158 !
1159 Skipped test-bogus.t: Doesn't exist
1159 Skipped test-bogus.t: Doesn't exist
1160 Failed test-failure.t: output changed
1160 Failed test-failure.t: output changed
1161 # Ran 1 tests, 1 skipped, 1 failed.
1161 # Ran 1 tests, 1 skipped, 1 failed.
1162 python hash seed: * (glob)
1162 python hash seed: * (glob)
1163 [1]
1163 [1]
1164
1164
1165 Ensure that --test-list causes only the tests listed in that file to
1165 Ensure that --test-list causes only the tests listed in that file to
1166 be executed.
1166 be executed.
1167 $ echo test-success.t >> onlytest
1167 $ echo test-success.t >> onlytest
1168 $ rt --test-list=onlytest
1168 $ rt --test-list=onlytest
1169 running 1 tests using 1 parallel processes
1169 running 1 tests using 1 parallel processes
1170 .
1170 .
1171 # Ran 1 tests, 0 skipped, 0 failed.
1171 # Ran 1 tests, 0 skipped, 0 failed.
1172 $ echo test-bogus.t >> anothertest
1172 $ echo test-bogus.t >> anothertest
1173 $ rt --test-list=onlytest --test-list=anothertest
1173 $ rt --test-list=onlytest --test-list=anothertest
1174 running 2 tests using 1 parallel processes
1174 running 2 tests using 1 parallel processes
1175 s.
1175 s.
1176 Skipped test-bogus.t: Doesn't exist
1176 Skipped test-bogus.t: Doesn't exist
1177 # Ran 1 tests, 1 skipped, 0 failed.
1177 # Ran 1 tests, 1 skipped, 0 failed.
1178 $ rm onlytest anothertest
1178 $ rm onlytest anothertest
1179
1179
1180 test for --json
1180 test for --json
1181 ==================
1181 ==================
1182
1182
1183 $ rt --json
1183 $ rt --json
1184 running 3 tests using 1 parallel processes
1184 running 3 tests using 1 parallel processes
1185
1185
1186 --- $TESTTMP/test-failure.t
1186 --- $TESTTMP/test-failure.t
1187 +++ $TESTTMP/test-failure.t.err
1187 +++ $TESTTMP/test-failure.t.err
1188 @@ -1,5 +1,5 @@
1188 @@ -1,5 +1,5 @@
1189 $ echo babar
1189 $ echo babar
1190 - rataxes
1190 - rataxes
1191 + babar
1191 + babar
1192 This is a noop statement so that
1192 This is a noop statement so that
1193 this test is still more bytes than success.
1193 this test is still more bytes than success.
1194 pad pad pad pad............................................................
1194 pad pad pad pad............................................................
1195
1195
1196 ERROR: test-failure.t output changed
1196 ERROR: test-failure.t output changed
1197 !.s
1197 !.s
1198 Skipped test-skip.t: missing feature: nail clipper
1198 Skipped test-skip.t: missing feature: nail clipper
1199 Failed test-failure.t: output changed
1199 Failed test-failure.t: output changed
1200 # Ran 2 tests, 1 skipped, 1 failed.
1200 # Ran 2 tests, 1 skipped, 1 failed.
1201 python hash seed: * (glob)
1201 python hash seed: * (glob)
1202 [1]
1202 [1]
1203
1203
1204 $ cat report.json
1204 $ cat report.json
1205 testreport ={
1205 testreport ={
1206 "test-failure.t": [\{] (re)
1206 "test-failure.t": [\{] (re)
1207 "csys": "\s*\d+\.\d{3,4}", ? (re)
1207 "csys": "\s*\d+\.\d{3,4}", ? (re)
1208 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1208 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1209 "diff": "---.+\+\+\+.+", ? (re)
1209 "diff": "---.+\+\+\+.+", ? (re)
1210 "end": "\s*\d+\.\d{3,4}", ? (re)
1210 "end": "\s*\d+\.\d{3,4}", ? (re)
1211 "result": "failure", ? (re)
1211 "result": "failure", ? (re)
1212 "start": "\s*\d+\.\d{3,4}", ? (re)
1212 "start": "\s*\d+\.\d{3,4}", ? (re)
1213 "time": "\s*\d+\.\d{3,4}" (re)
1213 "time": "\s*\d+\.\d{3,4}" (re)
1214 }, ? (re)
1214 }, ? (re)
1215 "test-skip.t": {
1215 "test-skip.t": {
1216 "csys": "\s*\d+\.\d{3,4}", ? (re)
1216 "csys": "\s*\d+\.\d{3,4}", ? (re)
1217 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1217 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1218 "diff": "", ? (re)
1218 "diff": "", ? (re)
1219 "end": "\s*\d+\.\d{3,4}", ? (re)
1219 "end": "\s*\d+\.\d{3,4}", ? (re)
1220 "result": "skip", ? (re)
1220 "result": "skip", ? (re)
1221 "start": "\s*\d+\.\d{3,4}", ? (re)
1221 "start": "\s*\d+\.\d{3,4}", ? (re)
1222 "time": "\s*\d+\.\d{3,4}" (re)
1222 "time": "\s*\d+\.\d{3,4}" (re)
1223 }, ? (re)
1223 }, ? (re)
1224 "test-success.t": [\{] (re)
1224 "test-success.t": [\{] (re)
1225 "csys": "\s*\d+\.\d{3,4}", ? (re)
1225 "csys": "\s*\d+\.\d{3,4}", ? (re)
1226 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1226 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1227 "diff": "", ? (re)
1227 "diff": "", ? (re)
1228 "end": "\s*\d+\.\d{3,4}", ? (re)
1228 "end": "\s*\d+\.\d{3,4}", ? (re)
1229 "result": "success", ? (re)
1229 "result": "success", ? (re)
1230 "start": "\s*\d+\.\d{3,4}", ? (re)
1230 "start": "\s*\d+\.\d{3,4}", ? (re)
1231 "time": "\s*\d+\.\d{3,4}" (re)
1231 "time": "\s*\d+\.\d{3,4}" (re)
1232 }
1232 }
1233 } (no-eol)
1233 } (no-eol)
1234 --json with --outputdir
1234 --json with --outputdir
1235
1235
1236 $ rm report.json
1236 $ rm report.json
1237 $ rm -r output
1237 $ rm -r output
1238 $ mkdir output
1238 $ mkdir output
1239 $ rt --json --outputdir output
1239 $ rt --json --outputdir output
1240 running 3 tests using 1 parallel processes
1240 running 3 tests using 1 parallel processes
1241
1241
1242 --- $TESTTMP/test-failure.t
1242 --- $TESTTMP/test-failure.t
1243 +++ $TESTTMP/output/test-failure.t.err
1243 +++ $TESTTMP/output/test-failure.t.err
1244 @@ -1,5 +1,5 @@
1244 @@ -1,5 +1,5 @@
1245 $ echo babar
1245 $ echo babar
1246 - rataxes
1246 - rataxes
1247 + babar
1247 + babar
1248 This is a noop statement so that
1248 This is a noop statement so that
1249 this test is still more bytes than success.
1249 this test is still more bytes than success.
1250 pad pad pad pad............................................................
1250 pad pad pad pad............................................................
1251
1251
1252 ERROR: test-failure.t output changed
1252 ERROR: test-failure.t output changed
1253 !.s
1253 !.s
1254 Skipped test-skip.t: missing feature: nail clipper
1254 Skipped test-skip.t: missing feature: nail clipper
1255 Failed test-failure.t: output changed
1255 Failed test-failure.t: output changed
1256 # Ran 2 tests, 1 skipped, 1 failed.
1256 # Ran 2 tests, 1 skipped, 1 failed.
1257 python hash seed: * (glob)
1257 python hash seed: * (glob)
1258 [1]
1258 [1]
1259 $ f report.json
1259 $ f report.json
1260 report.json: file not found
1260 report.json: file not found
1261 $ cat output/report.json
1261 $ cat output/report.json
1262 testreport ={
1262 testreport ={
1263 "test-failure.t": [\{] (re)
1263 "test-failure.t": [\{] (re)
1264 "csys": "\s*\d+\.\d{3,4}", ? (re)
1264 "csys": "\s*\d+\.\d{3,4}", ? (re)
1265 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1265 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1266 "diff": "---.+\+\+\+.+", ? (re)
1266 "diff": "---.+\+\+\+.+", ? (re)
1267 "end": "\s*\d+\.\d{3,4}", ? (re)
1267 "end": "\s*\d+\.\d{3,4}", ? (re)
1268 "result": "failure", ? (re)
1268 "result": "failure", ? (re)
1269 "start": "\s*\d+\.\d{3,4}", ? (re)
1269 "start": "\s*\d+\.\d{3,4}", ? (re)
1270 "time": "\s*\d+\.\d{3,4}" (re)
1270 "time": "\s*\d+\.\d{3,4}" (re)
1271 }, ? (re)
1271 }, ? (re)
1272 "test-skip.t": {
1272 "test-skip.t": {
1273 "csys": "\s*\d+\.\d{3,4}", ? (re)
1273 "csys": "\s*\d+\.\d{3,4}", ? (re)
1274 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1274 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1275 "diff": "", ? (re)
1275 "diff": "", ? (re)
1276 "end": "\s*\d+\.\d{3,4}", ? (re)
1276 "end": "\s*\d+\.\d{3,4}", ? (re)
1277 "result": "skip", ? (re)
1277 "result": "skip", ? (re)
1278 "start": "\s*\d+\.\d{3,4}", ? (re)
1278 "start": "\s*\d+\.\d{3,4}", ? (re)
1279 "time": "\s*\d+\.\d{3,4}" (re)
1279 "time": "\s*\d+\.\d{3,4}" (re)
1280 }, ? (re)
1280 }, ? (re)
1281 "test-success.t": [\{] (re)
1281 "test-success.t": [\{] (re)
1282 "csys": "\s*\d+\.\d{3,4}", ? (re)
1282 "csys": "\s*\d+\.\d{3,4}", ? (re)
1283 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1283 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1284 "diff": "", ? (re)
1284 "diff": "", ? (re)
1285 "end": "\s*\d+\.\d{3,4}", ? (re)
1285 "end": "\s*\d+\.\d{3,4}", ? (re)
1286 "result": "success", ? (re)
1286 "result": "success", ? (re)
1287 "start": "\s*\d+\.\d{3,4}", ? (re)
1287 "start": "\s*\d+\.\d{3,4}", ? (re)
1288 "time": "\s*\d+\.\d{3,4}" (re)
1288 "time": "\s*\d+\.\d{3,4}" (re)
1289 }
1289 }
1290 } (no-eol)
1290 } (no-eol)
1291 $ ls -a output
1291 $ ls -a output
1292 .
1292 .
1293 ..
1293 ..
1294 .testtimes
1294 .testtimes
1295 report.json
1295 report.json
1296 test-failure.t.err
1296 test-failure.t.err
1297
1297
1298 Test that failed test accepted through interactive are properly reported:
1298 Test that failed test accepted through interactive are properly reported:
1299
1299
1300 $ cp test-failure.t backup
1300 $ cp test-failure.t backup
1301 $ echo y | rt --json -i
1301 $ echo y | rt --json -i
1302 running 3 tests using 1 parallel processes
1302 running 3 tests using 1 parallel processes
1303
1303
1304 --- $TESTTMP/test-failure.t
1304 --- $TESTTMP/test-failure.t
1305 +++ $TESTTMP/test-failure.t.err
1305 +++ $TESTTMP/test-failure.t.err
1306 @@ -1,5 +1,5 @@
1306 @@ -1,5 +1,5 @@
1307 $ echo babar
1307 $ echo babar
1308 - rataxes
1308 - rataxes
1309 + babar
1309 + babar
1310 This is a noop statement so that
1310 This is a noop statement so that
1311 this test is still more bytes than success.
1311 this test is still more bytes than success.
1312 pad pad pad pad............................................................
1312 pad pad pad pad............................................................
1313 Accept this change? [y/N] ..s
1313 Accept this change? [y/N] ..s
1314 Skipped test-skip.t: missing feature: nail clipper
1314 Skipped test-skip.t: missing feature: nail clipper
1315 # Ran 2 tests, 1 skipped, 0 failed.
1315 # Ran 2 tests, 1 skipped, 0 failed.
1316
1316
1317 $ cat report.json
1317 $ cat report.json
1318 testreport ={
1318 testreport ={
1319 "test-failure.t": [\{] (re)
1319 "test-failure.t": [\{] (re)
1320 "csys": "\s*\d+\.\d{3,4}", ? (re)
1320 "csys": "\s*\d+\.\d{3,4}", ? (re)
1321 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1321 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1322 "diff": "", ? (re)
1322 "diff": "", ? (re)
1323 "end": "\s*\d+\.\d{3,4}", ? (re)
1323 "end": "\s*\d+\.\d{3,4}", ? (re)
1324 "result": "success", ? (re)
1324 "result": "success", ? (re)
1325 "start": "\s*\d+\.\d{3,4}", ? (re)
1325 "start": "\s*\d+\.\d{3,4}", ? (re)
1326 "time": "\s*\d+\.\d{3,4}" (re)
1326 "time": "\s*\d+\.\d{3,4}" (re)
1327 }, ? (re)
1327 }, ? (re)
1328 "test-skip.t": {
1328 "test-skip.t": {
1329 "csys": "\s*\d+\.\d{3,4}", ? (re)
1329 "csys": "\s*\d+\.\d{3,4}", ? (re)
1330 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1330 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1331 "diff": "", ? (re)
1331 "diff": "", ? (re)
1332 "end": "\s*\d+\.\d{3,4}", ? (re)
1332 "end": "\s*\d+\.\d{3,4}", ? (re)
1333 "result": "skip", ? (re)
1333 "result": "skip", ? (re)
1334 "start": "\s*\d+\.\d{3,4}", ? (re)
1334 "start": "\s*\d+\.\d{3,4}", ? (re)
1335 "time": "\s*\d+\.\d{3,4}" (re)
1335 "time": "\s*\d+\.\d{3,4}" (re)
1336 }, ? (re)
1336 }, ? (re)
1337 "test-success.t": [\{] (re)
1337 "test-success.t": [\{] (re)
1338 "csys": "\s*\d+\.\d{3,4}", ? (re)
1338 "csys": "\s*\d+\.\d{3,4}", ? (re)
1339 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1339 "cuser": "\s*\d+\.\d{3,4}", ? (re)
1340 "diff": "", ? (re)
1340 "diff": "", ? (re)
1341 "end": "\s*\d+\.\d{3,4}", ? (re)
1341 "end": "\s*\d+\.\d{3,4}", ? (re)
1342 "result": "success", ? (re)
1342 "result": "success", ? (re)
1343 "start": "\s*\d+\.\d{3,4}", ? (re)
1343 "start": "\s*\d+\.\d{3,4}", ? (re)
1344 "time": "\s*\d+\.\d{3,4}" (re)
1344 "time": "\s*\d+\.\d{3,4}" (re)
1345 }
1345 }
1346 } (no-eol)
1346 } (no-eol)
1347 $ mv backup test-failure.t
1347 $ mv backup test-failure.t
1348
1348
1349 backslash on end of line with glob matching is handled properly
1349 backslash on end of line with glob matching is handled properly
1350
1350
1351 $ cat > test-glob-backslash.t << EOF
1351 $ cat > test-glob-backslash.t << EOF
1352 > $ echo 'foo bar \\'
1352 > $ echo 'foo bar \\'
1353 > foo * \ (glob)
1353 > foo * \ (glob)
1354 > EOF
1354 > EOF
1355
1355
1356 $ rt test-glob-backslash.t
1356 $ rt test-glob-backslash.t
1357 running 1 tests using 1 parallel processes
1357 running 1 tests using 1 parallel processes
1358 .
1358 .
1359 # Ran 1 tests, 0 skipped, 0 failed.
1359 # Ran 1 tests, 0 skipped, 0 failed.
1360
1360
1361 $ rm -f test-glob-backslash.t
1361 $ rm -f test-glob-backslash.t
1362
1362
1363 Test globbing of local IP addresses
1363 Test globbing of local IP addresses
1364 $ echo 172.16.18.1
1364 $ echo 172.16.18.1
1365 $LOCALIP (glob)
1365 $LOCALIP (glob)
1366 $ echo dead:beef::1
1366 $ echo dead:beef::1
1367 $LOCALIP (glob)
1367 $LOCALIP (glob)
1368
1368
1369 Add support for external test formatter
1369 Add support for external test formatter
1370 =======================================
1370 =======================================
1371
1371
1372 $ CUSTOM_TEST_RESULT=basic_test_result "$PYTHON" $TESTDIR/run-tests.py --with-hg=`which hg` -j1 "$@" test-success.t test-failure.t
1372 $ CUSTOM_TEST_RESULT=basic_test_result "$PYTHON" $TESTDIR/run-tests.py --with-hg=`which hg` -j1 "$@" test-success.t test-failure.t
1373 running 2 tests using 1 parallel processes
1373 running 2 tests using 1 parallel processes
1374
1374
1375 # Ran 2 tests, 0 skipped, 0 failed.
1375 # Ran 2 tests, 0 skipped, 0 failed.
1376 ON_START! <__main__.TestSuite tests=[<__main__.TTest testMethod=test-failure.t>, <__main__.TTest testMethod=test-success.t>]>
1376 ON_START! <__main__.TestSuite tests=[<__main__.TTest testMethod=test-failure.t>, <__main__.TTest testMethod=test-success.t>]>
1377 FAILURE! test-failure.t output changed
1377 FAILURE! test-failure.t output changed
1378 SUCCESS! test-success.t
1378 SUCCESS! test-success.t
1379 ON_END!
1379 ON_END!
1380
1380
1381 Test reusability for third party tools
1381 Test reusability for third party tools
1382 ======================================
1382 ======================================
1383
1383
1384 $ mkdir "$TESTTMP"/anothertests
1384 $ mkdir "$TESTTMP"/anothertests
1385 $ cd "$TESTTMP"/anothertests
1385 $ cd "$TESTTMP"/anothertests
1386
1386
1387 test that `run-tests.py` can execute hghave, even if it runs not in
1387 test that `run-tests.py` can execute hghave, even if it runs not in
1388 Mercurial source tree.
1388 Mercurial source tree.
1389
1389
1390 $ cat > test-hghave.t <<EOF
1390 $ cat > test-hghave.t <<EOF
1391 > #require true
1391 > #require true
1392 > $ echo foo
1392 > $ echo foo
1393 > foo
1393 > foo
1394 > EOF
1394 > EOF
1395 $ rt test-hghave.t
1395 $ rt test-hghave.t
1396 running 1 tests using 1 parallel processes
1396 running 1 tests using 1 parallel processes
1397 .
1397 .
1398 # Ran 1 tests, 0 skipped, 0 failed.
1398 # Ran 1 tests, 0 skipped, 0 failed.
1399
1399
1400 test that RUNTESTDIR refers the directory, in which `run-tests.py` now
1400 test that RUNTESTDIR refers the directory, in which `run-tests.py` now
1401 running is placed.
1401 running is placed.
1402
1402
1403 $ cat > test-runtestdir.t <<EOF
1403 $ cat > test-runtestdir.t <<EOF
1404 > - $TESTDIR, in which test-run-tests.t is placed
1404 > - $TESTDIR, in which test-run-tests.t is placed
1405 > - \$TESTDIR, in which test-runtestdir.t is placed (expanded at runtime)
1405 > - \$TESTDIR, in which test-runtestdir.t is placed (expanded at runtime)
1406 > - \$RUNTESTDIR, in which run-tests.py is placed (expanded at runtime)
1406 > - \$RUNTESTDIR, in which run-tests.py is placed (expanded at runtime)
1407 >
1407 >
1408 > #if windows
1408 > #if windows
1409 > $ test "\$TESTDIR" = "$TESTTMP\anothertests"
1409 > $ test "\$TESTDIR" = "$TESTTMP\\anothertests"
1410 > #else
1410 > #else
1411 > $ test "\$TESTDIR" = "$TESTTMP"/anothertests
1411 > $ test "\$TESTDIR" = "$TESTTMP"/anothertests
1412 > #endif
1412 > #endif
1413 > If this prints a path, that means RUNTESTDIR didn't equal
1413 > If this prints a path, that means RUNTESTDIR didn't equal
1414 > TESTDIR as it should have.
1414 > TESTDIR as it should have.
1415 > $ test "\$RUNTESTDIR" = "$TESTDIR" || echo "\$RUNTESTDIR"
1415 > $ test "\$RUNTESTDIR" = "$TESTDIR" || echo "\$RUNTESTDIR"
1416 > This should print the start of check-code. If this passes but the
1416 > This should print the start of check-code. If this passes but the
1417 > previous check failed, that means we found a copy of check-code at whatever
1417 > previous check failed, that means we found a copy of check-code at whatever
1418 > RUNTESTSDIR ended up containing, even though it doesn't match TESTDIR.
1418 > RUNTESTSDIR ended up containing, even though it doesn't match TESTDIR.
1419 > $ head -n 3 "\$RUNTESTDIR"/../contrib/check-code.py | sed 's@.!.*python3@#!USRBINENVPY@'
1419 > $ head -n 3 "\$RUNTESTDIR"/../contrib/check-code.py | sed 's@.!.*python3@#!USRBINENVPY@'
1420 > #!USRBINENVPY
1420 > #!USRBINENVPY
1421 > #
1421 > #
1422 > # check-code - a style and portability checker for Mercurial
1422 > # check-code - a style and portability checker for Mercurial
1423 > EOF
1423 > EOF
1424 $ rt test-runtestdir.t
1424 $ rt test-runtestdir.t
1425 running 1 tests using 1 parallel processes
1425 running 1 tests using 1 parallel processes
1426 .
1426 .
1427 # Ran 1 tests, 0 skipped, 0 failed.
1427 # Ran 1 tests, 0 skipped, 0 failed.
1428
1428
1429 #if execbit
1429 #if execbit
1430
1430
1431 test that TESTDIR is referred in PATH
1431 test that TESTDIR is referred in PATH
1432
1432
1433 $ cat > custom-command.sh <<EOF
1433 $ cat > custom-command.sh <<EOF
1434 > #!/bin/sh
1434 > #!/bin/sh
1435 > echo "hello world"
1435 > echo "hello world"
1436 > EOF
1436 > EOF
1437 $ chmod +x custom-command.sh
1437 $ chmod +x custom-command.sh
1438 $ cat > test-testdir-path.t <<EOF
1438 $ cat > test-testdir-path.t <<EOF
1439 > $ custom-command.sh
1439 > $ custom-command.sh
1440 > hello world
1440 > hello world
1441 > EOF
1441 > EOF
1442 $ rt test-testdir-path.t
1442 $ rt test-testdir-path.t
1443 running 1 tests using 1 parallel processes
1443 running 1 tests using 1 parallel processes
1444 .
1444 .
1445 # Ran 1 tests, 0 skipped, 0 failed.
1445 # Ran 1 tests, 0 skipped, 0 failed.
1446
1446
1447 #endif
1447 #endif
1448
1448
1449 test support for --allow-slow-tests
1449 test support for --allow-slow-tests
1450 $ cat > test-very-slow-test.t <<EOF
1450 $ cat > test-very-slow-test.t <<EOF
1451 > #require slow
1451 > #require slow
1452 > $ echo pass
1452 > $ echo pass
1453 > pass
1453 > pass
1454 > EOF
1454 > EOF
1455 $ rt test-very-slow-test.t
1455 $ rt test-very-slow-test.t
1456 running 1 tests using 1 parallel processes
1456 running 1 tests using 1 parallel processes
1457 s
1457 s
1458 Skipped test-very-slow-test.t: missing feature: allow slow tests (use --allow-slow-tests)
1458 Skipped test-very-slow-test.t: missing feature: allow slow tests (use --allow-slow-tests)
1459 # Ran 0 tests, 1 skipped, 0 failed.
1459 # Ran 0 tests, 1 skipped, 0 failed.
1460 $ rt $HGTEST_RUN_TESTS_PURE --allow-slow-tests test-very-slow-test.t
1460 $ rt $HGTEST_RUN_TESTS_PURE --allow-slow-tests test-very-slow-test.t
1461 running 1 tests using 1 parallel processes
1461 running 1 tests using 1 parallel processes
1462 .
1462 .
1463 # Ran 1 tests, 0 skipped, 0 failed.
1463 # Ran 1 tests, 0 skipped, 0 failed.
1464
1464
1465 support for running a test outside the current directory
1465 support for running a test outside the current directory
1466 $ mkdir nonlocal
1466 $ mkdir nonlocal
1467 $ cat > nonlocal/test-is-not-here.t << EOF
1467 $ cat > nonlocal/test-is-not-here.t << EOF
1468 > $ echo pass
1468 > $ echo pass
1469 > pass
1469 > pass
1470 > EOF
1470 > EOF
1471 $ rt nonlocal/test-is-not-here.t
1471 $ rt nonlocal/test-is-not-here.t
1472 running 1 tests using 1 parallel processes
1472 running 1 tests using 1 parallel processes
1473 .
1473 .
1474 # Ran 1 tests, 0 skipped, 0 failed.
1474 # Ran 1 tests, 0 skipped, 0 failed.
1475
1475
1476 support for automatically discovering test if arg is a folder
1476 support for automatically discovering test if arg is a folder
1477 $ mkdir tmp && cd tmp
1477 $ mkdir tmp && cd tmp
1478
1478
1479 $ cat > test-uno.t << EOF
1479 $ cat > test-uno.t << EOF
1480 > $ echo line
1480 > $ echo line
1481 > line
1481 > line
1482 > EOF
1482 > EOF
1483
1483
1484 $ cp test-uno.t test-dos.t
1484 $ cp test-uno.t test-dos.t
1485 $ cd ..
1485 $ cd ..
1486 $ cp -R tmp tmpp
1486 $ cp -R tmp tmpp
1487 $ cp tmp/test-uno.t test-solo.t
1487 $ cp tmp/test-uno.t test-solo.t
1488
1488
1489 $ rt tmp/ test-solo.t tmpp
1489 $ rt tmp/ test-solo.t tmpp
1490 running 5 tests using 1 parallel processes
1490 running 5 tests using 1 parallel processes
1491 .....
1491 .....
1492 # Ran 5 tests, 0 skipped, 0 failed.
1492 # Ran 5 tests, 0 skipped, 0 failed.
1493 $ rm -rf tmp tmpp
1493 $ rm -rf tmp tmpp
1494
1494
1495 support for running run-tests.py from another directory
1495 support for running run-tests.py from another directory
1496 $ mkdir tmp && cd tmp
1496 $ mkdir tmp && cd tmp
1497
1497
1498 $ cat > useful-file.sh << EOF
1498 $ cat > useful-file.sh << EOF
1499 > important command
1499 > important command
1500 > EOF
1500 > EOF
1501
1501
1502 $ cat > test-folder.t << EOF
1502 $ cat > test-folder.t << EOF
1503 > $ cat \$TESTDIR/useful-file.sh
1503 > $ cat \$TESTDIR/useful-file.sh
1504 > important command
1504 > important command
1505 > EOF
1505 > EOF
1506
1506
1507 $ cat > test-folder-fail.t << EOF
1507 $ cat > test-folder-fail.t << EOF
1508 > $ cat \$TESTDIR/useful-file.sh
1508 > $ cat \$TESTDIR/useful-file.sh
1509 > important commando
1509 > important commando
1510 > EOF
1510 > EOF
1511
1511
1512 $ cd ..
1512 $ cd ..
1513 $ rt tmp/test-*.t
1513 $ rt tmp/test-*.t
1514 running 2 tests using 1 parallel processes
1514 running 2 tests using 1 parallel processes
1515
1515
1516 --- $TESTTMP/anothertests/tmp/test-folder-fail.t
1516 --- $TESTTMP/anothertests/tmp/test-folder-fail.t
1517 +++ $TESTTMP/anothertests/tmp/test-folder-fail.t.err
1517 +++ $TESTTMP/anothertests/tmp/test-folder-fail.t.err
1518 @@ -1,2 +1,2 @@
1518 @@ -1,2 +1,2 @@
1519 $ cat $TESTDIR/useful-file.sh
1519 $ cat $TESTDIR/useful-file.sh
1520 - important commando
1520 - important commando
1521 + important command
1521 + important command
1522
1522
1523 ERROR: test-folder-fail.t output changed
1523 ERROR: test-folder-fail.t output changed
1524 !.
1524 !.
1525 Failed test-folder-fail.t: output changed
1525 Failed test-folder-fail.t: output changed
1526 # Ran 2 tests, 0 skipped, 1 failed.
1526 # Ran 2 tests, 0 skipped, 1 failed.
1527 python hash seed: * (glob)
1527 python hash seed: * (glob)
1528 [1]
1528 [1]
1529
1529
1530 support for bisecting failed tests automatically
1530 support for bisecting failed tests automatically
1531 $ hg init bisect
1531 $ hg init bisect
1532 $ cd bisect
1532 $ cd bisect
1533 $ cat >> test-bisect.t <<EOF
1533 $ cat >> test-bisect.t <<EOF
1534 > $ echo pass
1534 > $ echo pass
1535 > pass
1535 > pass
1536 > EOF
1536 > EOF
1537 $ hg add test-bisect.t
1537 $ hg add test-bisect.t
1538 $ hg ci -m 'good'
1538 $ hg ci -m 'good'
1539 $ cat >> test-bisect.t <<EOF
1539 $ cat >> test-bisect.t <<EOF
1540 > $ echo pass
1540 > $ echo pass
1541 > fail
1541 > fail
1542 > EOF
1542 > EOF
1543 $ hg ci -m 'bad'
1543 $ hg ci -m 'bad'
1544 $ rt --known-good-rev=0 test-bisect.t
1544 $ rt --known-good-rev=0 test-bisect.t
1545 running 1 tests using 1 parallel processes
1545 running 1 tests using 1 parallel processes
1546
1546
1547 --- $TESTTMP/anothertests/bisect/test-bisect.t
1547 --- $TESTTMP/anothertests/bisect/test-bisect.t
1548 +++ $TESTTMP/anothertests/bisect/test-bisect.t.err
1548 +++ $TESTTMP/anothertests/bisect/test-bisect.t.err
1549 @@ -1,4 +1,4 @@
1549 @@ -1,4 +1,4 @@
1550 $ echo pass
1550 $ echo pass
1551 pass
1551 pass
1552 $ echo pass
1552 $ echo pass
1553 - fail
1553 - fail
1554 + pass
1554 + pass
1555
1555
1556 ERROR: test-bisect.t output changed
1556 ERROR: test-bisect.t output changed
1557 !
1557 !
1558 Failed test-bisect.t: output changed
1558 Failed test-bisect.t: output changed
1559 test-bisect.t broken by 72cbf122d116 (bad)
1559 test-bisect.t broken by 72cbf122d116 (bad)
1560 # Ran 1 tests, 0 skipped, 1 failed.
1560 # Ran 1 tests, 0 skipped, 1 failed.
1561 python hash seed: * (glob)
1561 python hash seed: * (glob)
1562 [1]
1562 [1]
1563
1563
1564 $ cd ..
1564 $ cd ..
1565
1565
1566 support bisecting a separate repo
1566 support bisecting a separate repo
1567
1567
1568 $ hg init bisect-dependent
1568 $ hg init bisect-dependent
1569 $ cd bisect-dependent
1569 $ cd bisect-dependent
1570 $ cat > test-bisect-dependent.t <<EOF
1570 $ cat > test-bisect-dependent.t <<EOF
1571 > $ tail -1 \$TESTDIR/../bisect/test-bisect.t
1571 > $ tail -1 \$TESTDIR/../bisect/test-bisect.t
1572 > pass
1572 > pass
1573 > EOF
1573 > EOF
1574 $ hg commit -Am dependent test-bisect-dependent.t
1574 $ hg commit -Am dependent test-bisect-dependent.t
1575
1575
1576 $ rt --known-good-rev=0 test-bisect-dependent.t
1576 $ rt --known-good-rev=0 test-bisect-dependent.t
1577 running 1 tests using 1 parallel processes
1577 running 1 tests using 1 parallel processes
1578
1578
1579 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1579 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1580 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1580 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1581 @@ -1,2 +1,2 @@
1581 @@ -1,2 +1,2 @@
1582 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1582 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1583 - pass
1583 - pass
1584 + fail
1584 + fail
1585
1585
1586 ERROR: test-bisect-dependent.t output changed
1586 ERROR: test-bisect-dependent.t output changed
1587 !
1587 !
1588 Failed test-bisect-dependent.t: output changed
1588 Failed test-bisect-dependent.t: output changed
1589 Failed to identify failure point for test-bisect-dependent.t
1589 Failed to identify failure point for test-bisect-dependent.t
1590 # Ran 1 tests, 0 skipped, 1 failed.
1590 # Ran 1 tests, 0 skipped, 1 failed.
1591 python hash seed: * (glob)
1591 python hash seed: * (glob)
1592 [1]
1592 [1]
1593
1593
1594 $ rt --bisect-repo=../test-bisect test-bisect-dependent.t
1594 $ rt --bisect-repo=../test-bisect test-bisect-dependent.t
1595 usage: run-tests.py [options] [tests]
1595 usage: run-tests.py [options] [tests]
1596 run-tests.py: error: --bisect-repo cannot be used without --known-good-rev
1596 run-tests.py: error: --bisect-repo cannot be used without --known-good-rev
1597 [2]
1597 [2]
1598
1598
1599 $ rt --known-good-rev=0 --bisect-repo=../bisect test-bisect-dependent.t
1599 $ rt --known-good-rev=0 --bisect-repo=../bisect test-bisect-dependent.t
1600 running 1 tests using 1 parallel processes
1600 running 1 tests using 1 parallel processes
1601
1601
1602 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1602 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1603 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1603 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1604 @@ -1,2 +1,2 @@
1604 @@ -1,2 +1,2 @@
1605 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1605 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1606 - pass
1606 - pass
1607 + fail
1607 + fail
1608
1608
1609 ERROR: test-bisect-dependent.t output changed
1609 ERROR: test-bisect-dependent.t output changed
1610 !
1610 !
1611 Failed test-bisect-dependent.t: output changed
1611 Failed test-bisect-dependent.t: output changed
1612 test-bisect-dependent.t broken by 72cbf122d116 (bad)
1612 test-bisect-dependent.t broken by 72cbf122d116 (bad)
1613 # Ran 1 tests, 0 skipped, 1 failed.
1613 # Ran 1 tests, 0 skipped, 1 failed.
1614 python hash seed: * (glob)
1614 python hash seed: * (glob)
1615 [1]
1615 [1]
1616
1616
1617 $ cd ..
1617 $ cd ..
1618
1618
1619 Test a broken #if statement doesn't break run-tests threading.
1619 Test a broken #if statement doesn't break run-tests threading.
1620 ==============================================================
1620 ==============================================================
1621 $ mkdir broken
1621 $ mkdir broken
1622 $ cd broken
1622 $ cd broken
1623 $ cat > test-broken.t <<EOF
1623 $ cat > test-broken.t <<EOF
1624 > true
1624 > true
1625 > #if notarealhghavefeature
1625 > #if notarealhghavefeature
1626 > $ false
1626 > $ false
1627 > #endif
1627 > #endif
1628 > EOF
1628 > EOF
1629 $ for f in 1 2 3 4 ; do
1629 $ for f in 1 2 3 4 ; do
1630 > cat > test-works-$f.t <<EOF
1630 > cat > test-works-$f.t <<EOF
1631 > This is test case $f
1631 > This is test case $f
1632 > $ sleep 1
1632 > $ sleep 1
1633 > EOF
1633 > EOF
1634 > done
1634 > done
1635 $ rt -j 2
1635 $ rt -j 2
1636 running 5 tests using 2 parallel processes
1636 running 5 tests using 2 parallel processes
1637 ....
1637 ....
1638 # Ran 5 tests, 0 skipped, 0 failed.
1638 # Ran 5 tests, 0 skipped, 0 failed.
1639 skipped: unknown feature: notarealhghavefeature
1639 skipped: unknown feature: notarealhghavefeature
1640
1640
1641 $ cd ..
1641 $ cd ..
1642 $ rm -rf broken
1642 $ rm -rf broken
1643
1643
1644 Test cases in .t files
1644 Test cases in .t files
1645 ======================
1645 ======================
1646 $ mkdir cases
1646 $ mkdir cases
1647 $ cd cases
1647 $ cd cases
1648 $ cat > test-cases-abc.t <<'EOF'
1648 $ cat > test-cases-abc.t <<'EOF'
1649 > #testcases A B C
1649 > #testcases A B C
1650 > $ V=B
1650 > $ V=B
1651 > #if A
1651 > #if A
1652 > $ V=A
1652 > $ V=A
1653 > #endif
1653 > #endif
1654 > #if C
1654 > #if C
1655 > $ V=C
1655 > $ V=C
1656 > #endif
1656 > #endif
1657 > $ echo $V | sed 's/A/C/'
1657 > $ echo $V | sed 's/A/C/'
1658 > C
1658 > C
1659 > #if C
1659 > #if C
1660 > $ [ $V = C ]
1660 > $ [ $V = C ]
1661 > #endif
1661 > #endif
1662 > #if A
1662 > #if A
1663 > $ [ $V = C ]
1663 > $ [ $V = C ]
1664 > [1]
1664 > [1]
1665 > #endif
1665 > #endif
1666 > #if no-C
1666 > #if no-C
1667 > $ [ $V = C ]
1667 > $ [ $V = C ]
1668 > [1]
1668 > [1]
1669 > #endif
1669 > #endif
1670 > $ [ $V = D ]
1670 > $ [ $V = D ]
1671 > [1]
1671 > [1]
1672 > EOF
1672 > EOF
1673 $ rt
1673 $ rt
1674 running 3 tests using 1 parallel processes
1674 running 3 tests using 1 parallel processes
1675 .
1675 .
1676 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1676 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1677 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1677 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1678 @@ -7,7 +7,7 @@
1678 @@ -7,7 +7,7 @@
1679 $ V=C
1679 $ V=C
1680 #endif
1680 #endif
1681 $ echo $V | sed 's/A/C/'
1681 $ echo $V | sed 's/A/C/'
1682 - C
1682 - C
1683 + B
1683 + B
1684 #if C
1684 #if C
1685 $ [ $V = C ]
1685 $ [ $V = C ]
1686 #endif
1686 #endif
1687
1687
1688 ERROR: test-cases-abc.t#B output changed
1688 ERROR: test-cases-abc.t#B output changed
1689 !.
1689 !.
1690 Failed test-cases-abc.t#B: output changed
1690 Failed test-cases-abc.t#B: output changed
1691 # Ran 3 tests, 0 skipped, 1 failed.
1691 # Ran 3 tests, 0 skipped, 1 failed.
1692 python hash seed: * (glob)
1692 python hash seed: * (glob)
1693 [1]
1693 [1]
1694
1694
1695 --restart works
1695 --restart works
1696
1696
1697 $ rt --restart
1697 $ rt --restart
1698 running 2 tests using 1 parallel processes
1698 running 2 tests using 1 parallel processes
1699
1699
1700 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1700 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1701 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1701 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1702 @@ -7,7 +7,7 @@
1702 @@ -7,7 +7,7 @@
1703 $ V=C
1703 $ V=C
1704 #endif
1704 #endif
1705 $ echo $V | sed 's/A/C/'
1705 $ echo $V | sed 's/A/C/'
1706 - C
1706 - C
1707 + B
1707 + B
1708 #if C
1708 #if C
1709 $ [ $V = C ]
1709 $ [ $V = C ]
1710 #endif
1710 #endif
1711
1711
1712 ERROR: test-cases-abc.t#B output changed
1712 ERROR: test-cases-abc.t#B output changed
1713 !.
1713 !.
1714 Failed test-cases-abc.t#B: output changed
1714 Failed test-cases-abc.t#B: output changed
1715 # Ran 2 tests, 0 skipped, 1 failed.
1715 # Ran 2 tests, 0 skipped, 1 failed.
1716 python hash seed: * (glob)
1716 python hash seed: * (glob)
1717 [1]
1717 [1]
1718
1718
1719 --restart works with outputdir
1719 --restart works with outputdir
1720
1720
1721 $ mkdir output
1721 $ mkdir output
1722 $ mv test-cases-abc.t#B.err output
1722 $ mv test-cases-abc.t#B.err output
1723 $ rt --restart --outputdir output
1723 $ rt --restart --outputdir output
1724 running 2 tests using 1 parallel processes
1724 running 2 tests using 1 parallel processes
1725
1725
1726 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1726 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1727 +++ $TESTTMP/anothertests/cases/output/test-cases-abc.t#B.err
1727 +++ $TESTTMP/anothertests/cases/output/test-cases-abc.t#B.err
1728 @@ -7,7 +7,7 @@
1728 @@ -7,7 +7,7 @@
1729 $ V=C
1729 $ V=C
1730 #endif
1730 #endif
1731 $ echo $V | sed 's/A/C/'
1731 $ echo $V | sed 's/A/C/'
1732 - C
1732 - C
1733 + B
1733 + B
1734 #if C
1734 #if C
1735 $ [ $V = C ]
1735 $ [ $V = C ]
1736 #endif
1736 #endif
1737
1737
1738 ERROR: test-cases-abc.t#B output changed
1738 ERROR: test-cases-abc.t#B output changed
1739 !.
1739 !.
1740 Failed test-cases-abc.t#B: output changed
1740 Failed test-cases-abc.t#B: output changed
1741 # Ran 2 tests, 0 skipped, 1 failed.
1741 # Ran 2 tests, 0 skipped, 1 failed.
1742 python hash seed: * (glob)
1742 python hash seed: * (glob)
1743 [1]
1743 [1]
1744
1744
1745 Test TESTCASE variable
1745 Test TESTCASE variable
1746
1746
1747 $ cat > test-cases-ab.t <<'EOF'
1747 $ cat > test-cases-ab.t <<'EOF'
1748 > $ dostuff() {
1748 > $ dostuff() {
1749 > > echo "In case $TESTCASE"
1749 > > echo "In case $TESTCASE"
1750 > > }
1750 > > }
1751 > #testcases A B
1751 > #testcases A B
1752 > #if A
1752 > #if A
1753 > $ dostuff
1753 > $ dostuff
1754 > In case A
1754 > In case A
1755 > #endif
1755 > #endif
1756 > #if B
1756 > #if B
1757 > $ dostuff
1757 > $ dostuff
1758 > In case B
1758 > In case B
1759 > #endif
1759 > #endif
1760 > EOF
1760 > EOF
1761 $ rt test-cases-ab.t
1761 $ rt test-cases-ab.t
1762 running 2 tests using 1 parallel processes
1762 running 2 tests using 1 parallel processes
1763 ..
1763 ..
1764 # Ran 2 tests, 0 skipped, 0 failed.
1764 # Ran 2 tests, 0 skipped, 0 failed.
1765
1765
1766 Support running a specific test case
1766 Support running a specific test case
1767
1767
1768 $ rt "test-cases-abc.t#B"
1768 $ rt "test-cases-abc.t#B"
1769 running 1 tests using 1 parallel processes
1769 running 1 tests using 1 parallel processes
1770
1770
1771 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1771 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1772 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1772 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1773 @@ -7,7 +7,7 @@
1773 @@ -7,7 +7,7 @@
1774 $ V=C
1774 $ V=C
1775 #endif
1775 #endif
1776 $ echo $V | sed 's/A/C/'
1776 $ echo $V | sed 's/A/C/'
1777 - C
1777 - C
1778 + B
1778 + B
1779 #if C
1779 #if C
1780 $ [ $V = C ]
1780 $ [ $V = C ]
1781 #endif
1781 #endif
1782
1782
1783 ERROR: test-cases-abc.t#B output changed
1783 ERROR: test-cases-abc.t#B output changed
1784 !
1784 !
1785 Failed test-cases-abc.t#B: output changed
1785 Failed test-cases-abc.t#B: output changed
1786 # Ran 1 tests, 0 skipped, 1 failed.
1786 # Ran 1 tests, 0 skipped, 1 failed.
1787 python hash seed: * (glob)
1787 python hash seed: * (glob)
1788 [1]
1788 [1]
1789
1789
1790 Support running multiple test cases in the same file
1790 Support running multiple test cases in the same file
1791
1791
1792 $ rt test-cases-abc.t#B test-cases-abc.t#C
1792 $ rt test-cases-abc.t#B test-cases-abc.t#C
1793 running 2 tests using 1 parallel processes
1793 running 2 tests using 1 parallel processes
1794
1794
1795 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1795 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1796 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1796 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1797 @@ -7,7 +7,7 @@
1797 @@ -7,7 +7,7 @@
1798 $ V=C
1798 $ V=C
1799 #endif
1799 #endif
1800 $ echo $V | sed 's/A/C/'
1800 $ echo $V | sed 's/A/C/'
1801 - C
1801 - C
1802 + B
1802 + B
1803 #if C
1803 #if C
1804 $ [ $V = C ]
1804 $ [ $V = C ]
1805 #endif
1805 #endif
1806
1806
1807 ERROR: test-cases-abc.t#B output changed
1807 ERROR: test-cases-abc.t#B output changed
1808 !.
1808 !.
1809 Failed test-cases-abc.t#B: output changed
1809 Failed test-cases-abc.t#B: output changed
1810 # Ran 2 tests, 0 skipped, 1 failed.
1810 # Ran 2 tests, 0 skipped, 1 failed.
1811 python hash seed: * (glob)
1811 python hash seed: * (glob)
1812 [1]
1812 [1]
1813
1813
1814 Support ignoring invalid test cases
1814 Support ignoring invalid test cases
1815
1815
1816 $ rt test-cases-abc.t#B test-cases-abc.t#D
1816 $ rt test-cases-abc.t#B test-cases-abc.t#D
1817 running 1 tests using 1 parallel processes
1817 running 1 tests using 1 parallel processes
1818
1818
1819 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1819 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1820 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1820 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1821 @@ -7,7 +7,7 @@
1821 @@ -7,7 +7,7 @@
1822 $ V=C
1822 $ V=C
1823 #endif
1823 #endif
1824 $ echo $V | sed 's/A/C/'
1824 $ echo $V | sed 's/A/C/'
1825 - C
1825 - C
1826 + B
1826 + B
1827 #if C
1827 #if C
1828 $ [ $V = C ]
1828 $ [ $V = C ]
1829 #endif
1829 #endif
1830
1830
1831 ERROR: test-cases-abc.t#B output changed
1831 ERROR: test-cases-abc.t#B output changed
1832 !
1832 !
1833 Failed test-cases-abc.t#B: output changed
1833 Failed test-cases-abc.t#B: output changed
1834 # Ran 1 tests, 0 skipped, 1 failed.
1834 # Ran 1 tests, 0 skipped, 1 failed.
1835 python hash seed: * (glob)
1835 python hash seed: * (glob)
1836 [1]
1836 [1]
1837
1837
1838 Support running complex test cases names
1838 Support running complex test cases names
1839
1839
1840 $ cat > test-cases-advanced-cases.t <<'EOF'
1840 $ cat > test-cases-advanced-cases.t <<'EOF'
1841 > #testcases simple case-with-dashes casewith_-.chars
1841 > #testcases simple case-with-dashes casewith_-.chars
1842 > $ echo $TESTCASE
1842 > $ echo $TESTCASE
1843 > simple
1843 > simple
1844 > EOF
1844 > EOF
1845
1845
1846 $ cat test-cases-advanced-cases.t
1846 $ cat test-cases-advanced-cases.t
1847 #testcases simple case-with-dashes casewith_-.chars
1847 #testcases simple case-with-dashes casewith_-.chars
1848 $ echo $TESTCASE
1848 $ echo $TESTCASE
1849 simple
1849 simple
1850
1850
1851 $ rt test-cases-advanced-cases.t
1851 $ rt test-cases-advanced-cases.t
1852 running 3 tests using 1 parallel processes
1852 running 3 tests using 1 parallel processes
1853
1853
1854 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1854 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1855 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1855 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1856 @@ -1,3 +1,3 @@
1856 @@ -1,3 +1,3 @@
1857 #testcases simple case-with-dashes casewith_-.chars
1857 #testcases simple case-with-dashes casewith_-.chars
1858 $ echo $TESTCASE
1858 $ echo $TESTCASE
1859 - simple
1859 - simple
1860 + case-with-dashes
1860 + case-with-dashes
1861
1861
1862 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1862 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1863 !
1863 !
1864 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1864 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1865 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1865 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1866 @@ -1,3 +1,3 @@
1866 @@ -1,3 +1,3 @@
1867 #testcases simple case-with-dashes casewith_-.chars
1867 #testcases simple case-with-dashes casewith_-.chars
1868 $ echo $TESTCASE
1868 $ echo $TESTCASE
1869 - simple
1869 - simple
1870 + casewith_-.chars
1870 + casewith_-.chars
1871
1871
1872 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1872 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1873 !.
1873 !.
1874 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1874 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1875 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1875 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1876 # Ran 3 tests, 0 skipped, 2 failed.
1876 # Ran 3 tests, 0 skipped, 2 failed.
1877 python hash seed: * (glob)
1877 python hash seed: * (glob)
1878 [1]
1878 [1]
1879
1879
1880 $ rt "test-cases-advanced-cases.t#case-with-dashes"
1880 $ rt "test-cases-advanced-cases.t#case-with-dashes"
1881 running 1 tests using 1 parallel processes
1881 running 1 tests using 1 parallel processes
1882
1882
1883 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1883 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1884 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1884 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1885 @@ -1,3 +1,3 @@
1885 @@ -1,3 +1,3 @@
1886 #testcases simple case-with-dashes casewith_-.chars
1886 #testcases simple case-with-dashes casewith_-.chars
1887 $ echo $TESTCASE
1887 $ echo $TESTCASE
1888 - simple
1888 - simple
1889 + case-with-dashes
1889 + case-with-dashes
1890
1890
1891 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1891 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1892 !
1892 !
1893 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1893 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1894 # Ran 1 tests, 0 skipped, 1 failed.
1894 # Ran 1 tests, 0 skipped, 1 failed.
1895 python hash seed: * (glob)
1895 python hash seed: * (glob)
1896 [1]
1896 [1]
1897
1897
1898 $ rt "test-cases-advanced-cases.t#casewith_-.chars"
1898 $ rt "test-cases-advanced-cases.t#casewith_-.chars"
1899 running 1 tests using 1 parallel processes
1899 running 1 tests using 1 parallel processes
1900
1900
1901 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1901 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1902 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1902 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1903 @@ -1,3 +1,3 @@
1903 @@ -1,3 +1,3 @@
1904 #testcases simple case-with-dashes casewith_-.chars
1904 #testcases simple case-with-dashes casewith_-.chars
1905 $ echo $TESTCASE
1905 $ echo $TESTCASE
1906 - simple
1906 - simple
1907 + casewith_-.chars
1907 + casewith_-.chars
1908
1908
1909 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1909 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1910 !
1910 !
1911 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1911 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1912 # Ran 1 tests, 0 skipped, 1 failed.
1912 # Ran 1 tests, 0 skipped, 1 failed.
1913 python hash seed: * (glob)
1913 python hash seed: * (glob)
1914 [1]
1914 [1]
1915
1915
1916 Test automatic pattern replacement
1916 Test automatic pattern replacement
1917 ==================================
1917 ==================================
1918
1918
1919 $ cat << EOF >> common-pattern.py
1919 $ cat << EOF >> common-pattern.py
1920 > substitutions = [
1920 > substitutions = [
1921 > (br'foo-(.*)\\b',
1921 > (br'foo-(.*)\\b',
1922 > br'\$XXX=\\1\$'),
1922 > br'\$XXX=\\1\$'),
1923 > (br'bar\\n',
1923 > (br'bar\\n',
1924 > br'\$YYY$\\n'),
1924 > br'\$YYY$\\n'),
1925 > ]
1925 > ]
1926 > EOF
1926 > EOF
1927
1927
1928 $ cat << EOF >> test-substitution.t
1928 $ cat << EOF >> test-substitution.t
1929 > $ echo foo-12
1929 > $ echo foo-12
1930 > \$XXX=12$
1930 > \$XXX=12$
1931 > $ echo foo-42
1931 > $ echo foo-42
1932 > \$XXX=42$
1932 > \$XXX=42$
1933 > $ echo bar prior
1933 > $ echo bar prior
1934 > bar prior
1934 > bar prior
1935 > $ echo lastbar
1935 > $ echo lastbar
1936 > last\$YYY$
1936 > last\$YYY$
1937 > $ echo foo-bar foo-baz
1937 > $ echo foo-bar foo-baz
1938 > EOF
1938 > EOF
1939
1939
1940 $ rt test-substitution.t
1940 $ rt test-substitution.t
1941 running 1 tests using 1 parallel processes
1941 running 1 tests using 1 parallel processes
1942
1942
1943 --- $TESTTMP/anothertests/cases/test-substitution.t
1943 --- $TESTTMP/anothertests/cases/test-substitution.t
1944 +++ $TESTTMP/anothertests/cases/test-substitution.t.err
1944 +++ $TESTTMP/anothertests/cases/test-substitution.t.err
1945 @@ -7,3 +7,4 @@
1945 @@ -7,3 +7,4 @@
1946 $ echo lastbar
1946 $ echo lastbar
1947 last$YYY$
1947 last$YYY$
1948 $ echo foo-bar foo-baz
1948 $ echo foo-bar foo-baz
1949 + $XXX=bar foo-baz$
1949 + $XXX=bar foo-baz$
1950
1950
1951 ERROR: test-substitution.t output changed
1951 ERROR: test-substitution.t output changed
1952 !
1952 !
1953 Failed test-substitution.t: output changed
1953 Failed test-substitution.t: output changed
1954 # Ran 1 tests, 0 skipped, 1 failed.
1954 # Ran 1 tests, 0 skipped, 1 failed.
1955 python hash seed: * (glob)
1955 python hash seed: * (glob)
1956 [1]
1956 [1]
1957
1957
1958 --extra-config-opt works
1958 --extra-config-opt works
1959
1959
1960 $ cat << EOF >> test-config-opt.t
1960 $ cat << EOF >> test-config-opt.t
1961 > $ hg init test-config-opt
1961 > $ hg init test-config-opt
1962 > $ hg -R test-config-opt purge
1962 > $ hg -R test-config-opt purge
1963 > $ echo "HGTESTEXTRAEXTENSIONS: \$HGTESTEXTRAEXTENSIONS"
1963 > $ echo "HGTESTEXTRAEXTENSIONS: \$HGTESTEXTRAEXTENSIONS"
1964 > HGTESTEXTRAEXTENSIONS: purge
1964 > HGTESTEXTRAEXTENSIONS: purge
1965 > EOF
1965 > EOF
1966
1966
1967 $ rt --extra-config-opt extensions.purge= \
1967 $ rt --extra-config-opt extensions.purge= \
1968 > --extra-config-opt not.an.extension=True test-config-opt.t
1968 > --extra-config-opt not.an.extension=True test-config-opt.t
1969 running 1 tests using 1 parallel processes
1969 running 1 tests using 1 parallel processes
1970 .
1970 .
1971 # Ran 1 tests, 0 skipped, 0 failed.
1971 # Ran 1 tests, 0 skipped, 0 failed.
1972
1972
1973 Test conditional output matching
1973 Test conditional output matching
1974 ================================
1974 ================================
1975
1975
1976 $ cat << EOF >> test-conditional-matching.t
1976 $ cat << EOF >> test-conditional-matching.t
1977 > #testcases foo bar
1977 > #testcases foo bar
1978 > $ echo richtig
1978 > $ echo richtig
1979 > richtig (true !)
1979 > richtig (true !)
1980 > $ echo falsch
1980 > $ echo falsch
1981 > falsch (false !)
1981 > falsch (false !)
1982 > #if foo
1982 > #if foo
1983 > $ echo arthur
1983 > $ echo arthur
1984 > arthur (bar !)
1984 > arthur (bar !)
1985 > #endif
1985 > #endif
1986 > $ echo celeste
1986 > $ echo celeste
1987 > celeste (foo !)
1987 > celeste (foo !)
1988 > $ echo zephir
1988 > $ echo zephir
1989 > zephir (bar !)
1989 > zephir (bar !)
1990 > EOF
1990 > EOF
1991
1991
1992 $ rt test-conditional-matching.t
1992 $ rt test-conditional-matching.t
1993 running 2 tests using 1 parallel processes
1993 running 2 tests using 1 parallel processes
1994
1994
1995 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
1995 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
1996 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#bar.err
1996 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#bar.err
1997 @@ -3,11 +3,13 @@
1997 @@ -3,11 +3,13 @@
1998 richtig (true !)
1998 richtig (true !)
1999 $ echo falsch
1999 $ echo falsch
2000 falsch (false !)
2000 falsch (false !)
2001 + falsch
2001 + falsch
2002 #if foo
2002 #if foo
2003 $ echo arthur
2003 $ echo arthur
2004 arthur \(bar !\) (re)
2004 arthur \(bar !\) (re)
2005 #endif
2005 #endif
2006 $ echo celeste
2006 $ echo celeste
2007 celeste \(foo !\) (re)
2007 celeste \(foo !\) (re)
2008 + celeste
2008 + celeste
2009 $ echo zephir
2009 $ echo zephir
2010 zephir \(bar !\) (re)
2010 zephir \(bar !\) (re)
2011
2011
2012 ERROR: test-conditional-matching.t#bar output changed
2012 ERROR: test-conditional-matching.t#bar output changed
2013 !
2013 !
2014 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
2014 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
2015 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#foo.err
2015 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#foo.err
2016 @@ -3,11 +3,14 @@
2016 @@ -3,11 +3,14 @@
2017 richtig (true !)
2017 richtig (true !)
2018 $ echo falsch
2018 $ echo falsch
2019 falsch (false !)
2019 falsch (false !)
2020 + falsch
2020 + falsch
2021 #if foo
2021 #if foo
2022 $ echo arthur
2022 $ echo arthur
2023 arthur \(bar !\) (re)
2023 arthur \(bar !\) (re)
2024 + arthur
2024 + arthur
2025 #endif
2025 #endif
2026 $ echo celeste
2026 $ echo celeste
2027 celeste \(foo !\) (re)
2027 celeste \(foo !\) (re)
2028 $ echo zephir
2028 $ echo zephir
2029 zephir \(bar !\) (re)
2029 zephir \(bar !\) (re)
2030 + zephir
2030 + zephir
2031
2031
2032 ERROR: test-conditional-matching.t#foo output changed
2032 ERROR: test-conditional-matching.t#foo output changed
2033 !
2033 !
2034 Failed test-conditional-matching.t#bar: output changed
2034 Failed test-conditional-matching.t#bar: output changed
2035 Failed test-conditional-matching.t#foo: output changed
2035 Failed test-conditional-matching.t#foo: output changed
2036 # Ran 2 tests, 0 skipped, 2 failed.
2036 # Ran 2 tests, 0 skipped, 2 failed.
2037 python hash seed: * (glob)
2037 python hash seed: * (glob)
2038 [1]
2038 [1]
2039
2039
2040 Test that a proper "python" has been set up
2040 Test that a proper "python" has been set up
2041 ===========================================
2041 ===========================================
2042
2042
2043 (with a small check-code work around)
2043 (with a small check-code work around)
2044 $ printf "#!/usr/bi" > test-py3.tmp
2044 $ printf "#!/usr/bi" > test-py3.tmp
2045 $ printf "n/en" >> test-py3.tmp
2045 $ printf "n/en" >> test-py3.tmp
2046 $ cat << EOF >> test-py3.tmp
2046 $ cat << EOF >> test-py3.tmp
2047 > v python3
2047 > v python3
2048 > import sys
2048 > import sys
2049 > print('.'.join(str(x) for x in sys.version_info))
2049 > print('.'.join(str(x) for x in sys.version_info))
2050 > EOF
2050 > EOF
2051 $ mv test-py3.tmp test-py3.py
2051 $ mv test-py3.tmp test-py3.py
2052 $ chmod +x test-py3.py
2052 $ chmod +x test-py3.py
2053
2053
2054 (with a small check-code work around)
2054 (with a small check-code work around)
2055 $ printf "#!/usr/bi" > test-py.tmp
2055 $ printf "#!/usr/bi" > test-py.tmp
2056 $ printf "n/en" >> test-py.tmp
2056 $ printf "n/en" >> test-py.tmp
2057 $ cat << EOF >> test-py.tmp
2057 $ cat << EOF >> test-py.tmp
2058 > v python
2058 > v python
2059 > import sys
2059 > import sys
2060 > print('.'.join(str(x) for x in sys.version_info))
2060 > print('.'.join(str(x) for x in sys.version_info))
2061 > EOF
2061 > EOF
2062 $ mv test-py.tmp test-py.py
2062 $ mv test-py.tmp test-py.py
2063 $ chmod +x test-py.py
2063 $ chmod +x test-py.py
2064
2064
2065 $ ./test-py3.py
2065 $ ./test-py3.py
2066 3.* (glob)
2066 3.* (glob)
2067 $ ./test-py.py
2067 $ ./test-py.py
2068 2.* (glob) (no-py3 !)
2068 2.* (glob) (no-py3 !)
2069 3.* (glob) (py3 !)
2069 3.* (glob) (py3 !)
General Comments 0
You need to be logged in to leave comments. Login now