Mercurial > hg
annotate tests/test-context.py @ 49228:b909dd35d9ab
deltas: add a debug-delta-find command to analyse delta search
See command documentation for details.
For some reason, pytype is confused by our usage of None/deltainfo variable, so
I had to quiet it.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 20 May 2022 14:27:46 +0200 |
parents | 6000f5b25c9b |
children | d7f3f745f20c |
rev | line source |
---|---|
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
1 import os |
36781
ffa3026d4196
cleanup: use stat_result[stat.ST_MTIME] instead of stat_result.st_mtime
Augie Fackler <augie@google.com>
parents:
35400
diff
changeset
|
2 import stat |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
3 import sys |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
4 from mercurial.node import hex |
28735
5edde05ff58e
py3: use absolute_import in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
27056
diff
changeset
|
5 from mercurial import ( |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
6 context, |
38588
1c93e0237a24
diffutil: move the module out of utils package
Yuya Nishihara <yuya@tcha.org>
parents:
38587
diff
changeset
|
7 diffutil, |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
8 encoding, |
28735
5edde05ff58e
py3: use absolute_import in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
27056
diff
changeset
|
9 hg, |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
10 scmutil, |
28775
67bff672ccc2
tests: alias ui as uimod in test-context
Yuya Nishihara <yuya@tcha.org>
parents:
28738
diff
changeset
|
11 ui as uimod, |
28735
5edde05ff58e
py3: use absolute_import in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
27056
diff
changeset
|
12 ) |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
13 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
14 print_ = print |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
15 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
16 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
17 def print(*args, **kwargs): |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
18 """print() wrapper that flushes stdout buffers to avoid py3 buffer issues |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
19 |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
20 We could also just write directly to sys.stdout.buffer the way the |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
21 ui object will, but this was easier for porting the test. |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
22 """ |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
23 print_(*args, **kwargs) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
24 sys.stdout.flush() |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
25 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
26 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
27 def printb(data, end=b'\n'): |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
28 out = getattr(sys.stdout, 'buffer', sys.stdout) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
29 out.write(data + end) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
30 out.flush() |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
31 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
32 |
42056
4950ae4d034f
tests: rename "u" to more usual "ui" in test-context.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
41397
diff
changeset
|
33 ui = uimod.ui.load() |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
34 |
42056
4950ae4d034f
tests: rename "u" to more usual "ui" in test-context.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
41397
diff
changeset
|
35 repo = hg.repository(ui, b'test1', create=1) |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
36 os.chdir('test1') |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
37 |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
38 # create 'foo' with fixed time stamp |
23060
4eaea93b3e5b
tests: open file in binary mode to use POSIX end-of-line style anywhere
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21837
diff
changeset
|
39 f = open('foo', 'wb') |
29187
aec5d8561be2
tests: mark test-context.py write as binary
timeless <timeless@mozdev.org>
parents:
28775
diff
changeset
|
40 f.write(b'foo\n') |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
41 f.close() |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
42 os.utime('foo', (1000, 1000)) |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
43 |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
44 # add+commit 'foo' |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
45 repo[None].add([b'foo']) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
46 repo.commit(text=b'commit1', date=b"0 0") |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
47 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
48 d = repo[None][b'foo'].date() |
27056
01489fa0bbbe
test-context: conditionalize the workingfilectx date printing for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
24180
diff
changeset
|
49 if os.name == 'nt': |
33751
3889cf955a62
hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents:
32518
diff
changeset
|
50 d = d[:2] |
3889cf955a62
hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents:
32518
diff
changeset
|
51 print("workingfilectx.date = (%d, %d)" % d) |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
52 |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
53 # test memctx with non-ASCII commit message |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
54 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
55 |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
56 def filectxfn(repo, memctx, path): |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
57 return context.memfilectx(repo, memctx, b"foo", b"") |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
58 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
59 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
60 ctx = context.memctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
61 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
62 [b'tip', None], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
63 encoding.tolocal(b"Gr\xc3\xbcezi!"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
64 [b"foo"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
65 filectxfn, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
66 ) |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
67 ctx.commit() |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
68 for enc in "ASCII", "Latin-1", "UTF-8": |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
69 encoding.encoding = enc |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
70 printb(b"%-8s: %s" % (enc.encode('ascii'), repo[b"tip"].description())) |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
71 |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
72 # test performing a status |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
73 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
74 |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
75 def getfilectx(repo, memctx, f): |
41397
0bd56c291359
cleanup: use p1() and p2() instead of parents()[0] and parents()[1]
Martin von Zweigbergk <martinvonz@google.com>
parents:
38658
diff
changeset
|
76 fctx = memctx.p1()[f] |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
77 data, flags = fctx.data(), fctx.flags() |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
78 if f == b'foo': |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
79 data += b'bar\n' |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
80 return context.memfilectx( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
81 repo, memctx, f, data, b'l' in flags, b'x' in flags |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
82 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
83 |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
84 |
37304
feced1629f48
tests: remove dependence on repo.changectx()
Martin von Zweigbergk <martinvonz@google.com>
parents:
36781
diff
changeset
|
85 ctxa = repo[0] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
86 ctxb = context.memctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
87 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
88 [ctxa.node(), None], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
89 b"test diff", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
90 [b"foo"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
91 getfilectx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
92 ctxa.user(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
93 ctxa.date(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
94 ) |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
95 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
96 print(ctxb.status(ctxa)) |
21837
61b333b982ea
test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com>
parents:
21836
diff
changeset
|
97 |
61b333b982ea
test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com>
parents:
21836
diff
changeset
|
98 # test performing a diff on a memctx |
38658
a75896bf5ccb
tests: add missing b prefix in test-context.py
Augie Fackler <augie@google.com>
parents:
38588
diff
changeset
|
99 diffopts = diffutil.diffallopts(repo.ui, {b'git': True}) |
38563
b9724978633e
tests: update test-context.py to use diffopts as diff argument
Boris Feld <boris.feld@octobus.net>
parents:
38519
diff
changeset
|
100 for d in ctxb.diff(ctxa, opts=diffopts): |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
101 printb(d, end=b'') |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
102 |
24180
d8e0c591781c
spelling: fixes from proofreading of spell checker issues
Mads Kiilerich <madski@unity3d.com>
parents:
23712
diff
changeset
|
103 # test safeness and correctness of "ctx.status()" |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
104 print('= checking context.status():') |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
105 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
106 # ancestor "wcctx ~ 2" |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
107 actx2 = repo[b'.'] |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
108 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
109 repo.wwrite(b'bar-m', b'bar-m\n', b'') |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
110 repo.wwrite(b'bar-r', b'bar-r\n', b'') |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
111 repo[None].add([b'bar-m', b'bar-r']) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
112 repo.commit(text=b'add bar-m, bar-r', date=b"0 0") |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
113 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
114 # ancestor "wcctx ~ 1" |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
115 actx1 = repo[b'.'] |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
116 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
117 repo.wwrite(b'bar-m', b'bar-m bar-m\n', b'') |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
118 repo.wwrite(b'bar-a', b'bar-a\n', b'') |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
119 repo[None].add([b'bar-a']) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
120 repo[None].forget([b'bar-r']) |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
121 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
122 # status at this point: |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
123 # M bar-m |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
124 # A bar-a |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
125 # R bar-r |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
126 # C foo |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
127 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
128 from mercurial import scmutil |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
129 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
130 print('== checking workingctx.status:') |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
131 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
132 wctx = repo[None] |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
133 print('wctx._status=%s' % (str(wctx._status))) |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
134 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
135 print('=== with "pattern match":') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
136 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
137 actx1.status(other=wctx, match=scmutil.matchfiles(repo, [b'bar-m', b'foo'])) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
138 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
139 print('wctx._status=%s' % (str(wctx._status))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
140 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
141 actx2.status(other=wctx, match=scmutil.matchfiles(repo, [b'bar-m', b'foo'])) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
142 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
143 print('wctx._status=%s' % (str(wctx._status))) |
23709
33e5431684c0
context: make unknown/ignored/clean of cached status empty for equivalence
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23700
diff
changeset
|
144 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
145 print('=== with "always match" and "listclean=True":') |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
146 print(actx1.status(other=wctx, listclean=True)) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
147 print('wctx._status=%s' % (str(wctx._status))) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
148 print(actx2.status(other=wctx, listclean=True)) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
149 print('wctx._status=%s' % (str(wctx._status))) |
23711
1e6fb8db666e
context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23709
diff
changeset
|
150 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
151 print("== checking workingcommitctx.status:") |
23711
1e6fb8db666e
context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23709
diff
changeset
|
152 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
153 wcctx = context.workingcommitctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
154 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
155 scmutil.status([b'bar-m'], [b'bar-a'], [], [], [], [], []), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
156 text=b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
157 date=b'0 0', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
158 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
159 print('wcctx._status=%s' % (str(wcctx._status))) |
23711
1e6fb8db666e
context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23709
diff
changeset
|
160 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
161 print('=== with "always match":') |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
162 print(actx1.status(other=wcctx)) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
163 print('wcctx._status=%s' % (str(wcctx._status))) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
164 print(actx2.status(other=wcctx)) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
165 print('wcctx._status=%s' % (str(wcctx._status))) |
23711
1e6fb8db666e
context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23709
diff
changeset
|
166 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
167 print('=== with "always match" and "listclean=True":') |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
168 print(actx1.status(other=wcctx, listclean=True)) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
169 print('wcctx._status=%s' % (str(wcctx._status))) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
170 print(actx2.status(other=wcctx, listclean=True)) |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
171 print('wcctx._status=%s' % (str(wcctx._status))) |
23712
bfce25d25c96
context: override _dirstatestatus in workingcommitctx for correct matching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23711
diff
changeset
|
172 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
173 print('=== with "pattern match":') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
174 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
175 actx1.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
176 other=wcctx, match=scmutil.matchfiles(repo, [b'bar-m', b'foo']) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
177 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
178 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
179 print('wcctx._status=%s' % (str(wcctx._status))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
180 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
181 actx2.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
182 other=wcctx, match=scmutil.matchfiles(repo, [b'bar-m', b'foo']) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
183 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
184 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
185 print('wcctx._status=%s' % (str(wcctx._status))) |
23712
bfce25d25c96
context: override _dirstatestatus in workingcommitctx for correct matching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23711
diff
changeset
|
186 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
187 print('=== with "pattern match" and "listclean=True":') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
188 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
189 actx1.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
190 other=wcctx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
191 match=scmutil.matchfiles(repo, [b'bar-r', b'foo']), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
192 listclean=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
193 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
194 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
195 print('wcctx._status=%s' % (str(wcctx._status))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
196 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
197 actx2.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
198 other=wcctx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
199 match=scmutil.matchfiles(repo, [b'bar-r', b'foo']), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
200 listclean=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
201 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
202 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
203 print('wcctx._status=%s' % (str(wcctx._status))) |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
204 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
205 os.chdir('..') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
206 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
207 # test manifestlog being changed |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
208 print('== commit with manifestlog invalidated') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
209 |
42056
4950ae4d034f
tests: rename "u" to more usual "ui" in test-context.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
41397
diff
changeset
|
210 repo = hg.repository(ui, b'test2', create=1) |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
211 os.chdir('test2') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
212 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
213 # make some commits |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
214 for i in [b'1', b'2', b'3']: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
215 with open(i, 'wb') as f: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
216 f.write(i) |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
217 status = scmutil.status([], [i], [], [], [], [], []) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
218 ctx = context.workingcommitctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
219 repo, status, text=i, user=b'test@test.com', date=(0, 0) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
220 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
221 ctx.p1().manifest() # side effect: cache manifestctx |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
222 n = repo.commitctx(ctx) |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
223 printb(b'commit %s: %s' % (i, hex(n))) |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
224 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
225 # touch 00manifest.i mtime so storecache could expire. |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
226 # repo.__dict__['manifestlog'] is deleted by transaction releasefn. |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
227 st = repo.svfs.stat(b'00manifest.i') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
228 repo.svfs.utime( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
229 b'00manifest.i', (st[stat.ST_MTIME] + 1, st[stat.ST_MTIME] + 1) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
230 ) |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
231 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
232 # read the file just committed |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
233 try: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
234 if repo[n][i].data() != i: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
235 print('data mismatch') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
236 except Exception as ex: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
237 print('cannot read data: %r' % ex) |
33706
01a1c4e66816
repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32518
diff
changeset
|
238 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
239 with repo.wlock(), repo.lock(), repo.transaction(b'test'): |
33706
01a1c4e66816
repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32518
diff
changeset
|
240 with open(b'4', 'wb') as f: |
01a1c4e66816
repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32518
diff
changeset
|
241 f.write(b'4') |
47718
03ef0c8fa7d5
test: use `set_tracked` in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43076
diff
changeset
|
242 repo.dirstate.set_tracked(b'4') |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
243 repo.commit(b'4') |
33706
01a1c4e66816
repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32518
diff
changeset
|
244 revsbefore = len(repo.changelog) |
01a1c4e66816
repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32518
diff
changeset
|
245 repo.invalidate(clearfilecache=True) |
01a1c4e66816
repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32518
diff
changeset
|
246 revsafter = len(repo.changelog) |
01a1c4e66816
repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32518
diff
changeset
|
247 if revsbefore != revsafter: |
01a1c4e66816
repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
32518
diff
changeset
|
248 print('changeset lost by repo.invalidate()') |