Mercurial > hg
annotate tests/heredoctest.py @ 42193:14589f1989e9 stable
context: check file exists before getting data from _wrappedctx
overlayworkingctx class is used to do in-memory merging. The data() function of
that class has logic to look for data() in the wrappedctx if the file data in
cache is empty and if the file is dirty. This assumes that if a file is dirty
and cache has empty data for it, it will exists in the _wrappedctx.
However this assumption can be False in case when we are merging a file which is
empty in destination. In these cases, the backup file 'foo.orig' created by our
internal merge algorithms will be empty, however it won't be present in
_wrappedctx. This case will lead us to error like the one this patch is fixing.
Let's only fallback to getting data from wrappedctx if cache has 'None' as data.
Differential Revision: https://phab.mercurial-scm.org/D6308
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Wed, 24 Apr 2019 19:42:43 +0300 |
parents | 55fd0fefbec4 |
children | 2372284d9457 |
rev | line source |
---|---|
29485
6a98f9408a50
py3: make files use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27297
diff
changeset
|
1 from __future__ import absolute_import, print_function |
27297
4179d054b3e9
tests: use absolute_import for heredoctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25032
diff
changeset
|
2 |
15434
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
3 import sys |
15247
3cd1605e9d8e
tests: remove temp doctest file when finished running it
Idan Kamara <idankk86@gmail.com>
parents:
15235
diff
changeset
|
4 |
40318
55fd0fefbec4
py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents:
29485
diff
changeset
|
5 def flush(): |
55fd0fefbec4
py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents:
29485
diff
changeset
|
6 sys.stdout.flush() |
55fd0fefbec4
py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents:
29485
diff
changeset
|
7 sys.stderr.flush() |
55fd0fefbec4
py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents:
29485
diff
changeset
|
8 |
15434
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
9 globalvars = {} |
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
10 lines = sys.stdin.readlines() |
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
11 while lines: |
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
12 l = lines.pop(0) |
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
13 if l.startswith('SALT'): |
25032
1db2127d2373
heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents:
22565
diff
changeset
|
14 print(l[:-1]) |
15434
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
15 elif l.startswith('>>> '): |
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
16 snippet = l[4:] |
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
17 while lines and lines[0].startswith('... '): |
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
18 l = lines.pop(0) |
22565
8d45a42b0c0f
heredoctest: do not append extra newline character to continuation line
Yuya Nishihara <yuya@tcha.org>
parents:
22564
diff
changeset
|
19 snippet += l[4:] |
15434
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
20 c = compile(snippet, '<heredoc>', 'single') |
5635a4017061
run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents:
15398
diff
changeset
|
21 try: |
40318
55fd0fefbec4
py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents:
29485
diff
changeset
|
22 flush() |
25032
1db2127d2373
heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents:
22565
diff
changeset
|
23 exec(c, globalvars) |
40318
55fd0fefbec4
py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents:
29485
diff
changeset
|
24 flush() |
25032
1db2127d2373
heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents:
22565
diff
changeset
|
25 except Exception as inst: |
40318
55fd0fefbec4
py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents:
29485
diff
changeset
|
26 flush() |
25032
1db2127d2373
heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents:
22565
diff
changeset
|
27 print(repr(inst)) |