##// END OF EJS Templates
run-tests: mechanism to report exceptions during test execution...
run-tests: mechanism to report exceptions during test execution Sometimes when running tests you introduce a ton of exceptions. The most extreme example of this is running Mercurial with Python 3, which currently spews thousands of exceptions when running the test harness. This commit adds an opt-in feature to run-tests.py to aggregate exceptions encountered by `hg` when running tests. When --exceptions is used, the test harness enables the "logexceptions" extension in the test environment. This extension wraps the Mercurial function to handle exceptions and writes information about the exception to a random filename in a directory defined by the test harness via an environment variable. At the end of the test harness, these files are parsed, aggregated, and a list of all unique Mercurial frames triggering exceptions is printed in order of frequency. This feature is intended to aid Python 3 development. I've only really tested it on Python 3. There is no shortage of improvements that could be made. e.g. we could write a separate file containing the exception report - maybe even an HTML report. We also don't capture which tests demonstrate the exceptions, so there's no turnkey way to test whether a code change made an exception disappear. Perfect is the enemy of good. I think the current patch is useful enough to land. Whoever uses it can send patches to imprve its usefulness. Differential Revision: https://phab.mercurial-scm.org/D1477

File last commit:

r33340:dd050fc0 default
r35191:bd8875b6 default
Show More
test-addremove.t
96 lines | 1.7 KiB | text/troff | Tads3Lexer
Martin Geisler
tests: unify test-addremove
r11850 $ hg init rep
$ cd rep
$ mkdir dir
$ touch foo dir/bar
$ hg -v addremove
adding dir/bar
adding foo
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg -v commit -m "add 1"
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing files:
Martin Geisler
tests: unify test-addremove
r11850 dir/bar
foo
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing manifest
committing changelog
Martin Geisler
tests: remove unneeded -d flags...
r12156 committed changeset 0:6f7f953567a2
Martin Geisler
tests: unify test-addremove
r11850 $ cd dir/
Adrian Buehlmann
test-addremove: remove bits about con.xml...
r16874 $ touch ../foo_2 bar_2
Martin Geisler
tests: unify test-addremove
r11850 $ hg -v addremove
adding dir/bar_2
adding foo_2
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg -v commit -m "add 2"
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing files:
Martin Geisler
tests: unify test-addremove
r11850 dir/bar_2
foo_2
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing manifest
committing changelog
Adrian Buehlmann
test-addremove: remove bits about con.xml...
r16874 committed changeset 1:e65414bf35c5
Martin von Zweigbergk
addremove: add back forgotten files (BC)...
r23259 $ cd ..
$ hg forget foo
$ hg -v addremove
adding foo
Matt Harbison
addremove: warn when addremove fails to operate on a named path...
r23534 $ hg forget foo
Matt Harbison
test-addremove: conditionalize output instead of tests
r33340
Mads Kiilerich
spelling: fixes from proofreading of spell checker issues
r24180 $ hg -v addremove nonexistent
Matt Harbison
test-addremove: conditionalize output instead of tests
r33340 nonexistent: The system cannot find the file specified (windows !)
nonexistent: No such file or directory (no-windows !)
Matt Harbison
addremove: warn when addremove fails to operate on a named path...
r23534 [1]
Matt Harbison
test-addremove: conditionalize output instead of tests
r33340
Martin von Zweigbergk
addremove: add back forgotten files (BC)...
r23259 $ cd ..
Martin Geisler
tests: unify test-addremove
r11850
Martin von Zweigbergk
addremove: print relative paths when called with -I/-X (BC)...
r23427 $ hg init subdir
$ cd subdir
$ mkdir dir
$ cd dir
$ touch a.py
$ hg addremove 'glob:*.py'
adding a.py
$ hg forget a.py
$ hg addremove -I 'glob:*.py'
adding a.py
$ hg forget a.py
$ hg addremove
adding dir/a.py
$ cd ..
Martin Geisler
tests: unify test-addremove
r11850 $ hg init sim
$ cd sim
$ echo a > a
$ echo a >> a
$ echo a >> a
$ echo c > c
$ hg commit -Ama
adding a
adding c
$ mv a b
$ rm c
$ echo d > d
$ hg addremove -n -s 50 # issue 1696
removing a
adding b
removing c
adding d
recording removal of a as rename to b (100% similar)
$ hg addremove -s 50
removing a
adding b
removing c
adding d
recording removal of a as rename to b (100% similar)
$ hg commit -mb
Martin von Zweigbergk
addremove: add back forgotten files (BC)...
r23259 $ cp b c
$ hg forget b
$ hg addremove -s 50
adding b
adding c
Matt Harbison
commit: abort if --addremove is specified, but fails...
r23535
$ rm c
Matt Harbison
test-addremove: conditionalize output instead of tests
r33340
Mads Kiilerich
spelling: fixes from proofreading of spell checker issues
r24180 $ hg ci -A -m "c" nonexistent
Matt Harbison
test-addremove: conditionalize output instead of tests
r33340 nonexistent: The system cannot find the file specified (windows !)
nonexistent: No such file or directory (no-windows !)
Matt Harbison
commit: abort if --addremove is specified, but fails...
r23535 abort: failed to mark all new/missing files as added/removed
[255]
Matt Harbison
test-addremove: conditionalize output instead of tests
r33340
Matt Harbison
commit: abort if --addremove is specified, but fails...
r23535 $ hg st
! c
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912 $ cd ..