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