##// 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:

r33954:794f7bb7 default
r35191:bd8875b6 default
Show More
test-convert-clonebranches.t
89 lines | 2.0 KiB | text/troff | Tads3Lexer
/ tests / test-convert-clonebranches.t
Matt Mackall
tests: unify test-convert-clonebranches
r12518
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
> [extensions]
> convert =
> [convert]
> hg.tagsbranch = 0
> EOF
Matt Mackall
tests: unify test-convert-clonebranches
r12518 $ hg init source
$ cd source
$ echo a > a
$ hg ci -qAm adda
Add a merge with one parent in the same branch
$ echo a >> a
$ hg ci -qAm changea
$ hg up -qC 0
$ hg branch branch0
marked working directory as branch branch0
Matt Mackall
branch: warn on branching
r15615 (branches are permanent and global, did you want a bookmark?)
Matt Mackall
tests: unify test-convert-clonebranches
r12518 $ echo b > b
$ hg ci -qAm addb
$ hg up -qC
$ hg merge default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -qm mergeab
$ hg tag -ql mergeab
$ cd ..
Miss perl... sometimes
$ cat > filter.py <<EOF
Augie Fackler
tests: update test-convert-clonebranches to pass our import checker
r33954 > from __future__ import absolute_import
> import re
> import sys
Matt Mackall
tests: unify test-convert-clonebranches
r12518 >
> r = re.compile(r'^(?:\d+|pulling from)')
> sys.stdout.writelines([l for l in sys.stdin if r.search(l)])
> EOF
convert
$ hg convert -v --config convert.hg.clonebranches=1 source dest |
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 > $PYTHON filter.py
Matt Mackall
tests: unify test-convert-clonebranches
r12518 3 adda
2 changea
1 addb
pulling from default into branch0
1 changesets found
0 mergeab
pulling from default into branch0
1 changesets found
Add a merge with both parents and child in different branches
$ cd source
$ hg branch branch1
marked working directory as branch branch1
$ echo a > file1
$ hg ci -qAm c1
$ hg up -qC mergeab
$ hg branch branch2
marked working directory as branch branch2
$ echo a > file2
$ hg ci -qAm c2
$ hg merge branch1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg branch branch3
marked working directory as branch branch3
$ hg ci -qAm c3
$ cd ..
incremental conversion
$ hg convert -v --config convert.hg.clonebranches=1 source dest |
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 > $PYTHON filter.py
Matt Mackall
tests: unify test-convert-clonebranches
r12518 2 c1
pulling from branch0 into branch1
4 changesets found
1 c2
pulling from branch0 into branch2
4 changesets found
0 c3
Mads Kiilerich
convert: process missing branches in sorted order
r18373 pulling from branch1 into branch3
Matt Mackall
tests: unify test-convert-clonebranches
r12518 5 changesets found
Mads Kiilerich
convert: process missing branches in sorted order
r18373 pulling from branch2 into branch3
Matt Mackall
tests: unify test-convert-clonebranches
r12518 1 changesets found