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

r34662:eb586ed5 default
r35191:bd8875b6 default
Show More
test-bundle-type.t
228 lines | 5.0 KiB | text/troff | Tads3Lexer
/ tests / test-bundle-type.t
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925
$ cat << EOF >> $HGRCPATH
> [format]
> usegeneraldelta=yes
> EOF
Martin Geisler
tests: unify test-bundle-type
r11872 bundle w/o type option
$ hg init t1
$ hg init t2
$ cd t1
$ echo blablablablabla > file.txt
$ hg ci -Ama
adding file.txt
$ hg log | grep summary
summary: a
$ hg bundle ../b1 ../t2
searching for changes
1 changesets found
$ cd ../t2
$ hg pull ../b1
pulling from ../b1
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets c35a0f9217e6
Martin Geisler
tests: unify test-bundle-type
r11872 (run 'hg update' to get a working copy)
$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg log | grep summary
summary: a
$ cd ..
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473 Unknown compression type is rejected
$ hg init t3
$ cd t3
$ hg -q pull ../b1
$ hg bundle -a -t unknown out.hg
abort: unknown is not a recognized bundle specification
Gregory Szorc
commands: update help for "bundle"...
r31794 (see 'hg help bundlespec' for supported values for --type)
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473 [255]
$ hg bundle -a -t unknown-v2 out.hg
abort: unknown compression is not supported
Gregory Szorc
commands: update help for "bundle"...
r31794 (see 'hg help bundlespec' for supported values for --type)
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473 [255]
$ cd ..
Martin Geisler
tests: unify test-bundle-type
r11872 test bundle types
Gregory Szorc
util: implement zstd compression engine...
r30442 $ testbundle() {
> echo % test bundle type $1
> hg init t$1
Martin Geisler
tests: unify test-bundle-type
r11872 > cd t1
Gregory Szorc
util: implement zstd compression engine...
r30442 > hg bundle -t $1 ../b$1 ../t$1
> f -q -B6 -D ../b$1; echo
> cd ../t$1
> hg debugbundle ../b$1
> hg debugbundle --spec ../b$1
Pierre-Yves David
test-bundle-type: replace unbundle with debugbundle...
r26511 > echo
Martin Geisler
tests: unify test-bundle-type
r11872 > cd ..
Gregory Szorc
util: implement zstd compression engine...
r30442 > }
$ for t in "None" "bzip2" "gzip" "none-v2" "v2" "v1" "gzip-v1"; do
> testbundle $t
Martin Geisler
tests: unify test-bundle-type
r11872 > done
% test bundle type None
searching for changes
1 changesets found
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 HG20\x00\x00 (esc)
Stream params: {}
Augie Fackler
debugcommands: stabilize output of debugbundle by having a custom repr...
r34027 changegroup -- {nbchanges: 1, version: 02}
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 none-v2
Pierre-Yves David
test-bundle-type: replace unbundle with debugbundle...
r26511
Martin Geisler
tests: unify test-bundle-type
r11872 % test bundle type bzip2
searching for changes
1 changesets found
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 HG20\x00\x00 (esc)
Augie Fackler
debugcommands: stabilize output of debugbundle by having a custom repr...
r34027 Stream params: {Compression: BZ}
changegroup -- {nbchanges: 1, version: 02}
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 bzip2-v2
Pierre-Yves David
test-bundle-type: replace unbundle with debugbundle...
r26511
Martin Geisler
tests: unify test-bundle-type
r11872 % test bundle type gzip
searching for changes
1 changesets found
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 HG20\x00\x00 (esc)
Augie Fackler
debugcommands: stabilize output of debugbundle by having a custom repr...
r34027 Stream params: {Compression: GZ}
changegroup -- {nbchanges: 1, version: 02}
Pierre-Yves David
test: use generaldelta in 'test-bundle-type.t'...
r26925 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 gzip-v2
Pierre-Yves David
test-bundle-type: replace unbundle with debugbundle...
r26511
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531 % test bundle type none-v2
searching for changes
1 changesets found
HG20\x00\x00 (esc)
Stream params: {}
Augie Fackler
debugcommands: stabilize output of debugbundle by having a custom repr...
r34027 changegroup -- {nbchanges: 1, version: 02}
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 none-v2
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531
% test bundle type v2
searching for changes
1 changesets found
HG20\x00\x00 (esc)
Augie Fackler
debugcommands: stabilize output of debugbundle by having a custom repr...
r34027 Stream params: {Compression: BZ}
changegroup -- {nbchanges: 1, version: 02}
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 bzip2-v2
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531
% test bundle type v1
searching for changes
1 changesets found
HG10BZ
c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 bzip2-v1
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531
% test bundle type gzip-v1
searching for changes
1 changesets found
HG10GZ
c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
Gregory Szorc
commands: teach debugbundle to print bundle specification...
r27885 gzip-v1
Pierre-Yves David
bundle: extend the format of --type to support version and compression...
r26531
Gregory Szorc
commands: config option to control bundle compression level...
r30758
Compression level can be adjusted for bundle2 bundles
$ hg init test-complevel
$ cd test-complevel
$ cat > file0 << EOF
> this is a file
> with some text
> and some more text
> and other content
> EOF
$ cat > file1 << EOF
> this is another file
> with some other content
> and repeated, repeated, repeated, repeated content
> EOF
$ hg -q commit -A -m initial
$ hg bundle -a -t gzip-v2 gzip-v2.hg
1 changesets found
$ f --size gzip-v2.hg
gzip-v2.hg: size=427
$ hg --config experimental.bundlecomplevel=1 bundle -a -t gzip-v2 gzip-v2-level1.hg
1 changesets found
$ f --size gzip-v2-level1.hg
gzip-v2-level1.hg: size=435
$ cd ..
Gregory Szorc
util: implement zstd compression engine...
r30442 #if zstd
$ for t in "zstd" "zstd-v2"; do
> testbundle $t
> done
% test bundle type zstd
searching for changes
1 changesets found
HG20\x00\x00 (esc)
Augie Fackler
debugcommands: stabilize output of debugbundle by having a custom repr...
r34027 Stream params: {Compression: ZS}
changegroup -- {nbchanges: 1, version: 02}
Gregory Szorc
util: implement zstd compression engine...
r30442 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
zstd-v2
% test bundle type zstd-v2
searching for changes
1 changesets found
HG20\x00\x00 (esc)
Augie Fackler
debugcommands: stabilize output of debugbundle by having a custom repr...
r34027 Stream params: {Compression: ZS}
changegroup -- {nbchanges: 1, version: 02}
Gregory Szorc
util: implement zstd compression engine...
r30442 c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf
zstd-v2
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473
Explicit request for zstd on non-generaldelta repos
$ hg --config format.usegeneraldelta=false init nogd
$ hg -q -R nogd pull t1
$ hg -R nogd bundle -a -t zstd nogd-zstd
Gregory Szorc
exchange: use v2 bundles for modern compression engines (issue5506)...
r31474 1 changesets found
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473
zstd-v1 always fails
$ hg -R tzstd bundle -a -t zstd-v1 zstd-v1
abort: compression engine zstd is not supported on v1 bundles
Gregory Szorc
commands: update help for "bundle"...
r31794 (see 'hg help bundlespec' for supported values for --type)
Gregory Szorc
exchange: reject new compression engines for v1 bundles (issue5506)...
r31473 [255]
Gregory Szorc
util: implement zstd compression engine...
r30442 #else
zstd is a valid engine but isn't available
$ hg -R t1 bundle -a -t zstd irrelevant.hg
abort: compression engine zstd could not be loaded
[255]
#endif
Martin Geisler
tests: unify test-bundle-type
r11872
test garbage file
$ echo garbage > bgarbage
$ hg init tgarbage
$ cd tgarbage
$ hg pull ../bgarbage
Thomas Arendsen Hein
pull: print "pulling from foo" before accessing the other repo...
r24138 pulling from ../bgarbage
Matt Mackall
bundlerepo: remove duplication of bundle decompressors
r12044 abort: ../bgarbage: not a Mercurial bundle
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-bundle-type
r11872 $ cd ..
test invalid bundle type
$ cd t1
$ hg bundle -a -t garbage ../bgarbage
Gregory Szorc
exchange: refactor bundle specification parsing...
r26640 abort: garbage is not a recognized bundle specification
Gregory Szorc
commands: update help for "bundle"...
r31794 (see 'hg help bundlespec' for supported values for --type)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-bundle-type
r11872 $ cd ..