Mercurial > hg
annotate tests/test-context.py @ 51316:178e50edb4f8
changelog: stop useless enforcing split at the end of transaction
Changelogs are no longer created inline, and existing changelogs are
automatically split. Since we now enforce splitting at the start of any write,
we don't need to enforce splitting at the end of the transaction.
This has the nice side effect of killing the only user of "side_write".
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 11 Jan 2024 16:35:52 +0100 |
parents | d41960df197e |
children |
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' |
50040
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
45 with repo.wlock(), repo.lock(), repo.transaction(b'test-context'): |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
46 with repo.dirstate.changing_files(repo): |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
47 repo[None].add([b'foo']) |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
48 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
|
49 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
50 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
|
51 if os.name == 'nt': |
33751
3889cf955a62
hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents:
32518
diff
changeset
|
52 d = d[:2] |
3889cf955a62
hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents:
32518
diff
changeset
|
53 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
|
54 |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
55 # 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
|
56 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
57 |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
58 def filectxfn(repo, memctx, path): |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
59 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
|
60 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
61 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
62 ctx = context.memctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
63 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
64 [b'tip', None], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
65 encoding.tolocal(b"Gr\xc3\xbcezi!"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
66 [b"foo"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
67 filectxfn, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
68 ) |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
69 ctx.commit() |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
70 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
|
71 encoding.encoding = enc |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
72 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
|
73 |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
74 # test performing a status |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
75 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
76 |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
77 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
|
78 fctx = memctx.p1()[f] |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
79 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
|
80 if f == b'foo': |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
81 data += b'bar\n' |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
82 return context.memfilectx( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
83 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
|
84 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
85 |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
86 |
37304
feced1629f48
tests: remove dependence on repo.changectx()
Martin von Zweigbergk <martinvonz@google.com>
parents:
36781
diff
changeset
|
87 ctxa = repo[0] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
88 ctxb = context.memctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
89 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
90 [ctxa.node(), None], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
91 b"test diff", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
92 [b"foo"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
93 getfilectx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
94 ctxa.user(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
95 ctxa.date(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
96 ) |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
97 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
98 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
|
99 |
61b333b982ea
test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com>
parents:
21836
diff
changeset
|
100 # 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
|
101 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
|
102 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
|
103 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
|
104 |
24180
d8e0c591781c
spelling: fixes from proofreading of spell checker issues
Mads Kiilerich <madski@unity3d.com>
parents:
23712
diff
changeset
|
105 # 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
|
106 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
|
107 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
108 # ancestor "wcctx ~ 2" |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
109 actx2 = repo[b'.'] |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
110 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
111 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
|
112 repo.wwrite(b'bar-r', b'bar-r\n', b'') |
50040
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
113 with repo.wlock(), repo.lock(), repo.transaction(b'test-context'): |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
114 with repo.dirstate.changing_files(repo): |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
115 repo[None].add([b'bar-m', b'bar-r']) |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
116 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
|
117 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
118 # ancestor "wcctx ~ 1" |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
119 actx1 = repo[b'.'] |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
120 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
121 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
|
122 repo.wwrite(b'bar-a', b'bar-a\n', b'') |
50040
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
123 with repo.wlock(), repo.lock(), repo.transaction(b'test-context'): |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
124 with repo.dirstate.changing_files(repo): |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
125 repo[None].add([b'bar-a']) |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
126 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
|
127 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
128 # status at this point: |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
129 # M bar-m |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
130 # A bar-a |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
131 # R bar-r |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
132 # C foo |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
133 |
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('== checking workingctx.status:') |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
135 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
136 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
|
137 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
|
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('=== with "pattern match":') |
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 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
|
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))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
144 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
145 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
|
146 ) |
28738
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))) |
23709
33e5431684c0
context: make unknown/ignored/clean of cached status empty for equivalence
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23700
diff
changeset
|
148 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
149 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
|
150 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
|
151 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
|
152 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
|
153 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
|
154 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
155 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
|
156 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
157 wcctx = context.workingcommitctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
158 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
159 scmutil.status([b'bar-m'], [b'bar-a'], [], [], [], [], []), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
160 text=b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
161 date=b'0 0', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
162 ) |
28738
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))) |
23711
1e6fb8db666e
context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23709
diff
changeset
|
164 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
165 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
|
166 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
|
167 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
|
168 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
|
169 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
|
170 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
171 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
|
172 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
|
173 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
|
174 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
|
175 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
|
176 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
177 print('=== with "pattern match":') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
178 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
179 actx1.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
180 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
|
181 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
182 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
183 print('wcctx._status=%s' % (str(wcctx._status))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
184 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
185 actx2.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
186 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
|
187 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
188 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
189 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
|
190 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
191 print('=== with "pattern match" and "listclean=True":') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
192 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
193 actx1.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
194 other=wcctx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
195 match=scmutil.matchfiles(repo, [b'bar-r', b'foo']), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
196 listclean=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
197 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
198 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
199 print('wcctx._status=%s' % (str(wcctx._status))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
200 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
201 actx2.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
202 other=wcctx, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
203 match=scmutil.matchfiles(repo, [b'bar-r', b'foo']), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
204 listclean=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
205 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
206 ) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
207 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
|
208 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
209 os.chdir('..') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
210 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
211 # test manifestlog being changed |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
212 print('== commit with manifestlog invalidated') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
213 |
42056
4950ae4d034f
tests: rename "u" to more usual "ui" in test-context.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
41397
diff
changeset
|
214 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
|
215 os.chdir('test2') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
216 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
217 # make some commits |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
218 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
|
219 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
|
220 f.write(i) |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
221 status = scmutil.status([], [i], [], [], [], [], []) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
222 ctx = context.workingcommitctx( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
223 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
|
224 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
225 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
|
226 n = repo.commitctx(ctx) |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
227 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
|
228 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
229 # 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
|
230 # 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
|
231 st = repo.svfs.stat(b'00manifest.i') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
232 repo.svfs.utime( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42056
diff
changeset
|
233 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
|
234 ) |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
235 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
236 # read the file just committed |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
237 try: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
238 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
|
239 print('data mismatch') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
240 except Exception as ex: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
241 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
|
242 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
243 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
|
244 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
|
245 f.write(b'4') |
50040
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
246 with repo.dirstate.changing_files(repo): |
d41960df197e
dirstate: wrap repository change in appropriate context in `test-context`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49282
diff
changeset
|
247 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
|
248 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
|
249 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
|
250 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
|
251 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
|
252 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
|
253 print('changeset lost by repo.invalidate()') |