test-run-tests.t
853 lines
| 22.1 KiB
| text/troff
|
Tads3Lexer
/ tests / test-run-tests.t
Pierre-Yves David
|
r21732 | This file tests the behavior of run-tests.py itself. | ||
Pierre-Yves David
|
r24960 | Avoid interference from actual test env: | ||
timeless
|
r29220 | $ . "$TESTDIR/helper-runtests.sh" | ||
Pierre-Yves David
|
r24960 | |||
Matt Mackall
|
r27395 | Smoke test with install | ||
Pierre-Yves David
|
r21732 | ============ | ||
Matt Mackall
|
r27395 | $ run-tests.py $HGTEST_RUN_TESTS_PURE -l | ||
Pierre-Yves David
|
r21732 | |||
# Ran 0 tests, 0 skipped, 0 warned, 0 failed. | ||||
Pierre-Yves David
|
r21734 | |||
Matt Mackall
|
r27395 | Define a helper to avoid the install step | ||
============= | ||||
$ rt() | ||||
> { | ||||
> run-tests.py --with-hg=`which hg` "$@" | ||||
> } | ||||
timeless
|
r28037 | error paths | ||
#if symlink | ||||
$ ln -s `which true` hg | ||||
$ run-tests.py --with-hg=./hg | ||||
warning: --with-hg should specify an hg script | ||||
# Ran 0 tests, 0 skipped, 0 warned, 0 failed. | ||||
$ rm hg | ||||
#endif | ||||
#if execbit | ||||
$ touch hg | ||||
$ run-tests.py --with-hg=./hg | ||||
Usage: run-tests.py [options] [tests] | ||||
run-tests.py: error: --with-hg must specify an executable hg script | ||||
[2] | ||||
$ rm hg | ||||
#endif | ||||
timeless
|
r28812 | an empty test | ||
======================= | ||||
$ touch test-empty.t | ||||
$ rt | ||||
. | ||||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
$ rm test-empty.t | ||||
Pierre-Yves David
|
r21734 | a succesful test | ||
======================= | ||||
$ cat > test-success.t << EOF | ||||
> $ echo babar | ||||
> babar | ||||
Augie Fackler
|
r21995 | > $ echo xyzzy | ||
timeless
|
r28701 | > never*happens (glob) (?) | ||
Augie Fackler
|
r21995 | > xyzzy | ||
Matt Mackall
|
r25388 | > nor this (?) | ||
Matt Harbison
|
r28317 | > $ printf 'abc\ndef\nxyz\n' | ||
> 123 (?) | ||||
> abc | ||||
> def (?) | ||||
> 456 (?) | ||||
> xyz | ||||
Pierre-Yves David
|
r21734 | > EOF | ||
Matt Mackall
|
r27395 | $ rt | ||
Pierre-Yves David
|
r21734 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
Pierre-Yves David
|
r21738 | |||
failing test | ||||
================== | ||||
timeless
|
r28619 | test churn with globs | ||
$ cat > test-failure.t <<EOF | ||||
> $ echo "bar-baz"; echo "bar-bad" | ||||
> bar*bad (glob) | ||||
> bar*baz (glob) | ||||
> EOF | ||||
$ rt test-failure.t | ||||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
@@ -1,3 +1,3 @@ | ||||
$ echo "bar-baz"; echo "bar-bad" | ||||
+ bar*baz (glob) | ||||
bar*bad (glob) | ||||
- bar*baz (glob) | ||||
ERROR: test-failure.t output changed | ||||
! | ||||
Failed test-failure.t: output changed | ||||
# Ran 1 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
basic failing test | ||||
Pierre-Yves David
|
r21738 | $ cat > test-failure.t << EOF | ||
> $ echo babar | ||||
> rataxes | ||||
Augie Fackler
|
r21995 | > This is a noop statement so that | ||
> this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | > pad pad pad pad............................................................ | ||
> pad pad pad pad............................................................ | ||||
Pierre-Yves David
|
r21738 | > EOF | ||
Gregory Szorc
|
r24500 | >>> fh = open('test-failure-unicode.t', 'wb') | ||
Augie Fackler
|
r25054 | >>> fh.write(u' $ echo babar\u03b1\n'.encode('utf-8')) and None | ||
>>> fh.write(u' l\u03b5\u03b5t\n'.encode('utf-8')) and None | ||||
Gregory Szorc
|
r24500 | |||
Matt Mackall
|
r27395 | $ rt | ||
Pierre-Yves David
|
r21738 | |||
Matt Harbison
|
r23348 | --- $TESTTMP/test-failure.t | ||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Pierre-Yves David
|
r21738 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
Augie Fackler
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Pierre-Yves David
|
r21738 | |||
ERROR: test-failure.t output changed | ||||
!. | ||||
Gregory Szorc
|
r24500 | --- $TESTTMP/test-failure-unicode.t | ||
+++ $TESTTMP/test-failure-unicode.t.err | ||||
@@ -1,2 +1,2 @@ | ||||
$ echo babar\xce\xb1 (esc) | ||||
- l\xce\xb5\xce\xb5t (esc) | ||||
+ babar\xce\xb1 (esc) | ||||
ERROR: test-failure-unicode.t output changed | ||||
! | ||||
Pierre-Yves David
|
r21738 | Failed test-failure.t: output changed | ||
Gregory Szorc
|
r24500 | Failed test-failure-unicode.t: output changed | ||
# Ran 3 tests, 0 skipped, 0 warned, 2 failed. | ||||
Pierre-Yves David
|
r21738 | python hash seed: * (glob) | ||
[1] | ||||
Gregory Szorc
|
r24500 | |||
Augie Fackler
|
r22044 | test --xunit support | ||
Matt Mackall
|
r27395 | $ rt --xunit=xunit.xml | ||
Augie Fackler
|
r22044 | |||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Augie Fackler
|
r22044 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Augie Fackler
|
r22044 | |||
ERROR: test-failure.t output changed | ||||
!. | ||||
Gregory Szorc
|
r24500 | --- $TESTTMP/test-failure-unicode.t | ||
+++ $TESTTMP/test-failure-unicode.t.err | ||||
@@ -1,2 +1,2 @@ | ||||
$ echo babar\xce\xb1 (esc) | ||||
- l\xce\xb5\xce\xb5t (esc) | ||||
+ babar\xce\xb1 (esc) | ||||
ERROR: test-failure-unicode.t output changed | ||||
! | ||||
Augie Fackler
|
r22044 | Failed test-failure.t: output changed | ||
Gregory Szorc
|
r24500 | Failed test-failure-unicode.t: output changed | ||
# Ran 3 tests, 0 skipped, 0 warned, 2 failed. | ||||
Augie Fackler
|
r22044 | python hash seed: * (glob) | ||
[1] | ||||
$ cat xunit.xml | ||||
<?xml version="1.0" encoding="utf-8"?> | ||||
Gregory Szorc
|
r24500 | <testsuite errors="0" failures="2" name="run-tests" skipped="0" tests="3"> | ||
Augie Fackler
|
r22044 | <testcase name="test-success.t" time="*"/> (glob) | ||
Gregory Szorc
|
r24500 | <testcase name="test-failure-unicode.t" time="*"> (glob) | ||
<![CDATA[--- $TESTTMP/test-failure-unicode.t | ||||
+++ $TESTTMP/test-failure-unicode.t.err | ||||
@@ -1,2 +1,2 @@ | ||||
$ echo babar\xce\xb1 (esc) | ||||
- l\xce\xb5\xce\xb5t (esc) | ||||
+ babar\xce\xb1 (esc) | ||||
]]> </testcase> | ||||
Augie Fackler
|
r22044 | <testcase name="test-failure.t" time="*"> (glob) | ||
<![CDATA[--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Augie Fackler
|
r22044 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Augie Fackler
|
r22044 | ]]> </testcase> | ||
</testsuite> | ||||
Pierre-Yves David
|
r21741 | |||
timeless
|
r29280 | $ cat .testtimes | ||
test-failure-unicode.t * (glob) | ||||
test-failure.t * (glob) | ||||
test-success.t * (glob) | ||||
Gregory Szorc
|
r24500 | $ rm test-failure-unicode.t | ||
Pierre-Yves David
|
r21741 | test for --retest | ||
==================== | ||||
Matt Mackall
|
r27395 | $ rt --retest | ||
Pierre-Yves David
|
r21741 | |||
Matt Harbison
|
r23348 | --- $TESTTMP/test-failure.t | ||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Pierre-Yves David
|
r21741 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
Augie Fackler
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Pierre-Yves David
|
r21741 | |||
ERROR: test-failure.t output changed | ||||
! | ||||
Failed test-failure.t: output changed | ||||
Augie Fackler
|
r21997 | # Ran 2 tests, 1 skipped, 0 warned, 1 failed. | ||
Pierre-Yves David
|
r21741 | python hash seed: * (glob) | ||
[1] | ||||
Pierre-Yves David
|
r21742 | |||
Selecting Tests To Run | ||||
====================== | ||||
successful | ||||
Matt Mackall
|
r27395 | $ rt test-success.t | ||
Pierre-Yves David
|
r21742 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
Augie Fackler
|
r21997 | success w/ keyword | ||
Matt Mackall
|
r27395 | $ rt -k xyzzy | ||
Matt Mackall
|
r22107 | . | ||
# Ran 2 tests, 1 skipped, 0 warned, 0 failed. | ||||
Augie Fackler
|
r21997 | |||
Pierre-Yves David
|
r21742 | failed | ||
Matt Mackall
|
r27395 | $ rt test-failure.t | ||
Pierre-Yves David
|
r21742 | |||
Matt Harbison
|
r23348 | --- $TESTTMP/test-failure.t | ||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Pierre-Yves David
|
r21742 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
Augie Fackler
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Pierre-Yves David
|
r21742 | |||
ERROR: test-failure.t output changed | ||||
! | ||||
Failed test-failure.t: output changed | ||||
# Ran 1 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
Pierre-Yves David
|
r21743 | |||
Augie Fackler
|
r21997 | failure w/ keyword | ||
Matt Mackall
|
r27395 | $ rt -k rataxes | ||
Matt Mackall
|
r22107 | |||
Augie Fackler
|
r21997 | --- $TESTTMP/test-failure.t | ||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Augie Fackler
|
r21997 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Augie Fackler
|
r21997 | |||
ERROR: test-failure.t output changed | ||||
! | ||||
Failed test-failure.t: output changed | ||||
Matt Mackall
|
r22107 | # Ran 2 tests, 1 skipped, 0 warned, 1 failed. | ||
Augie Fackler
|
r21997 | python hash seed: * (glob) | ||
[1] | ||||
Augie Fackler
|
r22840 | Verify that when a process fails to start we show a useful message | ||
================================================================== | ||||
$ cat > test-serve-fail.t <<EOF | ||||
> $ echo 'abort: child process failed to start blah' | ||||
> EOF | ||||
Matt Mackall
|
r27395 | $ rt test-serve-fail.t | ||
Augie Fackler
|
r22840 | |||
ERROR: test-serve-fail.t output changed | ||||
! | ||||
Failed test-serve-fail.t: server failed to start (HGPORT=*) (glob) | ||||
timeless
|
r27567 | # Ran 1 tests, 0 skipped, 0 warned, 1 failed. | ||
Augie Fackler
|
r22840 | python hash seed: * (glob) | ||
[1] | ||||
$ rm test-serve-fail.t | ||||
timeless
|
r27602 | Verify that we can try other ports | ||
=================================== | ||||
$ hg init inuse | ||||
$ hg serve -R inuse -p $HGPORT -d --pid-file=blocks.pid | ||||
$ cat blocks.pid >> $DAEMON_PIDS | ||||
$ cat > test-serve-inuse.t <<EOF | ||||
> $ hg serve -R `pwd`/inuse -p \$HGPORT -d --pid-file=hg.pid | ||||
> $ cat hg.pid >> \$DAEMON_PIDS | ||||
> EOF | ||||
$ rt test-serve-inuse.t | ||||
. | ||||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
$ rm test-serve-inuse.t | ||||
timeless
|
r29221 | $ killdaemons.py $DAEMON_PIDS | ||
$ rm $DAEMON_PIDS | ||||
timeless
|
r27602 | |||
Pierre-Yves David
|
r21743 | Running In Debug Mode | ||
====================== | ||||
Matt Mackall
|
r27395 | $ rt --debug 2>&1 | grep -v pwd | ||
Thomas Klausner
|
r23676 | + echo *SALT* 0 0 (glob) | ||
*SALT* 0 0 (glob) | ||||
Pierre-Yves David
|
r21743 | + echo babar | ||
babar | ||||
Matt Harbison
|
r28316 | + echo *SALT* 6 0 (glob) | ||
*SALT* 6 0 (glob) | ||||
Matt Harbison
|
r27509 | *+ echo *SALT* 0 0 (glob) | ||
Thomas Klausner
|
r23676 | *SALT* 0 0 (glob) | ||
Pierre-Yves David
|
r21743 | + echo babar | ||
babar | ||||
Thomas Klausner
|
r23676 | + echo *SALT* 2 0 (glob) | ||
*SALT* 2 0 (glob) | ||||
Augie Fackler
|
r21995 | + echo xyzzy | ||
xyzzy | ||||
Matt Mackall
|
r25388 | + echo *SALT* 6 0 (glob) | ||
*SALT* 6 0 (glob) | ||||
Matt Harbison
|
r28317 | + printf *abc\ndef\nxyz\n* (glob) | ||
abc | ||||
def | ||||
xyz | ||||
+ echo *SALT* 12 0 (glob) | ||||
*SALT* 12 0 (glob) | ||||
Pierre-Yves David
|
r21743 | . | ||
# Ran 2 tests, 0 skipped, 0 warned, 0 failed. | ||||
Pierre-Yves David
|
r21744 | |||
Parallel runs | ||||
============== | ||||
(duplicate the failing test to get predictable output) | ||||
$ cp test-failure.t test-failure-copy.t | ||||
Matt Mackall
|
r27395 | $ rt --jobs 2 test-failure*.t -n | ||
Matt Mackall
|
r23107 | !! | ||
Pierre-Yves David
|
r21744 | Failed test-failure*.t: output changed (glob) | ||
Failed test-failure*.t: output changed (glob) | ||||
# Ran 2 tests, 0 skipped, 0 warned, 2 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
Augie Fackler
|
r22838 | failures in parallel with --first should only print one failure | ||
>>> f = open('test-nothing.t', 'w') | ||||
Augie Fackler
|
r25054 | >>> f.write('foo\n' * 1024) and None | ||
>>> f.write(' $ sleep 1') and None | ||||
Matt Mackall
|
r27395 | $ rt --jobs 2 --first | ||
Augie Fackler
|
r22838 | |||
--- $TESTTMP/test-failure*.t (glob) | ||||
+++ $TESTTMP/test-failure*.t.err (glob) | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Augie Fackler
|
r22838 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Augie Fackler
|
r22838 | |||
Failed test-failure*.t: output changed (glob) | ||||
Gregory Szorc
|
r24507 | Failed test-nothing.t: output changed | ||
# Ran 2 tests, 0 skipped, 0 warned, 2 failed. | ||||
Augie Fackler
|
r22838 | python hash seed: * (glob) | ||
[1] | ||||
Pierre-Yves David
|
r21744 | (delete the duplicated test file) | ||
Augie Fackler
|
r22838 | $ rm test-failure-copy.t test-nothing.t | ||
Pierre-Yves David
|
r21744 | |||
Pierre-Yves David
|
r21755 | |||
Interactive run | ||||
=============== | ||||
(backup the failing test) | ||||
$ cp test-failure.t backup | ||||
Refuse the fix | ||||
Matt Mackall
|
r27395 | $ echo 'n' | rt -i | ||
Pierre-Yves David
|
r21755 | |||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Pierre-Yves David
|
r21755 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
Augie Fackler
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Matt Mackall
|
r21763 | Accept this change? [n] | ||
Pierre-Yves David
|
r21755 | ERROR: test-failure.t output changed | ||
Matt Mackall
|
r21763 | !. | ||
Pierre-Yves David
|
r21755 | Failed test-failure.t: output changed | ||
# Ran 2 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
$ cat test-failure.t | ||||
$ echo babar | ||||
rataxes | ||||
Augie Fackler
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
pad pad pad pad............................................................ | ||||
Pierre-Yves David
|
r21755 | |||
Gregory Szorc
|
r22361 | Interactive with custom view | ||
Matt Mackall
|
r27395 | $ echo 'n' | rt -i --view echo | ||
Matt Harbison
|
r23348 | $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err (glob) | ||
Gregory Szorc
|
r22361 | Accept this change? [n]* (glob) | ||
ERROR: test-failure.t output changed | ||||
!. | ||||
Failed test-failure.t: output changed | ||||
# Ran 2 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
Matt Mackall
|
r22108 | View the fix | ||
Matt Mackall
|
r27395 | $ echo 'y' | rt --view echo | ||
Matt Harbison
|
r23348 | $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err (glob) | ||
Matt Mackall
|
r22108 | |||
ERROR: test-failure.t output changed | ||||
!. | ||||
Failed test-failure.t: output changed | ||||
# Ran 2 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
Pierre-Yves David
|
r21755 | |||
Accept the fix | ||||
Mads Kiilerich
|
r23728 | $ echo " $ echo 'saved backup bundle to \$TESTTMP/foo.hg'" >> test-failure.t | ||
$ echo " saved backup bundle to \$TESTTMP/foo.hg" >> test-failure.t | ||||
$ echo " $ echo 'saved backup bundle to \$TESTTMP/foo.hg'" >> test-failure.t | ||||
$ echo " saved backup bundle to \$TESTTMP/foo.hg (glob)" >> test-failure.t | ||||
$ echo " $ echo 'saved backup bundle to \$TESTTMP/foo.hg'" >> test-failure.t | ||||
$ echo " saved backup bundle to \$TESTTMP/*.hg (glob)" >> test-failure.t | ||||
Matt Mackall
|
r27395 | $ echo 'y' | rt -i 2>&1 | ||
Pierre-Yves David
|
r21755 | |||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,11 +1,11 @@ | ||
Pierre-Yves David
|
r21755 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
Augie Fackler
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
pad pad pad pad............................................................ | ||||
Mads Kiilerich
|
r23728 | $ echo 'saved backup bundle to $TESTTMP/foo.hg' | ||
- saved backup bundle to $TESTTMP/foo.hg | ||||
Matt Mackall
|
r27395 | + saved backup bundle to $TESTTMP/foo.hg* (glob) | ||
Mads Kiilerich
|
r23728 | $ echo 'saved backup bundle to $TESTTMP/foo.hg' | ||
Matt Mackall
|
r27395 | saved backup bundle to $TESTTMP/foo.hg* (glob) | ||
Mads Kiilerich
|
r23728 | $ echo 'saved backup bundle to $TESTTMP/foo.hg' | ||
Pierre-Yves David
|
r21755 | Accept this change? [n] .. | ||
# Ran 2 tests, 0 skipped, 0 warned, 0 failed. | ||||
Mads Kiilerich
|
r23728 | $ sed -e 's,(glob)$,&<,g' test-failure.t | ||
Pierre-Yves David
|
r21755 | $ echo babar | ||
babar | ||||
Augie Fackler
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
pad pad pad pad............................................................ | ||||
Mads Kiilerich
|
r23728 | $ echo 'saved backup bundle to $TESTTMP/foo.hg' | ||
saved backup bundle to $TESTTMP/foo.hg (glob)< | ||||
$ echo 'saved backup bundle to $TESTTMP/foo.hg' | ||||
saved backup bundle to $TESTTMP/foo.hg (glob)< | ||||
$ echo 'saved backup bundle to $TESTTMP/foo.hg' | ||||
saved backup bundle to $TESTTMP/*.hg (glob)< | ||||
Pierre-Yves David
|
r21755 | |||
(reinstall) | ||||
$ mv backup test-failure.t | ||||
Pierre-Yves David
|
r21756 | |||
No Diff | ||||
=============== | ||||
Matt Mackall
|
r27395 | $ rt --nodiff | ||
Pierre-Yves David
|
r21756 | !. | ||
Failed test-failure.t: output changed | ||||
# Ran 2 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
anuraggoel
|
r21977 | |||
timeless@mozdev.org
|
r26422 | test --tmpdir support | ||
Matt Mackall
|
r27395 | $ rt --tmpdir=$TESTTMP/keep test-success.t | ||
timeless@mozdev.org
|
r26422 | |||
Matt Harbison
|
r26432 | Keeping testtmp dir: $TESTTMP/keep/child1/test-success.t (glob) | ||
Keeping threadtmp dir: $TESTTMP/keep/child1 (glob) | ||||
timeless@mozdev.org
|
r26422 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
timeless
|
r27141 | timeouts | ||
======== | ||||
$ cat > test-timeout.t <<EOF | ||||
> $ sleep 2 | ||||
> $ echo pass | ||||
> pass | ||||
> EOF | ||||
> echo '#require slow' > test-slow-timeout.t | ||||
> cat test-timeout.t >> test-slow-timeout.t | ||||
Matt Mackall
|
r27395 | $ rt --timeout=1 --slowtimeout=3 test-timeout.t test-slow-timeout.t | ||
Matt Mackall
|
r27393 | st | ||
timeless
|
r27564 | Skipped test-slow-timeout.t: missing feature: allow slow tests | ||
timeless
|
r27141 | Failed test-timeout.t: timed out | ||
# Ran 1 tests, 1 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
Matt Mackall
|
r27395 | $ rt --timeout=1 --slowtimeout=3 \ | ||
timeless
|
r27141 | > test-timeout.t test-slow-timeout.t --allow-slow-tests | ||
Matt Mackall
|
r27393 | .t | ||
timeless
|
r27141 | Failed test-timeout.t: timed out | ||
# Ran 2 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
$ rm test-timeout.t test-slow-timeout.t | ||||
anuraggoel
|
r21977 | test for --time | ||
================== | ||||
Matt Mackall
|
r27395 | $ rt test-success.t --time | ||
anuraggoel
|
r21977 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
# Producing time report | ||||
Pierre-Yves David
|
r25098 | start end cuser csys real Test | ||
\s*[\d\.]{5} \s*[\d\.]{5} \s*[\d\.]{5} \s*[\d\.]{5} \s*[\d\.]{5} test-success.t (re) | ||||
anuraggoel
|
r21977 | |||
test for --time with --job enabled | ||||
==================================== | ||||
Matt Mackall
|
r27395 | $ rt test-success.t --time --jobs 2 | ||
anuraggoel
|
r21977 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
# Producing time report | ||||
Pierre-Yves David
|
r25098 | start end cuser csys real Test | ||
\s*[\d\.]{5} \s*[\d\.]{5} \s*[\d\.]{5} \s*[\d\.]{5} \s*[\d\.]{5} test-success.t (re) | ||||
Augie Fackler
|
r21996 | |||
Skips | ||||
================ | ||||
$ cat > test-skip.t <<EOF | ||||
> $ echo xyzzy | ||||
Matt Mackall
|
r22045 | > #require false | ||
Augie Fackler
|
r21996 | > EOF | ||
Matt Mackall
|
r27395 | $ rt --nodiff | ||
Augie Fackler
|
r21996 | !.s | ||
timeless
|
r27564 | Skipped test-skip.t: missing feature: nail clipper | ||
Augie Fackler
|
r21996 | Failed test-failure.t: output changed | ||
# Ran 2 tests, 1 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
Matt Mackall
|
r27395 | $ rt --keyword xyzzy | ||
Matt Mackall
|
r22107 | .s | ||
timeless
|
r27564 | Skipped test-skip.t: missing feature: nail clipper | ||
Matt Mackall
|
r22107 | # Ran 2 tests, 2 skipped, 0 warned, 0 failed. | ||
Augie Fackler
|
r21997 | |||
Augie Fackler
|
r22044 | Skips with xml | ||
Matt Mackall
|
r27395 | $ rt --keyword xyzzy \ | ||
Augie Fackler
|
r22044 | > --xunit=xunit.xml | ||
Matt Mackall
|
r22107 | .s | ||
timeless
|
r27564 | Skipped test-skip.t: missing feature: nail clipper | ||
Matt Mackall
|
r22107 | # Ran 2 tests, 2 skipped, 0 warned, 0 failed. | ||
Augie Fackler
|
r22044 | $ cat xunit.xml | ||
<?xml version="1.0" encoding="utf-8"?> | ||||
Matt Mackall
|
r22107 | <testsuite errors="0" failures="0" name="run-tests" skipped="2" tests="2"> | ||
Augie Fackler
|
r22044 | <testcase name="test-success.t" time="*"/> (glob) | ||
</testsuite> | ||||
Augie Fackler
|
r21997 | Missing skips or blacklisted skips don't count as executed: | ||
$ echo test-failure.t > blacklist | ||||
Laurent Charignon
|
r27927 | $ rt --blacklist=blacklist --json\ | ||
Augie Fackler
|
r21997 | > test-failure.t test-bogus.t | ||
ss | ||||
Skipped test-bogus.t: Doesn't exist | ||||
Skipped test-failure.t: blacklisted | ||||
# Ran 0 tests, 2 skipped, 0 warned, 0 failed. | ||||
Laurent Charignon
|
r27927 | $ cat report.json | ||
testreport ={ | ||||
"test-bogus.t": { | ||||
"result": "skip" | ||||
timeless
|
r29199 | }, | ||
Laurent Charignon
|
r27927 | "test-failure.t": { | ||
"result": "skip" | ||||
} | ||||
} (no-eol) | ||||
timeless
|
r29173 | |||
Whitelist trumps blacklist | ||||
$ echo test-failure.t > whitelist | ||||
$ rt --blacklist=blacklist --whitelist=whitelist --json\ | ||||
> test-failure.t test-bogus.t | ||||
s | ||||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
@@ -1,5 +1,5 @@ | ||||
$ echo babar | ||||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
pad pad pad pad............................................................ | ||||
ERROR: test-failure.t output changed | ||||
! | ||||
Skipped test-bogus.t: Doesn't exist | ||||
Failed test-failure.t: output changed | ||||
# Ran 1 tests, 1 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
anuraggoel
|
r22391 | test for --json | ||
================== | ||||
Matt Mackall
|
r27395 | $ rt --json | ||
anuraggoel
|
r22391 | |||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
anuraggoel
|
r22391 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
anuraggoel
|
r22391 | |||
ERROR: test-failure.t output changed | ||||
!.s | ||||
timeless
|
r27564 | Skipped test-skip.t: missing feature: nail clipper | ||
anuraggoel
|
r22391 | Failed test-failure.t: output changed | ||
# Ran 2 tests, 1 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
$ cat report.json | ||||
testreport ={ | ||||
"test-failure.t": [\{] (re) | ||||
Augie Fackler
|
r23245 | "csys": "\s*[\d\.]{4,5}", ? (re) | ||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
Laurent Charignon
|
r27686 | "diff": "---.+\+\+\+.+", ? (re) | ||
Pierre-Yves David
|
r25097 | "end": "\s*[\d\.]{4,5}", ? (re) | ||
Augie Fackler
|
r23245 | "result": "failure", ? (re) | ||
Pierre-Yves David
|
r25097 | "start": "\s*[\d\.]{4,5}", ? (re) | ||
Augie Fackler
|
r23245 | "time": "\s*[\d\.]{4,5}" (re) | ||
}, ? (re) | ||||
anuraggoel
|
r22391 | "test-skip.t": { | ||
Augie Fackler
|
r23245 | "csys": "\s*[\d\.]{4,5}", ? (re) | ||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
Laurent Charignon
|
r27686 | "diff": "", ? (re) | ||
Pierre-Yves David
|
r25097 | "end": "\s*[\d\.]{4,5}", ? (re) | ||
Augie Fackler
|
r23245 | "result": "skip", ? (re) | ||
Pierre-Yves David
|
r25097 | "start": "\s*[\d\.]{4,5}", ? (re) | ||
Augie Fackler
|
r23245 | "time": "\s*[\d\.]{4,5}" (re) | ||
}, ? (re) | ||||
anuraggoel
|
r22391 | "test-success.t": [\{] (re) | ||
Augie Fackler
|
r23245 | "csys": "\s*[\d\.]{4,5}", ? (re) | ||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
Laurent Charignon
|
r27686 | "diff": "", ? (re) | ||
Pierre-Yves David
|
r25097 | "end": "\s*[\d\.]{4,5}", ? (re) | ||
Augie Fackler
|
r23245 | "result": "success", ? (re) | ||
Pierre-Yves David
|
r25097 | "start": "\s*[\d\.]{4,5}", ? (re) | ||
Augie Fackler
|
r23245 | "time": "\s*[\d\.]{4,5}" (re) | ||
anuraggoel
|
r22391 | } | ||
} (no-eol) | ||||
Pierre-Yves David
|
r22579 | |||
Pierre-Yves David
|
r24979 | Test that failed test accepted through interactive are properly reported: | ||
$ cp test-failure.t backup | ||||
Matt Mackall
|
r27395 | $ echo y | rt --json -i | ||
Pierre-Yves David
|
r24979 | |||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
Matt Harbison
|
r28316 | @@ -1,5 +1,5 @@ | ||
Pierre-Yves David
|
r24979 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
Matt Harbison
|
r28316 | pad pad pad pad............................................................ | ||
Pierre-Yves David
|
r24979 | Accept this change? [n] ..s | ||
timeless
|
r27564 | Skipped test-skip.t: missing feature: nail clipper | ||
Pierre-Yves David
|
r24979 | # Ran 2 tests, 1 skipped, 0 warned, 0 failed. | ||
$ cat report.json | ||||
testreport ={ | ||||
"test-failure.t": [\{] (re) | ||||
"csys": "\s*[\d\.]{4,5}", ? (re) | ||||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
Laurent Charignon
|
r27686 | "diff": "", ? (re) | ||
Pierre-Yves David
|
r25097 | "end": "\s*[\d\.]{4,5}", ? (re) | ||
Pierre-Yves David
|
r24979 | "result": "success", ? (re) | ||
Pierre-Yves David
|
r25097 | "start": "\s*[\d\.]{4,5}", ? (re) | ||
Pierre-Yves David
|
r24979 | "time": "\s*[\d\.]{4,5}" (re) | ||
}, ? (re) | ||||
"test-skip.t": { | ||||
"csys": "\s*[\d\.]{4,5}", ? (re) | ||||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
Laurent Charignon
|
r27686 | "diff": "", ? (re) | ||
Pierre-Yves David
|
r25097 | "end": "\s*[\d\.]{4,5}", ? (re) | ||
Pierre-Yves David
|
r24979 | "result": "skip", ? (re) | ||
Pierre-Yves David
|
r25097 | "start": "\s*[\d\.]{4,5}", ? (re) | ||
Pierre-Yves David
|
r24979 | "time": "\s*[\d\.]{4,5}" (re) | ||
}, ? (re) | ||||
"test-success.t": [\{] (re) | ||||
"csys": "\s*[\d\.]{4,5}", ? (re) | ||||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
Laurent Charignon
|
r27686 | "diff": "", ? (re) | ||
Pierre-Yves David
|
r25097 | "end": "\s*[\d\.]{4,5}", ? (re) | ||
Pierre-Yves David
|
r24979 | "result": "success", ? (re) | ||
Pierre-Yves David
|
r25097 | "start": "\s*[\d\.]{4,5}", ? (re) | ||
Pierre-Yves David
|
r24979 | "time": "\s*[\d\.]{4,5}" (re) | ||
} | ||||
} (no-eol) | ||||
$ mv backup test-failure.t | ||||
Gregory Szorc
|
r24811 | backslash on end of line with glob matching is handled properly | ||
$ cat > test-glob-backslash.t << EOF | ||||
> $ echo 'foo bar \\' | ||||
> foo * \ (glob) | ||||
> EOF | ||||
Matt Mackall
|
r27395 | $ rt test-glob-backslash.t | ||
Gregory Szorc
|
r24811 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
$ rm -f test-glob-backslash.t | ||||
FUJIWARA Katsunori
|
r25728 | Test reusability for third party tools | ||
====================================== | ||||
$ mkdir "$TESTTMP"/anothertests | ||||
$ cd "$TESTTMP"/anothertests | ||||
test that `run-tests.py` can execute hghave, even if it runs not in | ||||
Mercurial source tree. | ||||
$ cat > test-hghave.t <<EOF | ||||
> #require true | ||||
> $ echo foo | ||||
> foo | ||||
> EOF | ||||
timeless
|
r28616 | $ rt test-hghave.t | ||
FUJIWARA Katsunori
|
r25728 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
FUJIWARA Katsunori
|
r25729 | |||
test that RUNTESTDIR refers the directory, in which `run-tests.py` now | ||||
running is placed. | ||||
$ cat > test-runtestdir.t <<EOF | ||||
> - $TESTDIR, in which test-run-tests.t is placed | ||||
> - \$TESTDIR, in which test-runtestdir.t is placed (expanded at runtime) | ||||
> - \$RUNTESTDIR, in which run-tests.py is placed (expanded at runtime) | ||||
> | ||||
Matt Harbison
|
r27057 | > #if windows | ||
> $ test "\$TESTDIR" = "$TESTTMP\anothertests" | ||||
> #else | ||||
FUJIWARA Katsunori
|
r25729 | > $ test "\$TESTDIR" = "$TESTTMP"/anothertests | ||
Matt Harbison
|
r27057 | > #endif | ||
FUJIWARA Katsunori
|
r25729 | > $ test "\$RUNTESTDIR" = "$TESTDIR" | ||
> $ head -n 3 "\$RUNTESTDIR"/../contrib/check-code.py | ||||
> #!/usr/bin/env python | ||||
> # | ||||
> # check-code - a style and portability checker for Mercurial | ||||
> EOF | ||||
timeless
|
r28616 | $ rt test-runtestdir.t | ||
FUJIWARA Katsunori
|
r25729 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
FUJIWARA Katsunori
|
r25730 | |||
#if execbit | ||||
test that TESTDIR is referred in PATH | ||||
$ cat > custom-command.sh <<EOF | ||||
> #!/bin/sh | ||||
> echo "hello world" | ||||
> EOF | ||||
$ chmod +x custom-command.sh | ||||
$ cat > test-testdir-path.t <<EOF | ||||
> $ custom-command.sh | ||||
> hello world | ||||
> EOF | ||||
timeless
|
r28616 | $ rt test-testdir-path.t | ||
FUJIWARA Katsunori
|
r25730 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
#endif | ||||
Augie Fackler
|
r26109 | |||
test support for --allow-slow-tests | ||||
$ cat > test-very-slow-test.t <<EOF | ||||
> #require slow | ||||
> $ echo pass | ||||
> pass | ||||
> EOF | ||||
timeless
|
r28616 | $ rt test-very-slow-test.t | ||
Augie Fackler
|
r26109 | s | ||
timeless
|
r27564 | Skipped test-very-slow-test.t: missing feature: allow slow tests | ||
Augie Fackler
|
r26109 | # Ran 0 tests, 1 skipped, 0 warned, 0 failed. | ||
Matt Mackall
|
r27395 | $ rt $HGTEST_RUN_TESTS_PURE --allow-slow-tests test-very-slow-test.t | ||
Augie Fackler
|
r26109 | . | ||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
David R. MacIver
|
r28180 | |||
support for running a test outside the current directory | ||||
$ mkdir nonlocal | ||||
$ cat > nonlocal/test-is-not-here.t << EOF | ||||
> $ echo pass | ||||
> pass | ||||
> EOF | ||||
$ rt nonlocal/test-is-not-here.t | ||||
. | ||||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
Augie Fackler
|
r28596 | |||
support for bisecting failed tests automatically | ||||
$ hg init bisect | ||||
$ cd bisect | ||||
$ cat >> test-bisect.t <<EOF | ||||
> $ echo pass | ||||
> pass | ||||
> EOF | ||||
$ hg add test-bisect.t | ||||
$ hg ci -m 'good' | ||||
$ cat >> test-bisect.t <<EOF | ||||
> $ echo pass | ||||
> fail | ||||
> EOF | ||||
$ hg ci -m 'bad' | ||||
$ rt --known-good-rev=0 test-bisect.t | ||||
--- $TESTTMP/anothertests/bisect/test-bisect.t | ||||
+++ $TESTTMP/anothertests/bisect/test-bisect.t.err | ||||
@@ -1,4 +1,4 @@ | ||||
$ echo pass | ||||
pass | ||||
$ echo pass | ||||
- fail | ||||
+ pass | ||||
ERROR: test-bisect.t output changed | ||||
! | ||||
Failed test-bisect.t: output changed | ||||
test-bisect.t broken by 72cbf122d116 (bad) | ||||
# Ran 1 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||