Mercurial > hg
annotate tests/test-cat.t @ 35190:bd8875b6473c
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
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 20 Nov 2017 23:02:32 -0800 |
parents | 407ec7f3ff02 |
children | 4441705b7111 |
rev | line source |
---|---|
11874 | 1 $ hg init |
2 $ echo 0 > a | |
3 $ echo 0 > b | |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
12070
diff
changeset
|
4 $ hg ci -A -m m |
11874 | 5 adding a |
6 adding b | |
7 $ hg rm a | |
8 $ hg cat a | |
9 0 | |
10 $ hg cat --decode a # more tests in test-encode | |
11 0 | |
12 $ echo 1 > b | |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
12070
diff
changeset
|
13 $ hg ci -m m |
11874 | 14 $ echo 2 > b |
15 $ hg cat -r 0 a | |
16 0 | |
17 $ hg cat -r 0 b | |
18 0 | |
19 $ hg cat -r 1 a | |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
12070
diff
changeset
|
20 a: no such file in rev 7040230c159c |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12156
diff
changeset
|
21 [1] |
11874 | 22 $ hg cat -r 1 b |
23 1 | |
17371
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
24 |
24381
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
25 Test multiple files |
17371
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
26 |
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
27 $ echo 3 > c |
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
28 $ hg ci -Am addmore c |
24381
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
29 $ hg cat b c |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
30 1 |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
31 3 |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
32 $ hg cat . |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
33 1 |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
34 3 |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
35 $ hg cat . c |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
36 1 |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
37 3 |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
38 |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
39 Test fileset |
82b82168d045
context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents:
21078
diff
changeset
|
40 |
17371
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
41 $ hg cat 'set:not(b) or a' |
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
42 3 |
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
43 $ hg cat 'set:c or b' |
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
44 1 |
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
45 3 |
1310489eb5d6
fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents:
12316
diff
changeset
|
46 |
21078
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
47 $ mkdir tmp |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
48 $ hg cat --output tmp/HH_%H c |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
49 $ hg cat --output tmp/RR_%R c |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
50 $ hg cat --output tmp/h_%h c |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
51 $ hg cat --output tmp/r_%r c |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
52 $ hg cat --output tmp/%s_s c |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
53 $ hg cat --output tmp/%d%%_d c |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
54 $ hg cat --output tmp/%p_p c |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
55 $ hg log -r . --template "{rev}: {node|short}\n" |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
56 2: 45116003780e |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
57 $ find tmp -type f | sort |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
58 tmp/.%_d |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
59 tmp/HH_45116003780e3678b333fb2c99fa7d559c8457e9 |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
60 tmp/RR_2 |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
61 tmp/c_p |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
62 tmp/c_s |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
63 tmp/h_45116003780e |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
64 tmp/r_2 |
50107a4b32e7
cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents:
17371
diff
changeset
|
65 |
32584
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
66 Test template output |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
67 |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
68 $ hg --cwd tmp cat ../b ../c -T '== {path} ({abspath}) ==\n{data}' |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
69 == ../b (b) == (glob) |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
70 1 |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
71 == ../c (c) == (glob) |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
72 3 |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
73 |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
74 $ hg cat b c -Tjson --output - |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
75 [ |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
76 { |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
77 "abspath": "b", |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
78 "data": "1\n", |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
79 "path": "b" |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
80 }, |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
81 { |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
82 "abspath": "c", |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
83 "data": "3\n", |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
84 "path": "c" |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
85 } |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
86 ] |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
87 |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
88 $ hg cat b c -Tjson --output 'tmp/%p.json' |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
89 $ cat tmp/b.json |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
90 [ |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
91 { |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
92 "abspath": "b", |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
93 "data": "1\n", |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
94 "path": "b" |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
95 } |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
96 ] |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
97 $ cat tmp/c.json |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
98 [ |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
99 { |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
100 "abspath": "c", |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
101 "data": "3\n", |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
102 "path": "c" |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
103 } |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
104 ] |
746e12a767b3
cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
105 |
24720
c560d8c68791
cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents:
24381
diff
changeset
|
106 Test working directory |
c560d8c68791
cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents:
24381
diff
changeset
|
107 |
c560d8c68791
cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents:
24381
diff
changeset
|
108 $ echo b-wdir > b |
c560d8c68791
cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents:
24381
diff
changeset
|
109 $ hg cat -r 'wdir()' b |
c560d8c68791
cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents:
24381
diff
changeset
|
110 b-wdir |
30833
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
111 |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
112 Environment variables are not visible by default |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
113 |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
114 $ PATTERN='t4' hg log -r '.' -T "{ifcontains('PATTERN', envvars, 'yes', 'no')}\n" |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
115 no |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
116 |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
117 Environment variable visibility can be explicit |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
118 |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
119 $ PATTERN='t4' hg log -r '.' -T "{envvars % '{key} -> {value}\n'}" \ |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
120 > --config "experimental.exportableenviron=PATTERN" |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
24720
diff
changeset
|
121 PATTERN -> t4 |
35006
8154119ed236
cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents:
32584
diff
changeset
|
122 |
8154119ed236
cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents:
32584
diff
changeset
|
123 Test behavior of output when directory structure does not already exist |
8154119ed236
cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents:
32584
diff
changeset
|
124 |
8154119ed236
cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents:
32584
diff
changeset
|
125 $ mkdir foo |
8154119ed236
cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents:
32584
diff
changeset
|
126 $ echo a > foo/a |
8154119ed236
cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents:
32584
diff
changeset
|
127 $ hg add foo/a |
8154119ed236
cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents:
32584
diff
changeset
|
128 $ hg commit -qm "add foo/a" |
8154119ed236
cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents:
32584
diff
changeset
|
129 $ hg cat --output "output/%p" foo/a |
35007
407ec7f3ff02
cmdutil: create dirs for templated cat file output
Ryan McElroy <rmcelroy@fb.com>
parents:
35006
diff
changeset
|
130 $ cat output/foo/a |
407ec7f3ff02
cmdutil: create dirs for templated cat file output
Ryan McElroy <rmcelroy@fb.com>
parents:
35006
diff
changeset
|
131 a |