test-run-tests.t
492 lines
| 13.0 KiB
| text/troff
|
Tads3Lexer
/ tests / test-run-tests.t
|
r21732 | This file tests the behavior of run-tests.py itself. | ||
Smoke test | ||||
============ | ||||
|
r23935 | $ $TESTDIR/run-tests.py $HGTEST_RUN_TESTS_PURE | ||
|
r21732 | |||
# Ran 0 tests, 0 skipped, 0 warned, 0 failed. | ||||
|
r21734 | |||
a succesful test | ||||
======================= | ||||
$ cat > test-success.t << EOF | ||||
> $ echo babar | ||||
> babar | ||||
|
r21995 | > $ echo xyzzy | ||
> xyzzy | ||||
|
r21734 | > EOF | ||
$ $TESTDIR/run-tests.py --with-hg=`which hg` | ||||
. | ||||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
|
r21738 | |||
failing test | ||||
================== | ||||
$ cat > test-failure.t << EOF | ||||
> $ echo babar | ||||
> rataxes | ||||
|
r21995 | > This is a noop statement so that | ||
> this test is still more bytes than success. | ||||
|
r21738 | > EOF | ||
|
r24500 | >>> fh = open('test-failure-unicode.t', 'wb') | ||
>>> fh.write(u' $ echo babar\u03b1\n'.encode('utf-8')) | ||||
>>> fh.write(u' l\u03b5\u03b5t\n'.encode('utf-8')) | ||||
|
r21738 | $ $TESTDIR/run-tests.py --with-hg=`which hg` | ||
|
r23348 | --- $TESTTMP/test-failure.t | ||
+++ $TESTTMP/test-failure.t.err | ||||
|
r21995 | @@ -1,4 +1,4 @@ | ||
|
r21738 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
|
r21738 | |||
ERROR: test-failure.t output changed | ||||
!. | ||||
|
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 | ||||
! | ||||
|
r21738 | Failed test-failure.t: output changed | ||
|
r24500 | Failed test-failure-unicode.t: output changed | ||
# Ran 3 tests, 0 skipped, 0 warned, 2 failed. | ||||
|
r21738 | python hash seed: * (glob) | ||
[1] | ||||
|
r24500 | |||
|
r22044 | test --xunit support | ||
$ $TESTDIR/run-tests.py --with-hg=`which hg` --xunit=xunit.xml | ||||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
@@ -1,4 +1,4 @@ | ||||
$ echo babar | ||||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
ERROR: test-failure.t output changed | ||||
!. | ||||
|
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 | ||||
! | ||||
|
r22044 | Failed test-failure.t: output changed | ||
|
r24500 | Failed test-failure-unicode.t: output changed | ||
# Ran 3 tests, 0 skipped, 0 warned, 2 failed. | ||||
|
r22044 | python hash seed: * (glob) | ||
[1] | ||||
$ cat xunit.xml | ||||
<?xml version="1.0" encoding="utf-8"?> | ||||
|
r24500 | <testsuite errors="0" failures="2" name="run-tests" skipped="0" tests="3"> | ||
|
r22044 | <testcase name="test-success.t" time="*"/> (glob) | ||
|
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> | ||||
|
r22044 | <testcase name="test-failure.t" time="*"> (glob) | ||
<![CDATA[--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
@@ -1,4 +1,4 @@ | ||||
$ echo babar | ||||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
]]> </testcase> | ||||
</testsuite> | ||||
|
r21741 | |||
|
r24500 | $ rm test-failure-unicode.t | ||
|
r21741 | test for --retest | ||
==================== | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` --retest | ||||
|
r23348 | --- $TESTTMP/test-failure.t | ||
+++ $TESTTMP/test-failure.t.err | ||||
|
r21995 | @@ -1,4 +1,4 @@ | ||
|
r21741 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
|
r21741 | |||
ERROR: test-failure.t output changed | ||||
! | ||||
Failed test-failure.t: output changed | ||||
|
r21997 | # Ran 2 tests, 1 skipped, 0 warned, 1 failed. | ||
|
r21741 | python hash seed: * (glob) | ||
[1] | ||||
|
r21742 | |||
Selecting Tests To Run | ||||
====================== | ||||
successful | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` test-success.t | ||||
. | ||||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
|
r21997 | success w/ keyword | ||
$ $TESTDIR/run-tests.py --with-hg=`which hg` -k xyzzy | ||||
|
r22107 | . | ||
# Ran 2 tests, 1 skipped, 0 warned, 0 failed. | ||||
|
r21997 | |||
|
r21742 | failed | ||
$ $TESTDIR/run-tests.py --with-hg=`which hg` test-failure.t | ||||
|
r23348 | --- $TESTTMP/test-failure.t | ||
+++ $TESTTMP/test-failure.t.err | ||||
|
r21995 | @@ -1,4 +1,4 @@ | ||
|
r21742 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
|
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] | ||||
|
r21743 | |||
|
r21997 | failure w/ keyword | ||
$ $TESTDIR/run-tests.py --with-hg=`which hg` -k rataxes | ||||
|
r22107 | |||
|
r21997 | --- $TESTTMP/test-failure.t | ||
+++ $TESTTMP/test-failure.t.err | ||||
@@ -1,4 +1,4 @@ | ||||
$ echo babar | ||||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
ERROR: test-failure.t output changed | ||||
! | ||||
Failed test-failure.t: output changed | ||||
|
r22107 | # Ran 2 tests, 1 skipped, 0 warned, 1 failed. | ||
|
r21997 | python hash seed: * (glob) | ||
[1] | ||||
|
r22840 | Verify that when a process fails to start we show a useful message | ||
================================================================== | ||||
NOTE: there is currently a bug where this shows "2 failed" even though | ||||
it's actually the same test being reported for failure twice. | ||||
$ cat > test-serve-fail.t <<EOF | ||||
> $ echo 'abort: child process failed to start blah' | ||||
> EOF | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` test-serve-fail.t | ||||
ERROR: test-serve-fail.t output changed | ||||
! | ||||
ERROR: test-serve-fail.t output changed | ||||
! | ||||
Failed test-serve-fail.t: server failed to start (HGPORT=*) (glob) | ||||
Failed test-serve-fail.t: output changed | ||||
# Ran 1 tests, 0 skipped, 0 warned, 2 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
$ rm test-serve-fail.t | ||||
|
r21743 | Running In Debug Mode | ||
====================== | ||||
|
r22134 | $ $TESTDIR/run-tests.py --with-hg=`which hg` --debug 2>&1 | grep -v pwd | ||
|
r23676 | + echo *SALT* 0 0 (glob) | ||
*SALT* 0 0 (glob) | ||||
|
r21743 | + echo babar | ||
babar | ||||
|
r23676 | + echo *SALT* 4 0 (glob) | ||
*SALT* 4 0 (glob) | ||||
.+ echo *SALT* 0 0 (glob) | ||||
*SALT* 0 0 (glob) | ||||
|
r21743 | + echo babar | ||
babar | ||||
|
r23676 | + echo *SALT* 2 0 (glob) | ||
*SALT* 2 0 (glob) | ||||
|
r21995 | + echo xyzzy | ||
xyzzy | ||||
|
r23676 | + echo *SALT* 4 0 (glob) | ||
*SALT* 4 0 (glob) | ||||
|
r21743 | . | ||
# Ran 2 tests, 0 skipped, 0 warned, 0 failed. | ||||
|
r21744 | |||
Parallel runs | ||||
============== | ||||
(duplicate the failing test to get predictable output) | ||||
$ cp test-failure.t test-failure-copy.t | ||||
|
r23107 | $ $TESTDIR/run-tests.py --with-hg=`which hg` --jobs 2 test-failure*.t -n | ||
!! | ||||
|
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] | ||||
|
r22838 | failures in parallel with --first should only print one failure | ||
>>> f = open('test-nothing.t', 'w') | ||||
>>> f.write('foo\n' * 1024) | ||||
>>> f.write(' $ sleep 1') | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` --jobs 2 --first | ||||
--- $TESTTMP/test-failure*.t (glob) | ||||
+++ $TESTTMP/test-failure*.t.err (glob) | ||||
@@ -1,4 +1,4 @@ | ||||
$ echo babar | ||||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
Failed test-failure*.t: output changed (glob) | ||||
# Ran 2 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
|
r21744 | (delete the duplicated test file) | ||
|
r22838 | $ rm test-failure-copy.t test-nothing.t | ||
|
r21744 | |||
|
r21755 | |||
Interactive run | ||||
=============== | ||||
(backup the failing test) | ||||
$ cp test-failure.t backup | ||||
Refuse the fix | ||||
$ echo 'n' | $TESTDIR/run-tests.py --with-hg=`which hg` -i | ||||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
|
r21995 | @@ -1,4 +1,4 @@ | ||
|
r21755 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
|
r21763 | Accept this change? [n] | ||
|
r21755 | ERROR: test-failure.t output changed | ||
|
r21763 | !. | ||
|
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 | ||||
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
|
r21755 | |||
|
r22361 | Interactive with custom view | ||
$ echo 'n' | $TESTDIR/run-tests.py --with-hg=`which hg` -i --view echo | ||||
|
r23348 | $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err (glob) | ||
|
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] | ||||
|
r22108 | View the fix | ||
$ echo 'y' | $TESTDIR/run-tests.py --with-hg=`which hg` --view echo | ||||
|
r23348 | $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err (glob) | ||
|
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] | ||||
|
r21755 | |||
Accept the fix | ||||
|
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 | ||||
$ echo 'y' | $TESTDIR/run-tests.py --with-hg=`which hg` -i 2>&1 | \ | ||||
> sed -e 's,(glob)$,&<,g' | ||||
|
r21755 | |||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
|
r23728 | @@ -1,9 +1,9 @@ | ||
|
r21755 | $ echo babar | ||
- rataxes | ||||
+ babar | ||||
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
|
r23728 | $ echo 'saved backup bundle to $TESTTMP/foo.hg' | ||
- 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' | ||||
|
r21755 | Accept this change? [n] .. | ||
# Ran 2 tests, 0 skipped, 0 warned, 0 failed. | ||||
|
r23728 | $ sed -e 's,(glob)$,&<,g' test-failure.t | ||
|
r21755 | $ echo babar | ||
babar | ||||
|
r21995 | This is a noop statement so that | ||
this test is still more bytes than success. | ||||
|
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)< | ||||
|
r21755 | |||
(reinstall) | ||||
$ mv backup test-failure.t | ||||
|
r21756 | |||
No Diff | ||||
=============== | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` --nodiff | ||||
!. | ||||
Failed test-failure.t: output changed | ||||
# Ran 2 tests, 0 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
|
r21977 | |||
test for --time | ||||
================== | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` test-success.t --time | ||||
. | ||||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
# Producing time report | ||||
cuser csys real Test | ||||
\s*[\d\.]{5} \s*[\d\.]{5} \s*[\d\.]{5} test-success.t (re) | ||||
test for --time with --job enabled | ||||
==================================== | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` test-success.t --time --jobs 2 | ||||
. | ||||
# Ran 1 tests, 0 skipped, 0 warned, 0 failed. | ||||
# Producing time report | ||||
cuser csys real Test | ||||
\s*[\d\.]{5} \s*[\d\.]{5} \s*[\d\.]{5} test-success.t (re) | ||||
|
r21996 | |||
Skips | ||||
================ | ||||
$ cat > test-skip.t <<EOF | ||||
> $ echo xyzzy | ||||
|
r22045 | > #require false | ||
|
r21996 | > EOF | ||
$ $TESTDIR/run-tests.py --with-hg=`which hg` --nodiff | ||||
!.s | ||||
|
r22292 | Skipped test-skip.t: skipped | ||
|
r21996 | Failed test-failure.t: output changed | ||
# Ran 2 tests, 1 skipped, 0 warned, 1 failed. | ||||
python hash seed: * (glob) | ||||
[1] | ||||
|
r21997 | $ $TESTDIR/run-tests.py --with-hg=`which hg` --keyword xyzzy | ||
|
r22107 | .s | ||
|
r22292 | Skipped test-skip.t: skipped | ||
|
r22107 | # Ran 2 tests, 2 skipped, 0 warned, 0 failed. | ||
|
r21997 | |||
|
r22044 | Skips with xml | ||
$ $TESTDIR/run-tests.py --with-hg=`which hg` --keyword xyzzy \ | ||||
> --xunit=xunit.xml | ||||
|
r22107 | .s | ||
|
r22292 | Skipped test-skip.t: skipped | ||
|
r22107 | # Ran 2 tests, 2 skipped, 0 warned, 0 failed. | ||
|
r22044 | $ cat xunit.xml | ||
<?xml version="1.0" encoding="utf-8"?> | ||||
|
r22107 | <testsuite errors="0" failures="0" name="run-tests" skipped="2" tests="2"> | ||
|
r22044 | <testcase name="test-success.t" time="*"/> (glob) | ||
</testsuite> | ||||
|
r21997 | Missing skips or blacklisted skips don't count as executed: | ||
$ echo test-failure.t > blacklist | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` --blacklist=blacklist \ | ||||
> 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. | ||||
|
r22579 | #if json | ||
|
r22391 | test for --json | ||
================== | ||||
$ $TESTDIR/run-tests.py --with-hg=`which hg` --json | ||||
--- $TESTTMP/test-failure.t | ||||
+++ $TESTTMP/test-failure.t.err | ||||
@@ -1,4 +1,4 @@ | ||||
$ echo babar | ||||
- rataxes | ||||
+ babar | ||||
This is a noop statement so that | ||||
this test is still more bytes than success. | ||||
ERROR: test-failure.t output changed | ||||
!.s | ||||
Skipped test-skip.t: skipped | ||||
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) | ||||
|
r23245 | "csys": "\s*[\d\.]{4,5}", ? (re) | ||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
"result": "failure", ? (re) | ||||
"time": "\s*[\d\.]{4,5}" (re) | ||||
}, ? (re) | ||||
|
r22391 | "test-skip.t": { | ||
|
r23245 | "csys": "\s*[\d\.]{4,5}", ? (re) | ||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
"result": "skip", ? (re) | ||||
"time": "\s*[\d\.]{4,5}" (re) | ||||
}, ? (re) | ||||
|
r22391 | "test-success.t": [\{] (re) | ||
|
r23245 | "csys": "\s*[\d\.]{4,5}", ? (re) | ||
"cuser": "\s*[\d\.]{4,5}", ? (re) | ||||
"result": "success", ? (re) | ||||
"time": "\s*[\d\.]{4,5}" (re) | ||||
|
r22391 | } | ||
} (no-eol) | ||||
|
r22579 | |||
#endif | ||||