##// END OF EJS Templates
test-run-test: use explicit variables to clarify paths...
marmoute -
r48372:da497189 default
parent child Browse files
Show More
@@ -1,2069 +1,2087 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 $ THISTESTDIR="$TESTDIR"
1385 $ cd "$TESTTMP"/anothertests
1385 $ export THISTESTDIR
1386 $ THISTESTTMP="$TESTTMP"
1387 $ export THISTESTTMP
1388
1389 #if windows
1390
1391 $ NEWTESTDIR="$THISTESTTMP"\\anothertests
1392
1393 #else
1394
1395 $ NEWTESTDIR="$THISTESTTMP"/anothertests
1396
1397 #endif
1398
1399 $ export NEWTESTDIR
1400
1401 $ echo creating some new test in: $NEWTESTDIR
1402 creating some new test in: $TESTTMP\anothertests (windows !)
1403 creating some new test in: $TESTTMP/anothertests (no-windows !)
1404 $ mkdir "$NEWTESTDIR"
1405 $ cd "$NEWTESTDIR"
1386
1406
1387 test that `run-tests.py` can execute hghave, even if it runs not in
1407 test that `run-tests.py` can execute hghave, even if it runs not in
1388 Mercurial source tree.
1408 Mercurial source tree.
1389
1409
1390 $ cat > test-hghave.t <<EOF
1410 $ cat > test-hghave.t <<EOF
1391 > #require true
1411 > #require true
1392 > $ echo foo
1412 > $ echo foo
1393 > foo
1413 > foo
1394 > EOF
1414 > EOF
1395 $ rt test-hghave.t
1415 $ rt test-hghave.t
1396 running 1 tests using 1 parallel processes
1416 running 1 tests using 1 parallel processes
1397 .
1417 .
1398 # Ran 1 tests, 0 skipped, 0 failed.
1418 # Ran 1 tests, 0 skipped, 0 failed.
1399
1419
1400 test that RUNTESTDIR refers the directory, in which `run-tests.py` now
1420 test that RUNTESTDIR refers the directory, in which `run-tests.py` now
1401 running is placed.
1421 running is placed.
1402
1422
1423
1403 $ cat > test-runtestdir.t <<EOF
1424 $ cat > test-runtestdir.t <<EOF
1404 > - $TESTDIR, in which test-run-tests.t is placed
1425 > # \$THISTESTDIR, in which test-run-tests.t (this test file) is placed
1405 > - \$TESTDIR, in which test-runtestdir.t is placed (expanded at runtime)
1426 > # \$THISTESTTMP, in which test-run-tests.t (this test file) is placed
1406 > - \$RUNTESTDIR, in which run-tests.py is placed (expanded at runtime)
1427 > # \$TESTDIR, in which test-runtestdir.t is placed (expanded at runtime)
1428 > # \$RUNTESTDIR, in which run-tests.py is placed (expanded at runtime)
1407 >
1429 >
1408 > #if windows
1430 > $ test "\$TESTDIR" = "\$NEWTESTDIR"
1409 > $ test "\$TESTDIR" = "$TESTTMP\\anothertests"
1410 > #else
1411 > $ test "\$TESTDIR" = "$TESTTMP"/anothertests
1412 > #endif
1413 > If this prints a path, that means RUNTESTDIR didn't equal
1431 > If this prints a path, that means RUNTESTDIR didn't equal
1414 > TESTDIR as it should have.
1432 > THISTESTDIR as it should have.
1415 > $ test "\$RUNTESTDIR" = "$TESTDIR" || echo "\$RUNTESTDIR"
1433 > $ test "\$RUNTESTDIR" = "\$THISTESTDIR" || echo "\$RUNTESTDIR"
1416 > This should print the start of check-code. If this passes but the
1434 > 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
1435 > 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.
1436 > RUNTESTSDIR ended up containing, even though it doesn't match THISTESTDIR.
1419 > $ head -n 3 "\$RUNTESTDIR"/../contrib/check-code.py | sed 's@.!.*python3@#!USRBINENVPY@'
1437 > $ head -n 3 "\$RUNTESTDIR"/../contrib/check-code.py | sed 's@.!.*python3@#!USRBINENVPY@'
1420 > #!USRBINENVPY
1438 > #!USRBINENVPY
1421 > #
1439 > #
1422 > # check-code - a style and portability checker for Mercurial
1440 > # check-code - a style and portability checker for Mercurial
1423 > EOF
1441 > EOF
1424 $ rt test-runtestdir.t
1442 $ rt test-runtestdir.t
1425 running 1 tests using 1 parallel processes
1443 running 1 tests using 1 parallel processes
1426 .
1444 .
1427 # Ran 1 tests, 0 skipped, 0 failed.
1445 # Ran 1 tests, 0 skipped, 0 failed.
1428
1446
1429 #if execbit
1447 #if execbit
1430
1448
1431 test that TESTDIR is referred in PATH
1449 test that TESTDIR is referred in PATH
1432
1450
1433 $ cat > custom-command.sh <<EOF
1451 $ cat > custom-command.sh <<EOF
1434 > #!/bin/sh
1452 > #!/bin/sh
1435 > echo "hello world"
1453 > echo "hello world"
1436 > EOF
1454 > EOF
1437 $ chmod +x custom-command.sh
1455 $ chmod +x custom-command.sh
1438 $ cat > test-testdir-path.t <<EOF
1456 $ cat > test-testdir-path.t <<EOF
1439 > $ custom-command.sh
1457 > $ custom-command.sh
1440 > hello world
1458 > hello world
1441 > EOF
1459 > EOF
1442 $ rt test-testdir-path.t
1460 $ rt test-testdir-path.t
1443 running 1 tests using 1 parallel processes
1461 running 1 tests using 1 parallel processes
1444 .
1462 .
1445 # Ran 1 tests, 0 skipped, 0 failed.
1463 # Ran 1 tests, 0 skipped, 0 failed.
1446
1464
1447 #endif
1465 #endif
1448
1466
1449 test support for --allow-slow-tests
1467 test support for --allow-slow-tests
1450 $ cat > test-very-slow-test.t <<EOF
1468 $ cat > test-very-slow-test.t <<EOF
1451 > #require slow
1469 > #require slow
1452 > $ echo pass
1470 > $ echo pass
1453 > pass
1471 > pass
1454 > EOF
1472 > EOF
1455 $ rt test-very-slow-test.t
1473 $ rt test-very-slow-test.t
1456 running 1 tests using 1 parallel processes
1474 running 1 tests using 1 parallel processes
1457 s
1475 s
1458 Skipped test-very-slow-test.t: missing feature: allow slow tests (use --allow-slow-tests)
1476 Skipped test-very-slow-test.t: missing feature: allow slow tests (use --allow-slow-tests)
1459 # Ran 0 tests, 1 skipped, 0 failed.
1477 # Ran 0 tests, 1 skipped, 0 failed.
1460 $ rt $HGTEST_RUN_TESTS_PURE --allow-slow-tests test-very-slow-test.t
1478 $ rt $HGTEST_RUN_TESTS_PURE --allow-slow-tests test-very-slow-test.t
1461 running 1 tests using 1 parallel processes
1479 running 1 tests using 1 parallel processes
1462 .
1480 .
1463 # Ran 1 tests, 0 skipped, 0 failed.
1481 # Ran 1 tests, 0 skipped, 0 failed.
1464
1482
1465 support for running a test outside the current directory
1483 support for running a test outside the current directory
1466 $ mkdir nonlocal
1484 $ mkdir nonlocal
1467 $ cat > nonlocal/test-is-not-here.t << EOF
1485 $ cat > nonlocal/test-is-not-here.t << EOF
1468 > $ echo pass
1486 > $ echo pass
1469 > pass
1487 > pass
1470 > EOF
1488 > EOF
1471 $ rt nonlocal/test-is-not-here.t
1489 $ rt nonlocal/test-is-not-here.t
1472 running 1 tests using 1 parallel processes
1490 running 1 tests using 1 parallel processes
1473 .
1491 .
1474 # Ran 1 tests, 0 skipped, 0 failed.
1492 # Ran 1 tests, 0 skipped, 0 failed.
1475
1493
1476 support for automatically discovering test if arg is a folder
1494 support for automatically discovering test if arg is a folder
1477 $ mkdir tmp && cd tmp
1495 $ mkdir tmp && cd tmp
1478
1496
1479 $ cat > test-uno.t << EOF
1497 $ cat > test-uno.t << EOF
1480 > $ echo line
1498 > $ echo line
1481 > line
1499 > line
1482 > EOF
1500 > EOF
1483
1501
1484 $ cp test-uno.t test-dos.t
1502 $ cp test-uno.t test-dos.t
1485 $ cd ..
1503 $ cd ..
1486 $ cp -R tmp tmpp
1504 $ cp -R tmp tmpp
1487 $ cp tmp/test-uno.t test-solo.t
1505 $ cp tmp/test-uno.t test-solo.t
1488
1506
1489 $ rt tmp/ test-solo.t tmpp
1507 $ rt tmp/ test-solo.t tmpp
1490 running 5 tests using 1 parallel processes
1508 running 5 tests using 1 parallel processes
1491 .....
1509 .....
1492 # Ran 5 tests, 0 skipped, 0 failed.
1510 # Ran 5 tests, 0 skipped, 0 failed.
1493 $ rm -rf tmp tmpp
1511 $ rm -rf tmp tmpp
1494
1512
1495 support for running run-tests.py from another directory
1513 support for running run-tests.py from another directory
1496 $ mkdir tmp && cd tmp
1514 $ mkdir tmp && cd tmp
1497
1515
1498 $ cat > useful-file.sh << EOF
1516 $ cat > useful-file.sh << EOF
1499 > important command
1517 > important command
1500 > EOF
1518 > EOF
1501
1519
1502 $ cat > test-folder.t << EOF
1520 $ cat > test-folder.t << EOF
1503 > $ cat \$TESTDIR/useful-file.sh
1521 > $ cat \$TESTDIR/useful-file.sh
1504 > important command
1522 > important command
1505 > EOF
1523 > EOF
1506
1524
1507 $ cat > test-folder-fail.t << EOF
1525 $ cat > test-folder-fail.t << EOF
1508 > $ cat \$TESTDIR/useful-file.sh
1526 > $ cat \$TESTDIR/useful-file.sh
1509 > important commando
1527 > important commando
1510 > EOF
1528 > EOF
1511
1529
1512 $ cd ..
1530 $ cd ..
1513 $ rt tmp/test-*.t
1531 $ rt tmp/test-*.t
1514 running 2 tests using 1 parallel processes
1532 running 2 tests using 1 parallel processes
1515
1533
1516 --- $TESTTMP/anothertests/tmp/test-folder-fail.t
1534 --- $TESTTMP/anothertests/tmp/test-folder-fail.t
1517 +++ $TESTTMP/anothertests/tmp/test-folder-fail.t.err
1535 +++ $TESTTMP/anothertests/tmp/test-folder-fail.t.err
1518 @@ -1,2 +1,2 @@
1536 @@ -1,2 +1,2 @@
1519 $ cat $TESTDIR/useful-file.sh
1537 $ cat $TESTDIR/useful-file.sh
1520 - important commando
1538 - important commando
1521 + important command
1539 + important command
1522
1540
1523 ERROR: test-folder-fail.t output changed
1541 ERROR: test-folder-fail.t output changed
1524 !.
1542 !.
1525 Failed test-folder-fail.t: output changed
1543 Failed test-folder-fail.t: output changed
1526 # Ran 2 tests, 0 skipped, 1 failed.
1544 # Ran 2 tests, 0 skipped, 1 failed.
1527 python hash seed: * (glob)
1545 python hash seed: * (glob)
1528 [1]
1546 [1]
1529
1547
1530 support for bisecting failed tests automatically
1548 support for bisecting failed tests automatically
1531 $ hg init bisect
1549 $ hg init bisect
1532 $ cd bisect
1550 $ cd bisect
1533 $ cat >> test-bisect.t <<EOF
1551 $ cat >> test-bisect.t <<EOF
1534 > $ echo pass
1552 > $ echo pass
1535 > pass
1553 > pass
1536 > EOF
1554 > EOF
1537 $ hg add test-bisect.t
1555 $ hg add test-bisect.t
1538 $ hg ci -m 'good'
1556 $ hg ci -m 'good'
1539 $ cat >> test-bisect.t <<EOF
1557 $ cat >> test-bisect.t <<EOF
1540 > $ echo pass
1558 > $ echo pass
1541 > fail
1559 > fail
1542 > EOF
1560 > EOF
1543 $ hg ci -m 'bad'
1561 $ hg ci -m 'bad'
1544 $ rt --known-good-rev=0 test-bisect.t
1562 $ rt --known-good-rev=0 test-bisect.t
1545 running 1 tests using 1 parallel processes
1563 running 1 tests using 1 parallel processes
1546
1564
1547 --- $TESTTMP/anothertests/bisect/test-bisect.t
1565 --- $TESTTMP/anothertests/bisect/test-bisect.t
1548 +++ $TESTTMP/anothertests/bisect/test-bisect.t.err
1566 +++ $TESTTMP/anothertests/bisect/test-bisect.t.err
1549 @@ -1,4 +1,4 @@
1567 @@ -1,4 +1,4 @@
1550 $ echo pass
1568 $ echo pass
1551 pass
1569 pass
1552 $ echo pass
1570 $ echo pass
1553 - fail
1571 - fail
1554 + pass
1572 + pass
1555
1573
1556 ERROR: test-bisect.t output changed
1574 ERROR: test-bisect.t output changed
1557 !
1575 !
1558 Failed test-bisect.t: output changed
1576 Failed test-bisect.t: output changed
1559 test-bisect.t broken by 72cbf122d116 (bad)
1577 test-bisect.t broken by 72cbf122d116 (bad)
1560 # Ran 1 tests, 0 skipped, 1 failed.
1578 # Ran 1 tests, 0 skipped, 1 failed.
1561 python hash seed: * (glob)
1579 python hash seed: * (glob)
1562 [1]
1580 [1]
1563
1581
1564 $ cd ..
1582 $ cd ..
1565
1583
1566 support bisecting a separate repo
1584 support bisecting a separate repo
1567
1585
1568 $ hg init bisect-dependent
1586 $ hg init bisect-dependent
1569 $ cd bisect-dependent
1587 $ cd bisect-dependent
1570 $ cat > test-bisect-dependent.t <<EOF
1588 $ cat > test-bisect-dependent.t <<EOF
1571 > $ tail -1 \$TESTDIR/../bisect/test-bisect.t
1589 > $ tail -1 \$TESTDIR/../bisect/test-bisect.t
1572 > pass
1590 > pass
1573 > EOF
1591 > EOF
1574 $ hg commit -Am dependent test-bisect-dependent.t
1592 $ hg commit -Am dependent test-bisect-dependent.t
1575
1593
1576 $ rt --known-good-rev=0 test-bisect-dependent.t
1594 $ rt --known-good-rev=0 test-bisect-dependent.t
1577 running 1 tests using 1 parallel processes
1595 running 1 tests using 1 parallel processes
1578
1596
1579 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1597 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1580 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1598 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1581 @@ -1,2 +1,2 @@
1599 @@ -1,2 +1,2 @@
1582 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1600 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1583 - pass
1601 - pass
1584 + fail
1602 + fail
1585
1603
1586 ERROR: test-bisect-dependent.t output changed
1604 ERROR: test-bisect-dependent.t output changed
1587 !
1605 !
1588 Failed test-bisect-dependent.t: output changed
1606 Failed test-bisect-dependent.t: output changed
1589 Failed to identify failure point for test-bisect-dependent.t
1607 Failed to identify failure point for test-bisect-dependent.t
1590 # Ran 1 tests, 0 skipped, 1 failed.
1608 # Ran 1 tests, 0 skipped, 1 failed.
1591 python hash seed: * (glob)
1609 python hash seed: * (glob)
1592 [1]
1610 [1]
1593
1611
1594 $ rt --bisect-repo=../test-bisect test-bisect-dependent.t
1612 $ rt --bisect-repo=../test-bisect test-bisect-dependent.t
1595 usage: run-tests.py [options] [tests]
1613 usage: run-tests.py [options] [tests]
1596 run-tests.py: error: --bisect-repo cannot be used without --known-good-rev
1614 run-tests.py: error: --bisect-repo cannot be used without --known-good-rev
1597 [2]
1615 [2]
1598
1616
1599 $ rt --known-good-rev=0 --bisect-repo=../bisect test-bisect-dependent.t
1617 $ rt --known-good-rev=0 --bisect-repo=../bisect test-bisect-dependent.t
1600 running 1 tests using 1 parallel processes
1618 running 1 tests using 1 parallel processes
1601
1619
1602 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1620 --- $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t
1603 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1621 +++ $TESTTMP/anothertests/bisect-dependent/test-bisect-dependent.t.err
1604 @@ -1,2 +1,2 @@
1622 @@ -1,2 +1,2 @@
1605 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1623 $ tail -1 $TESTDIR/../bisect/test-bisect.t
1606 - pass
1624 - pass
1607 + fail
1625 + fail
1608
1626
1609 ERROR: test-bisect-dependent.t output changed
1627 ERROR: test-bisect-dependent.t output changed
1610 !
1628 !
1611 Failed test-bisect-dependent.t: output changed
1629 Failed test-bisect-dependent.t: output changed
1612 test-bisect-dependent.t broken by 72cbf122d116 (bad)
1630 test-bisect-dependent.t broken by 72cbf122d116 (bad)
1613 # Ran 1 tests, 0 skipped, 1 failed.
1631 # Ran 1 tests, 0 skipped, 1 failed.
1614 python hash seed: * (glob)
1632 python hash seed: * (glob)
1615 [1]
1633 [1]
1616
1634
1617 $ cd ..
1635 $ cd ..
1618
1636
1619 Test a broken #if statement doesn't break run-tests threading.
1637 Test a broken #if statement doesn't break run-tests threading.
1620 ==============================================================
1638 ==============================================================
1621 $ mkdir broken
1639 $ mkdir broken
1622 $ cd broken
1640 $ cd broken
1623 $ cat > test-broken.t <<EOF
1641 $ cat > test-broken.t <<EOF
1624 > true
1642 > true
1625 > #if notarealhghavefeature
1643 > #if notarealhghavefeature
1626 > $ false
1644 > $ false
1627 > #endif
1645 > #endif
1628 > EOF
1646 > EOF
1629 $ for f in 1 2 3 4 ; do
1647 $ for f in 1 2 3 4 ; do
1630 > cat > test-works-$f.t <<EOF
1648 > cat > test-works-$f.t <<EOF
1631 > This is test case $f
1649 > This is test case $f
1632 > $ sleep 1
1650 > $ sleep 1
1633 > EOF
1651 > EOF
1634 > done
1652 > done
1635 $ rt -j 2
1653 $ rt -j 2
1636 running 5 tests using 2 parallel processes
1654 running 5 tests using 2 parallel processes
1637 ....
1655 ....
1638 # Ran 5 tests, 0 skipped, 0 failed.
1656 # Ran 5 tests, 0 skipped, 0 failed.
1639 skipped: unknown feature: notarealhghavefeature
1657 skipped: unknown feature: notarealhghavefeature
1640
1658
1641 $ cd ..
1659 $ cd ..
1642 $ rm -rf broken
1660 $ rm -rf broken
1643
1661
1644 Test cases in .t files
1662 Test cases in .t files
1645 ======================
1663 ======================
1646 $ mkdir cases
1664 $ mkdir cases
1647 $ cd cases
1665 $ cd cases
1648 $ cat > test-cases-abc.t <<'EOF'
1666 $ cat > test-cases-abc.t <<'EOF'
1649 > #testcases A B C
1667 > #testcases A B C
1650 > $ V=B
1668 > $ V=B
1651 > #if A
1669 > #if A
1652 > $ V=A
1670 > $ V=A
1653 > #endif
1671 > #endif
1654 > #if C
1672 > #if C
1655 > $ V=C
1673 > $ V=C
1656 > #endif
1674 > #endif
1657 > $ echo $V | sed 's/A/C/'
1675 > $ echo $V | sed 's/A/C/'
1658 > C
1676 > C
1659 > #if C
1677 > #if C
1660 > $ [ $V = C ]
1678 > $ [ $V = C ]
1661 > #endif
1679 > #endif
1662 > #if A
1680 > #if A
1663 > $ [ $V = C ]
1681 > $ [ $V = C ]
1664 > [1]
1682 > [1]
1665 > #endif
1683 > #endif
1666 > #if no-C
1684 > #if no-C
1667 > $ [ $V = C ]
1685 > $ [ $V = C ]
1668 > [1]
1686 > [1]
1669 > #endif
1687 > #endif
1670 > $ [ $V = D ]
1688 > $ [ $V = D ]
1671 > [1]
1689 > [1]
1672 > EOF
1690 > EOF
1673 $ rt
1691 $ rt
1674 running 3 tests using 1 parallel processes
1692 running 3 tests using 1 parallel processes
1675 .
1693 .
1676 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1694 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1677 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1695 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1678 @@ -7,7 +7,7 @@
1696 @@ -7,7 +7,7 @@
1679 $ V=C
1697 $ V=C
1680 #endif
1698 #endif
1681 $ echo $V | sed 's/A/C/'
1699 $ echo $V | sed 's/A/C/'
1682 - C
1700 - C
1683 + B
1701 + B
1684 #if C
1702 #if C
1685 $ [ $V = C ]
1703 $ [ $V = C ]
1686 #endif
1704 #endif
1687
1705
1688 ERROR: test-cases-abc.t#B output changed
1706 ERROR: test-cases-abc.t#B output changed
1689 !.
1707 !.
1690 Failed test-cases-abc.t#B: output changed
1708 Failed test-cases-abc.t#B: output changed
1691 # Ran 3 tests, 0 skipped, 1 failed.
1709 # Ran 3 tests, 0 skipped, 1 failed.
1692 python hash seed: * (glob)
1710 python hash seed: * (glob)
1693 [1]
1711 [1]
1694
1712
1695 --restart works
1713 --restart works
1696
1714
1697 $ rt --restart
1715 $ rt --restart
1698 running 2 tests using 1 parallel processes
1716 running 2 tests using 1 parallel processes
1699
1717
1700 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1718 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1701 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1719 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1702 @@ -7,7 +7,7 @@
1720 @@ -7,7 +7,7 @@
1703 $ V=C
1721 $ V=C
1704 #endif
1722 #endif
1705 $ echo $V | sed 's/A/C/'
1723 $ echo $V | sed 's/A/C/'
1706 - C
1724 - C
1707 + B
1725 + B
1708 #if C
1726 #if C
1709 $ [ $V = C ]
1727 $ [ $V = C ]
1710 #endif
1728 #endif
1711
1729
1712 ERROR: test-cases-abc.t#B output changed
1730 ERROR: test-cases-abc.t#B output changed
1713 !.
1731 !.
1714 Failed test-cases-abc.t#B: output changed
1732 Failed test-cases-abc.t#B: output changed
1715 # Ran 2 tests, 0 skipped, 1 failed.
1733 # Ran 2 tests, 0 skipped, 1 failed.
1716 python hash seed: * (glob)
1734 python hash seed: * (glob)
1717 [1]
1735 [1]
1718
1736
1719 --restart works with outputdir
1737 --restart works with outputdir
1720
1738
1721 $ mkdir output
1739 $ mkdir output
1722 $ mv test-cases-abc.t#B.err output
1740 $ mv test-cases-abc.t#B.err output
1723 $ rt --restart --outputdir output
1741 $ rt --restart --outputdir output
1724 running 2 tests using 1 parallel processes
1742 running 2 tests using 1 parallel processes
1725
1743
1726 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1744 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1727 +++ $TESTTMP/anothertests/cases/output/test-cases-abc.t#B.err
1745 +++ $TESTTMP/anothertests/cases/output/test-cases-abc.t#B.err
1728 @@ -7,7 +7,7 @@
1746 @@ -7,7 +7,7 @@
1729 $ V=C
1747 $ V=C
1730 #endif
1748 #endif
1731 $ echo $V | sed 's/A/C/'
1749 $ echo $V | sed 's/A/C/'
1732 - C
1750 - C
1733 + B
1751 + B
1734 #if C
1752 #if C
1735 $ [ $V = C ]
1753 $ [ $V = C ]
1736 #endif
1754 #endif
1737
1755
1738 ERROR: test-cases-abc.t#B output changed
1756 ERROR: test-cases-abc.t#B output changed
1739 !.
1757 !.
1740 Failed test-cases-abc.t#B: output changed
1758 Failed test-cases-abc.t#B: output changed
1741 # Ran 2 tests, 0 skipped, 1 failed.
1759 # Ran 2 tests, 0 skipped, 1 failed.
1742 python hash seed: * (glob)
1760 python hash seed: * (glob)
1743 [1]
1761 [1]
1744
1762
1745 Test TESTCASE variable
1763 Test TESTCASE variable
1746
1764
1747 $ cat > test-cases-ab.t <<'EOF'
1765 $ cat > test-cases-ab.t <<'EOF'
1748 > $ dostuff() {
1766 > $ dostuff() {
1749 > > echo "In case $TESTCASE"
1767 > > echo "In case $TESTCASE"
1750 > > }
1768 > > }
1751 > #testcases A B
1769 > #testcases A B
1752 > #if A
1770 > #if A
1753 > $ dostuff
1771 > $ dostuff
1754 > In case A
1772 > In case A
1755 > #endif
1773 > #endif
1756 > #if B
1774 > #if B
1757 > $ dostuff
1775 > $ dostuff
1758 > In case B
1776 > In case B
1759 > #endif
1777 > #endif
1760 > EOF
1778 > EOF
1761 $ rt test-cases-ab.t
1779 $ rt test-cases-ab.t
1762 running 2 tests using 1 parallel processes
1780 running 2 tests using 1 parallel processes
1763 ..
1781 ..
1764 # Ran 2 tests, 0 skipped, 0 failed.
1782 # Ran 2 tests, 0 skipped, 0 failed.
1765
1783
1766 Support running a specific test case
1784 Support running a specific test case
1767
1785
1768 $ rt "test-cases-abc.t#B"
1786 $ rt "test-cases-abc.t#B"
1769 running 1 tests using 1 parallel processes
1787 running 1 tests using 1 parallel processes
1770
1788
1771 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1789 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1772 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1790 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1773 @@ -7,7 +7,7 @@
1791 @@ -7,7 +7,7 @@
1774 $ V=C
1792 $ V=C
1775 #endif
1793 #endif
1776 $ echo $V | sed 's/A/C/'
1794 $ echo $V | sed 's/A/C/'
1777 - C
1795 - C
1778 + B
1796 + B
1779 #if C
1797 #if C
1780 $ [ $V = C ]
1798 $ [ $V = C ]
1781 #endif
1799 #endif
1782
1800
1783 ERROR: test-cases-abc.t#B output changed
1801 ERROR: test-cases-abc.t#B output changed
1784 !
1802 !
1785 Failed test-cases-abc.t#B: output changed
1803 Failed test-cases-abc.t#B: output changed
1786 # Ran 1 tests, 0 skipped, 1 failed.
1804 # Ran 1 tests, 0 skipped, 1 failed.
1787 python hash seed: * (glob)
1805 python hash seed: * (glob)
1788 [1]
1806 [1]
1789
1807
1790 Support running multiple test cases in the same file
1808 Support running multiple test cases in the same file
1791
1809
1792 $ rt test-cases-abc.t#B test-cases-abc.t#C
1810 $ rt test-cases-abc.t#B test-cases-abc.t#C
1793 running 2 tests using 1 parallel processes
1811 running 2 tests using 1 parallel processes
1794
1812
1795 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1813 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1796 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1814 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1797 @@ -7,7 +7,7 @@
1815 @@ -7,7 +7,7 @@
1798 $ V=C
1816 $ V=C
1799 #endif
1817 #endif
1800 $ echo $V | sed 's/A/C/'
1818 $ echo $V | sed 's/A/C/'
1801 - C
1819 - C
1802 + B
1820 + B
1803 #if C
1821 #if C
1804 $ [ $V = C ]
1822 $ [ $V = C ]
1805 #endif
1823 #endif
1806
1824
1807 ERROR: test-cases-abc.t#B output changed
1825 ERROR: test-cases-abc.t#B output changed
1808 !.
1826 !.
1809 Failed test-cases-abc.t#B: output changed
1827 Failed test-cases-abc.t#B: output changed
1810 # Ran 2 tests, 0 skipped, 1 failed.
1828 # Ran 2 tests, 0 skipped, 1 failed.
1811 python hash seed: * (glob)
1829 python hash seed: * (glob)
1812 [1]
1830 [1]
1813
1831
1814 Support ignoring invalid test cases
1832 Support ignoring invalid test cases
1815
1833
1816 $ rt test-cases-abc.t#B test-cases-abc.t#D
1834 $ rt test-cases-abc.t#B test-cases-abc.t#D
1817 running 1 tests using 1 parallel processes
1835 running 1 tests using 1 parallel processes
1818
1836
1819 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1837 --- $TESTTMP/anothertests/cases/test-cases-abc.t
1820 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1838 +++ $TESTTMP/anothertests/cases/test-cases-abc.t#B.err
1821 @@ -7,7 +7,7 @@
1839 @@ -7,7 +7,7 @@
1822 $ V=C
1840 $ V=C
1823 #endif
1841 #endif
1824 $ echo $V | sed 's/A/C/'
1842 $ echo $V | sed 's/A/C/'
1825 - C
1843 - C
1826 + B
1844 + B
1827 #if C
1845 #if C
1828 $ [ $V = C ]
1846 $ [ $V = C ]
1829 #endif
1847 #endif
1830
1848
1831 ERROR: test-cases-abc.t#B output changed
1849 ERROR: test-cases-abc.t#B output changed
1832 !
1850 !
1833 Failed test-cases-abc.t#B: output changed
1851 Failed test-cases-abc.t#B: output changed
1834 # Ran 1 tests, 0 skipped, 1 failed.
1852 # Ran 1 tests, 0 skipped, 1 failed.
1835 python hash seed: * (glob)
1853 python hash seed: * (glob)
1836 [1]
1854 [1]
1837
1855
1838 Support running complex test cases names
1856 Support running complex test cases names
1839
1857
1840 $ cat > test-cases-advanced-cases.t <<'EOF'
1858 $ cat > test-cases-advanced-cases.t <<'EOF'
1841 > #testcases simple case-with-dashes casewith_-.chars
1859 > #testcases simple case-with-dashes casewith_-.chars
1842 > $ echo $TESTCASE
1860 > $ echo $TESTCASE
1843 > simple
1861 > simple
1844 > EOF
1862 > EOF
1845
1863
1846 $ cat test-cases-advanced-cases.t
1864 $ cat test-cases-advanced-cases.t
1847 #testcases simple case-with-dashes casewith_-.chars
1865 #testcases simple case-with-dashes casewith_-.chars
1848 $ echo $TESTCASE
1866 $ echo $TESTCASE
1849 simple
1867 simple
1850
1868
1851 $ rt test-cases-advanced-cases.t
1869 $ rt test-cases-advanced-cases.t
1852 running 3 tests using 1 parallel processes
1870 running 3 tests using 1 parallel processes
1853
1871
1854 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1872 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1855 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1873 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1856 @@ -1,3 +1,3 @@
1874 @@ -1,3 +1,3 @@
1857 #testcases simple case-with-dashes casewith_-.chars
1875 #testcases simple case-with-dashes casewith_-.chars
1858 $ echo $TESTCASE
1876 $ echo $TESTCASE
1859 - simple
1877 - simple
1860 + case-with-dashes
1878 + case-with-dashes
1861
1879
1862 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1880 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1863 !
1881 !
1864 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1882 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1865 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1883 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1866 @@ -1,3 +1,3 @@
1884 @@ -1,3 +1,3 @@
1867 #testcases simple case-with-dashes casewith_-.chars
1885 #testcases simple case-with-dashes casewith_-.chars
1868 $ echo $TESTCASE
1886 $ echo $TESTCASE
1869 - simple
1887 - simple
1870 + casewith_-.chars
1888 + casewith_-.chars
1871
1889
1872 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1890 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1873 !.
1891 !.
1874 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1892 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1875 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1893 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1876 # Ran 3 tests, 0 skipped, 2 failed.
1894 # Ran 3 tests, 0 skipped, 2 failed.
1877 python hash seed: * (glob)
1895 python hash seed: * (glob)
1878 [1]
1896 [1]
1879
1897
1880 $ rt "test-cases-advanced-cases.t#case-with-dashes"
1898 $ rt "test-cases-advanced-cases.t#case-with-dashes"
1881 running 1 tests using 1 parallel processes
1899 running 1 tests using 1 parallel processes
1882
1900
1883 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1901 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1884 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1902 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#case-with-dashes.err
1885 @@ -1,3 +1,3 @@
1903 @@ -1,3 +1,3 @@
1886 #testcases simple case-with-dashes casewith_-.chars
1904 #testcases simple case-with-dashes casewith_-.chars
1887 $ echo $TESTCASE
1905 $ echo $TESTCASE
1888 - simple
1906 - simple
1889 + case-with-dashes
1907 + case-with-dashes
1890
1908
1891 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1909 ERROR: test-cases-advanced-cases.t#case-with-dashes output changed
1892 !
1910 !
1893 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1911 Failed test-cases-advanced-cases.t#case-with-dashes: output changed
1894 # Ran 1 tests, 0 skipped, 1 failed.
1912 # Ran 1 tests, 0 skipped, 1 failed.
1895 python hash seed: * (glob)
1913 python hash seed: * (glob)
1896 [1]
1914 [1]
1897
1915
1898 $ rt "test-cases-advanced-cases.t#casewith_-.chars"
1916 $ rt "test-cases-advanced-cases.t#casewith_-.chars"
1899 running 1 tests using 1 parallel processes
1917 running 1 tests using 1 parallel processes
1900
1918
1901 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1919 --- $TESTTMP/anothertests/cases/test-cases-advanced-cases.t
1902 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1920 +++ $TESTTMP/anothertests/cases/test-cases-advanced-cases.t#casewith_-.chars.err
1903 @@ -1,3 +1,3 @@
1921 @@ -1,3 +1,3 @@
1904 #testcases simple case-with-dashes casewith_-.chars
1922 #testcases simple case-with-dashes casewith_-.chars
1905 $ echo $TESTCASE
1923 $ echo $TESTCASE
1906 - simple
1924 - simple
1907 + casewith_-.chars
1925 + casewith_-.chars
1908
1926
1909 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1927 ERROR: test-cases-advanced-cases.t#casewith_-.chars output changed
1910 !
1928 !
1911 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1929 Failed test-cases-advanced-cases.t#casewith_-.chars: output changed
1912 # Ran 1 tests, 0 skipped, 1 failed.
1930 # Ran 1 tests, 0 skipped, 1 failed.
1913 python hash seed: * (glob)
1931 python hash seed: * (glob)
1914 [1]
1932 [1]
1915
1933
1916 Test automatic pattern replacement
1934 Test automatic pattern replacement
1917 ==================================
1935 ==================================
1918
1936
1919 $ cat << EOF >> common-pattern.py
1937 $ cat << EOF >> common-pattern.py
1920 > substitutions = [
1938 > substitutions = [
1921 > (br'foo-(.*)\\b',
1939 > (br'foo-(.*)\\b',
1922 > br'\$XXX=\\1\$'),
1940 > br'\$XXX=\\1\$'),
1923 > (br'bar\\n',
1941 > (br'bar\\n',
1924 > br'\$YYY$\\n'),
1942 > br'\$YYY$\\n'),
1925 > ]
1943 > ]
1926 > EOF
1944 > EOF
1927
1945
1928 $ cat << EOF >> test-substitution.t
1946 $ cat << EOF >> test-substitution.t
1929 > $ echo foo-12
1947 > $ echo foo-12
1930 > \$XXX=12$
1948 > \$XXX=12$
1931 > $ echo foo-42
1949 > $ echo foo-42
1932 > \$XXX=42$
1950 > \$XXX=42$
1933 > $ echo bar prior
1951 > $ echo bar prior
1934 > bar prior
1952 > bar prior
1935 > $ echo lastbar
1953 > $ echo lastbar
1936 > last\$YYY$
1954 > last\$YYY$
1937 > $ echo foo-bar foo-baz
1955 > $ echo foo-bar foo-baz
1938 > EOF
1956 > EOF
1939
1957
1940 $ rt test-substitution.t
1958 $ rt test-substitution.t
1941 running 1 tests using 1 parallel processes
1959 running 1 tests using 1 parallel processes
1942
1960
1943 --- $TESTTMP/anothertests/cases/test-substitution.t
1961 --- $TESTTMP/anothertests/cases/test-substitution.t
1944 +++ $TESTTMP/anothertests/cases/test-substitution.t.err
1962 +++ $TESTTMP/anothertests/cases/test-substitution.t.err
1945 @@ -7,3 +7,4 @@
1963 @@ -7,3 +7,4 @@
1946 $ echo lastbar
1964 $ echo lastbar
1947 last$YYY$
1965 last$YYY$
1948 $ echo foo-bar foo-baz
1966 $ echo foo-bar foo-baz
1949 + $XXX=bar foo-baz$
1967 + $XXX=bar foo-baz$
1950
1968
1951 ERROR: test-substitution.t output changed
1969 ERROR: test-substitution.t output changed
1952 !
1970 !
1953 Failed test-substitution.t: output changed
1971 Failed test-substitution.t: output changed
1954 # Ran 1 tests, 0 skipped, 1 failed.
1972 # Ran 1 tests, 0 skipped, 1 failed.
1955 python hash seed: * (glob)
1973 python hash seed: * (glob)
1956 [1]
1974 [1]
1957
1975
1958 --extra-config-opt works
1976 --extra-config-opt works
1959
1977
1960 $ cat << EOF >> test-config-opt.t
1978 $ cat << EOF >> test-config-opt.t
1961 > $ hg init test-config-opt
1979 > $ hg init test-config-opt
1962 > $ hg -R test-config-opt purge
1980 > $ hg -R test-config-opt purge
1963 > $ echo "HGTESTEXTRAEXTENSIONS: \$HGTESTEXTRAEXTENSIONS"
1981 > $ echo "HGTESTEXTRAEXTENSIONS: \$HGTESTEXTRAEXTENSIONS"
1964 > HGTESTEXTRAEXTENSIONS: purge
1982 > HGTESTEXTRAEXTENSIONS: purge
1965 > EOF
1983 > EOF
1966
1984
1967 $ rt --extra-config-opt extensions.purge= \
1985 $ rt --extra-config-opt extensions.purge= \
1968 > --extra-config-opt not.an.extension=True test-config-opt.t
1986 > --extra-config-opt not.an.extension=True test-config-opt.t
1969 running 1 tests using 1 parallel processes
1987 running 1 tests using 1 parallel processes
1970 .
1988 .
1971 # Ran 1 tests, 0 skipped, 0 failed.
1989 # Ran 1 tests, 0 skipped, 0 failed.
1972
1990
1973 Test conditional output matching
1991 Test conditional output matching
1974 ================================
1992 ================================
1975
1993
1976 $ cat << EOF >> test-conditional-matching.t
1994 $ cat << EOF >> test-conditional-matching.t
1977 > #testcases foo bar
1995 > #testcases foo bar
1978 > $ echo richtig
1996 > $ echo richtig
1979 > richtig (true !)
1997 > richtig (true !)
1980 > $ echo falsch
1998 > $ echo falsch
1981 > falsch (false !)
1999 > falsch (false !)
1982 > #if foo
2000 > #if foo
1983 > $ echo arthur
2001 > $ echo arthur
1984 > arthur (bar !)
2002 > arthur (bar !)
1985 > #endif
2003 > #endif
1986 > $ echo celeste
2004 > $ echo celeste
1987 > celeste (foo !)
2005 > celeste (foo !)
1988 > $ echo zephir
2006 > $ echo zephir
1989 > zephir (bar !)
2007 > zephir (bar !)
1990 > EOF
2008 > EOF
1991
2009
1992 $ rt test-conditional-matching.t
2010 $ rt test-conditional-matching.t
1993 running 2 tests using 1 parallel processes
2011 running 2 tests using 1 parallel processes
1994
2012
1995 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
2013 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
1996 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#bar.err
2014 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#bar.err
1997 @@ -3,11 +3,13 @@
2015 @@ -3,11 +3,13 @@
1998 richtig (true !)
2016 richtig (true !)
1999 $ echo falsch
2017 $ echo falsch
2000 falsch (false !)
2018 falsch (false !)
2001 + falsch
2019 + falsch
2002 #if foo
2020 #if foo
2003 $ echo arthur
2021 $ echo arthur
2004 arthur \(bar !\) (re)
2022 arthur \(bar !\) (re)
2005 #endif
2023 #endif
2006 $ echo celeste
2024 $ echo celeste
2007 celeste \(foo !\) (re)
2025 celeste \(foo !\) (re)
2008 + celeste
2026 + celeste
2009 $ echo zephir
2027 $ echo zephir
2010 zephir \(bar !\) (re)
2028 zephir \(bar !\) (re)
2011
2029
2012 ERROR: test-conditional-matching.t#bar output changed
2030 ERROR: test-conditional-matching.t#bar output changed
2013 !
2031 !
2014 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
2032 --- $TESTTMP/anothertests/cases/test-conditional-matching.t
2015 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#foo.err
2033 +++ $TESTTMP/anothertests/cases/test-conditional-matching.t#foo.err
2016 @@ -3,11 +3,14 @@
2034 @@ -3,11 +3,14 @@
2017 richtig (true !)
2035 richtig (true !)
2018 $ echo falsch
2036 $ echo falsch
2019 falsch (false !)
2037 falsch (false !)
2020 + falsch
2038 + falsch
2021 #if foo
2039 #if foo
2022 $ echo arthur
2040 $ echo arthur
2023 arthur \(bar !\) (re)
2041 arthur \(bar !\) (re)
2024 + arthur
2042 + arthur
2025 #endif
2043 #endif
2026 $ echo celeste
2044 $ echo celeste
2027 celeste \(foo !\) (re)
2045 celeste \(foo !\) (re)
2028 $ echo zephir
2046 $ echo zephir
2029 zephir \(bar !\) (re)
2047 zephir \(bar !\) (re)
2030 + zephir
2048 + zephir
2031
2049
2032 ERROR: test-conditional-matching.t#foo output changed
2050 ERROR: test-conditional-matching.t#foo output changed
2033 !
2051 !
2034 Failed test-conditional-matching.t#bar: output changed
2052 Failed test-conditional-matching.t#bar: output changed
2035 Failed test-conditional-matching.t#foo: output changed
2053 Failed test-conditional-matching.t#foo: output changed
2036 # Ran 2 tests, 0 skipped, 2 failed.
2054 # Ran 2 tests, 0 skipped, 2 failed.
2037 python hash seed: * (glob)
2055 python hash seed: * (glob)
2038 [1]
2056 [1]
2039
2057
2040 Test that a proper "python" has been set up
2058 Test that a proper "python" has been set up
2041 ===========================================
2059 ===========================================
2042
2060
2043 (with a small check-code work around)
2061 (with a small check-code work around)
2044 $ printf "#!/usr/bi" > test-py3.tmp
2062 $ printf "#!/usr/bi" > test-py3.tmp
2045 $ printf "n/en" >> test-py3.tmp
2063 $ printf "n/en" >> test-py3.tmp
2046 $ cat << EOF >> test-py3.tmp
2064 $ cat << EOF >> test-py3.tmp
2047 > v python3
2065 > v python3
2048 > import sys
2066 > import sys
2049 > print('.'.join(str(x) for x in sys.version_info))
2067 > print('.'.join(str(x) for x in sys.version_info))
2050 > EOF
2068 > EOF
2051 $ mv test-py3.tmp test-py3.py
2069 $ mv test-py3.tmp test-py3.py
2052 $ chmod +x test-py3.py
2070 $ chmod +x test-py3.py
2053
2071
2054 (with a small check-code work around)
2072 (with a small check-code work around)
2055 $ printf "#!/usr/bi" > test-py.tmp
2073 $ printf "#!/usr/bi" > test-py.tmp
2056 $ printf "n/en" >> test-py.tmp
2074 $ printf "n/en" >> test-py.tmp
2057 $ cat << EOF >> test-py.tmp
2075 $ cat << EOF >> test-py.tmp
2058 > v python
2076 > v python
2059 > import sys
2077 > import sys
2060 > print('.'.join(str(x) for x in sys.version_info))
2078 > print('.'.join(str(x) for x in sys.version_info))
2061 > EOF
2079 > EOF
2062 $ mv test-py.tmp test-py.py
2080 $ mv test-py.tmp test-py.py
2063 $ chmod +x test-py.py
2081 $ chmod +x test-py.py
2064
2082
2065 $ ./test-py3.py
2083 $ ./test-py3.py
2066 3.* (glob)
2084 3.* (glob)
2067 $ ./test-py.py
2085 $ ./test-py.py
2068 2.* (glob) (no-py3 !)
2086 2.* (glob) (no-py3 !)
2069 3.* (glob) (py3 !)
2087 3.* (glob) (py3 !)
General Comments 0
You need to be logged in to leave comments. Login now