Mercurial > hg
annotate tests/test-context.py @ 41754:d5edb5d3a337
copies: filter out copies when target is not in destination manifest
When chaining a series of commits that copied a file with a series
that removed the destination file, we would still include the copy in
the result. Similar to the previous patch, I have checked that `hg
status --copies` is not affected by this bug, but I wouldn't be
surprised if some commands are.
Differential Revision: https://phab.mercurial-scm.org/D5989
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 14 Feb 2019 22:46:18 -0800 |
parents | 0bd56c291359 |
children | 4950ae4d034f |
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 |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
16 def print(*args, **kwargs): |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
17 """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
|
18 |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
19 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
|
20 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
|
21 """ |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
22 print_(*args, **kwargs) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
23 sys.stdout.flush() |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
24 |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
25 def printb(data, end=b'\n'): |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
26 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
|
27 out.write(data + end) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
28 out.flush() |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
29 |
30559
d83ca854fa21
ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents:
29187
diff
changeset
|
30 u = uimod.ui.load() |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
31 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
32 repo = hg.repository(u, b'test1', create=1) |
4110
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
33 os.chdir('test1') |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
34 |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
35 # 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
|
36 f = open('foo', 'wb') |
29187
aec5d8561be2
tests: mark test-context.py write as binary
timeless <timeless@mozdev.org>
parents:
28775
diff
changeset
|
37 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
|
38 f.close() |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
39 os.utime('foo', (1000, 1000)) |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
40 |
20af6a2f0b0e
Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
41 # add+commit 'foo' |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
42 repo[None].add([b'foo']) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
43 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
|
44 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
45 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
|
46 if os.name == 'nt': |
33751
3889cf955a62
hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents:
32518
diff
changeset
|
47 d = d[:2] |
3889cf955a62
hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents:
32518
diff
changeset
|
48 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
|
49 |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
50 # 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
|
51 |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
52 def filectxfn(repo, memctx, path): |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
53 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
|
54 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
55 ctx = context.memctx(repo, [b'tip', None], |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
56 encoding.tolocal(b"Gr\xc3\xbcezi!"), |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
57 [b"foo"], filectxfn) |
14379
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
58 ctx.commit() |
bd23d5f28bbb
changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
59 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
|
60 encoding.encoding = enc |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
61 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
|
62 |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
63 # test performing a status |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
64 |
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
65 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
|
66 fctx = memctx.p1()[f] |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
67 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
|
68 if f == b'foo': |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
69 data += b'bar\n' |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
70 return context.memfilectx( |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
71 repo, memctx, f, data, b'l' in flags, b'x' in flags) |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
72 |
37304
feced1629f48
tests: remove dependence on repo.changectx()
Martin von Zweigbergk <martinvonz@google.com>
parents:
36781
diff
changeset
|
73 ctxa = repo[0] |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
74 ctxb = context.memctx(repo, [ctxa.node(), None], b"test diff", [b"foo"], |
21837
61b333b982ea
test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com>
parents:
21836
diff
changeset
|
75 getfilectx, ctxa.user(), ctxa.date()) |
21836
232038a05fdb
test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents:
21689
diff
changeset
|
76 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
77 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
|
78 |
61b333b982ea
test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com>
parents:
21836
diff
changeset
|
79 # 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
|
80 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
|
81 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
|
82 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
|
83 |
24180
d8e0c591781c
spelling: fixes from proofreading of spell checker issues
Mads Kiilerich <madski@unity3d.com>
parents:
23712
diff
changeset
|
84 # 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
|
85 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
|
86 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
87 # ancestor "wcctx ~ 2" |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
88 actx2 = repo[b'.'] |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
89 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
90 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
|
91 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
|
92 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
|
93 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
|
94 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
95 # ancestor "wcctx ~ 1" |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
96 actx1 = repo[b'.'] |
23700
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
97 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
98 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
|
99 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
|
100 repo[None].add([b'bar-a']) |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
101 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
|
102 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
103 # status at this point: |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
104 # M bar-m |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
105 # A bar-a |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
106 # R bar-r |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
107 # C foo |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
108 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
109 from mercurial import scmutil |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
110 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
111 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
|
112 |
a4958cdb2202
context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23060
diff
changeset
|
113 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
|
114 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
|
115 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
116 print('=== with "pattern match":') |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
117 print(actx1.status(other=wctx, |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
118 match=scmutil.matchfiles(repo, [b'bar-m', b'foo']))) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
119 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
|
120 print(actx2.status(other=wctx, |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
121 match=scmutil.matchfiles(repo, [b'bar-m', b'foo']))) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
122 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
|
123 |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
124 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
|
125 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
|
126 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
|
127 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
|
128 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
|
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 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
|
131 |
1e6fb8db666e
context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23709
diff
changeset
|
132 wcctx = context.workingcommitctx(repo, |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
133 scmutil.status([b'bar-m'], |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
134 [b'bar-a'], |
23711
1e6fb8db666e
context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23709
diff
changeset
|
135 [], |
1e6fb8db666e
context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23709
diff
changeset
|
136 [], [], [], []), |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
137 text=b'', date=b'0 0') |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
138 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
|
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('=== 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
|
141 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
|
142 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
|
143 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
|
144 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
|
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=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
|
148 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
|
149 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
|
150 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
|
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('=== with "pattern match":') |
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
153 print(actx1.status(other=wcctx, |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
154 match=scmutil.matchfiles(repo, [b'bar-m', b'foo']))) |
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('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
|
156 print(actx2.status(other=wcctx, |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
157 match=scmutil.matchfiles(repo, [b'bar-m', b'foo']))) |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
158 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
|
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('=== with "pattern 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
|
161 print(actx1.status(other=wcctx, |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
162 match=scmutil.matchfiles(repo, [b'bar-r', b'foo']), |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
163 listclean=True)) |
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, |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
166 match=scmutil.matchfiles(repo, [b'bar-r', b'foo']), |
28738
706f4ab710c8
py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28735
diff
changeset
|
167 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('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
|
169 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
170 os.chdir('..') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
171 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
172 # test manifestlog being changed |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
173 print('== commit with manifestlog invalidated') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
174 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
175 repo = hg.repository(u, b'test2', create=1) |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
176 os.chdir('test2') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
177 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
178 # make some commits |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
179 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
|
180 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
|
181 f.write(i) |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
182 status = scmutil.status([], [i], [], [], [], [], []) |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
183 ctx = context.workingcommitctx(repo, status, text=i, user=b'test@test.com', |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
184 date=(0, 0)) |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
185 ctx.p1().manifest() # side effect: cache manifestctx |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
186 n = repo.commitctx(ctx) |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
187 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
|
188 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
189 # 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
|
190 # 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
|
191 st = repo.svfs.stat(b'00manifest.i') |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
192 repo.svfs.utime(b'00manifest.i', |
36781
ffa3026d4196
cleanup: use stat_result[stat.ST_MTIME] instead of stat_result.st_mtime
Augie Fackler <augie@google.com>
parents:
35400
diff
changeset
|
193 (st[stat.ST_MTIME] + 1, st[stat.ST_MTIME] + 1)) |
32518
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
194 |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
195 # read the file just committed |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
196 try: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
197 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
|
198 print('data mismatch') |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
199 except Exception as ex: |
bb628fc85b0e
test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents:
31270
diff
changeset
|
200 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
|
201 |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
202 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
|
203 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
|
204 f.write(b'4') |
37922
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
205 repo.dirstate.normal(b'4') |
0d95ad9fc5f4
tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents:
37304
diff
changeset
|
206 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
|
207 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
|
208 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
|
209 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
|
210 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
|
211 print('changeset lost by repo.invalidate()') |