Mercurial > hg
annotate tests/test-context.py @ 47592:0f5c203eb5ab
dirstate: add a function to update tracking status while "moving" parents
The `scmutil.dirstateparent` is moving the dirstate parent without touching the
working copy. It is used by history-rewriting operations like amending of
folding.
The function was directly doing the "low level" computation and dirstate
change. All that logic belong to the dirstate and should be moved there.
For this purpose we introduce a new function that does just that and use it.
Differential Revision: https://phab.mercurial-scm.org/D11012
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 10 Jul 2021 23:31:51 +0200 |
parents | 2372284d9457 |
children | 03ef0c8fa7d5 |
rev | line source |
---|---|
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
1 from __future__ import absolute_import, print_function |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
2 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
|
3 import stat |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
4 import sys |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
5 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
|
6 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
|
7 context, |
38588
1c93e0237a24
diffutil: move the module out of utils package
Yuya Nishihara <yuya@tcha.org>
parents:
38587
diff
changeset
|
8 diffutil, |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
9 encoding, |
28735
5edde05ff58e
py3: use absolute_import in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
27056
diff
changeset
|
10 hg, |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
11 scmutil, |
28775
67bff672ccc2
tests: alias ui as uimod in test-context
Yuya Nishihara <yuya@tcha.org>
parents:
28738
diff
changeset
|
12 ui as uimod, |
28735
5edde05ff58e
py3: use absolute_import in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
27056
diff
changeset
|
13 ) |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
14 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
15 print_ = print |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
16 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
17 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
18 def print(*args, **kwargs): |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
19 """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
|
20 |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
21 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
|
22 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
|
23 """ |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
24 print_(*args, **kwargs) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
25 sys.stdout.flush() |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
26 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
27 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
28 def printb(data, end=b'\n'): |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
29 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
|
30 out.write(data + end) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
31 out.flush() |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
32 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
33 |
42056
4950ae4d034f
tests: rename "u" to more usual "ui" in test-context.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
41397
diff
changeset
|
34 ui = uimod.ui.load() |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
35 |
42056
4950ae4d034f
tests: rename "u" to more usual "ui" in test-context.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
41397
diff
changeset
|
36 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
|
37 os.chdir('test1') |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
38 |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
39 # 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
|
40 f = open('foo', 'wb') |
29187
aec5d8561be2
tests: mark test-context.py write as binary
timeless <timeless@mozdev.org>
parents:
28775
diff
changeset
|
41 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
|
42 f.close() |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
43 os.utime('foo', (1000, 1000)) |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
44 |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
45 # add+commit 'foo' |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
46 repo[None].add([b'foo']) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
47 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
|
48 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
49 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
|
50 if os.name == 'nt': |
33751
3889cf955a62
hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents:
32518
diff
changeset
|
51 d = d[:2] |
3889cf955a62
hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents:
32518
diff
changeset
|
52 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
|
53 |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
54 # 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
|
55 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
56 |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
57 def filectxfn(repo, memctx, path): |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
58 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
|
59 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
60 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
61 ctx = context.memctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
62 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
63 [b'tip', None], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
64 encoding.tolocal(b"Gr\xc3\xbcezi!"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
65 [b"foo"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
66 filectxfn, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
67 ) |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
68 ctx.commit() |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
69 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
|
70 encoding.encoding = enc |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
71 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
|
72 |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
73 # test performing a status |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
74 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
75 |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
76 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
|
77 fctx = memctx.p1()[f] |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
78 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
|
79 if f == b'foo': |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
80 data += b'bar\n' |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
81 return context.memfilectx( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
82 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
|
83 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
84 |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
85 |
37304
feced1629f48
tests: remove dependence on repo.changectx()
Martin von Zweigbergk <martinvonz@google.com>
parents:
36781
diff
changeset
|
86 ctxa = repo[0] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
87 ctxb = context.memctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
88 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
89 [ctxa.node(), None], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
90 b"test diff", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
91 [b"foo"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
92 getfilectx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
93 ctxa.user(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
94 ctxa.date(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
95 ) |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
96 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
97 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
|
98 |
61b333b982ea
test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com>
parents:
21836
diff
changeset
|
99 # 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
|
100 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
|
101 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
|
102 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
|
103 |
24180
d8e0c591781c
spelling: fixes from proofreading of spell checker issues
Mads Kiilerich <madski@unity3d.com>
parents:
23712
diff
changeset
|
104 # 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
|
105 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
|
106 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
107 # ancestor "wcctx ~ 2" |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
108 actx2 = repo[b'.'] |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
109 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
110 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
|
111 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
|
112 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
|
113 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
|
114 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
115 # ancestor "wcctx ~ 1" |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
116 actx1 = repo[b'.'] |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
117 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
118 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
|
119 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
|
120 repo[None].add([b'bar-a']) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
121 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
|
122 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
123 # status at this point: |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
124 # M bar-m |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
125 # A bar-a |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
126 # R bar-r |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
127 # C foo |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
128 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
129 from mercurial import scmutil |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
130 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
131 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
|
132 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
133 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
|
134 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
|
135 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
136 print('=== with "pattern match":') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
137 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
138 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
|
139 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
140 print('wctx._status=%s' % (str(wctx._status))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
141 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
142 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
|
143 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
144 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
|
145 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
146 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
|
147 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
|
148 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
|
149 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
|
150 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
|
151 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
152 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
|
153 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
154 wcctx = context.workingcommitctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
155 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
156 scmutil.status([b'bar-m'], [b'bar-a'], [], [], [], [], []), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
157 text=b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
158 date=b'0 0', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
159 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
160 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
|
161 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
162 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
|
163 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
|
164 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
|
165 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
|
166 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
|
167 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
168 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
|
169 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
|
170 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
|
171 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
|
172 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
|
173 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
174 print('=== with "pattern match":') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
175 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
176 actx1.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
177 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
|
178 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
179 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
180 print('wcctx._status=%s' % (str(wcctx._status))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
181 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
182 actx2.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
183 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
|
184 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
185 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
186 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
|
187 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
188 print('=== with "pattern match" and "listclean=True":') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
189 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
190 actx1.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
191 other=wcctx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
192 match=scmutil.matchfiles(repo, [b'bar-r', b'foo']), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
193 listclean=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
194 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
195 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
196 print('wcctx._status=%s' % (str(wcctx._status))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
197 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
198 actx2.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
199 other=wcctx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
200 match=scmutil.matchfiles(repo, [b'bar-r', b'foo']), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
201 listclean=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
202 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
203 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
204 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
|
205 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
206 os.chdir('..') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
207 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
208 # test manifestlog being changed |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
209 print('== commit with manifestlog invalidated') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
210 |
42056
4950ae4d034f
tests: rename "u" to more usual "ui" in test-context.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
41397
diff
changeset
|
211 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
|
212 os.chdir('test2') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
213 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
214 # make some commits |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
215 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
|
216 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
|
217 f.write(i) |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
218 status = scmutil.status([], [i], [], [], [], [], []) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
219 ctx = context.workingcommitctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
220 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
|
221 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
222 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
|
223 n = repo.commitctx(ctx) |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
224 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
|
225 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
226 # 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
|
227 # 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
|
228 st = repo.svfs.stat(b'00manifest.i') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
229 repo.svfs.utime( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
230 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
|
231 ) |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
232 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
233 # read the file just committed |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
234 try: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
235 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
|
236 print('data mismatch') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
237 except Exception as ex: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
238 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
|
239 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
240 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
|
241 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
|
242 f.write(b'4') |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
243 repo.dirstate.normal(b'4') |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
244 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
|
245 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
|
246 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
|
247 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
|
248 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
|
249 print('changeset lost by repo.invalidate()') |