annotate tests/test-context.py @ 38523:4455e5d4d59c

context: explicitly take diffopts in `context.diff` (API) To provide a proper replacement for the `patch.diff(?)` function, the `context.diff(?)` method needs to be able to take more parameters. To distinguish the diff options from the new other arguments, we upgrade the diff options to its own explicit argument.
author Boris Feld <boris.feld@octobus.net>
date Tue, 22 May 2018 15:02:52 +0200
parents 0d95ad9fc5f4
children b9724978633e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
36789
ffa3026d4196 cleanup: use stat_result[stat.ST_MTIME] instead of stat_result.st_mtime
Augie Fackler <augie@google.com>
parents: 35407
diff changeset
3 import stat
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
4 import sys
32551
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
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,
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,
32551
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
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
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
14 print_ = print
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
15 def print(*args, **kwargs):
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
16 """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
17
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
18 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
19 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
20 """
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
21 print_(*args, **kwargs)
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
22 sys.stdout.flush()
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 def printb(data, end=b'\n'):
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
25 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
26 out.write(data + end)
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
27 out.flush()
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
28
30564
d83ca854fa21 ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29187
diff changeset
29 u = uimod.ui.load()
4110
20af6a2f0b0e Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
30
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
31 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
32 os.chdir('test1')
20af6a2f0b0e Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
33
20af6a2f0b0e Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
34 # 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
35 f = open('foo', 'wb')
29187
aec5d8561be2 tests: mark test-context.py write as binary
timeless <timeless@mozdev.org>
parents: 28775
diff changeset
36 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
37 f.close()
20af6a2f0b0e Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
38 os.utime('foo', (1000, 1000))
20af6a2f0b0e Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
39
20af6a2f0b0e Fixed workingfilectx.date() (found by Thomas Waldmann) with test.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
40 # add+commit 'foo'
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
41 repo[None].add([b'foo'])
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
42 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
43
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
44 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
45 if os.name == 'nt':
33664
3889cf955a62 hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents: 32551
diff changeset
46 d = d[:2]
3889cf955a62 hg: tolerate long vs. int in test-context.py
Tristan Seligmann <mithrandi@mithrandi.net>
parents: 32551
diff changeset
47 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
48
bd23d5f28bbb changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents: 11303
diff changeset
49 # 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
50
bd23d5f28bbb changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents: 11303
diff changeset
51 def filectxfn(repo, memctx, path):
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
52 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
53
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
54 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
55 encoding.tolocal(b"Gr\xc3\xbcezi!"),
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
56 [b"foo"], filectxfn)
14379
bd23d5f28bbb changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents: 11303
diff changeset
57 ctx.commit()
bd23d5f28bbb changelog: convert user and desc from local encoding early
Martin Geisler <mg@aragost.com>
parents: 11303
diff changeset
58 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
59 encoding.encoding = enc
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
60 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
61
232038a05fdb test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents: 21689
diff changeset
62 # test performing a status
232038a05fdb test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents: 21689
diff changeset
63
232038a05fdb test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents: 21689
diff changeset
64 def getfilectx(repo, memctx, f):
232038a05fdb test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents: 21689
diff changeset
65 fctx = memctx.parents()[0][f]
232038a05fdb test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com>
parents: 21689
diff changeset
66 data, flags = fctx.data(), fctx.flags()
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
67 if f == b'foo':
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
68 data += b'bar\n'
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
69 return context.memfilectx(
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
70 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
71
37304
feced1629f48 tests: remove dependence on repo.changectx()
Martin von Zweigbergk <martinvonz@google.com>
parents: 36789
diff changeset
72 ctxa = repo[0]
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
73 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
74 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
75
28738
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
76 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
77
61b333b982ea test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com>
parents: 21836
diff changeset
78 # test performing a diff on a memctx
61b333b982ea test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com>
parents: 21836
diff changeset
79
38523
4455e5d4d59c context: explicitly take diffopts in `context.diff` (API)
Boris Feld <boris.feld@octobus.net>
parents: 37966
diff changeset
80 for d in ctxb.diff(ctxa, opts={'git': True}):
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
81 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
82
24180
d8e0c591781c spelling: fixes from proofreading of spell checker issues
Mads Kiilerich <madski@unity3d.com>
parents: 23712
diff changeset
83 # 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
84 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
85
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
86 # ancestor "wcctx ~ 2"
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
87 actx2 = repo[b'.']
23700
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
88
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
89 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
90 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
91 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
92 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
93
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
94 # ancestor "wcctx ~ 1"
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
95 actx1 = repo[b'.']
23700
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
96
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
97 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
98 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
99 repo[None].add([b'bar-a'])
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
100 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
101
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
102 # status at this point:
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
103 # M bar-m
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
104 # A bar-a
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
105 # R bar-r
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
106 # C foo
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 from mercurial import scmutil
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
109
28738
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
110 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
111
a4958cdb2202 context: cache self._status correctly at workingctx.status
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23060
diff changeset
112 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
113 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
114
28738
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
115 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
116 print(actx1.status(other=wctx,
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
117 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
118 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
119 print(actx2.status(other=wctx,
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
120 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
121 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
122
28738
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
123 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
124 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
125 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
126 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
127 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
128
28738
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
129 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
130
1e6fb8db666e context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23709
diff changeset
131 wcctx = context.workingcommitctx(repo,
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
132 scmutil.status([b'bar-m'],
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
133 [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
134 [],
1e6fb8db666e context: avoid breaking already fixed self._status at ctx.status()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23709
diff changeset
135 [], [], [], []),
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
136 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
137 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
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 "always match":')
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
140 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
141 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
142 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
143 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
144
28738
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
145 print('=== with "always match" and "listclean=True":')
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
146 print(actx1.status(other=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
147 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
148 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
149 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
150
28738
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
151 print('=== 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
152 print(actx1.status(other=wcctx,
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
153 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
154 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
155 print(actx2.status(other=wcctx,
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
156 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
157 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
158
28738
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
159 print('=== 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
160 print(actx1.status(other=wcctx,
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
161 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
162 listclean=True))
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
163 print('wcctx._status=%s' % (str(wcctx._status)))
706f4ab710c8 py3: lexicographical order imports and print_function in test-context.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28735
diff changeset
164 print(actx2.status(other=wcctx,
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
165 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
166 listclean=True))
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)))
32551
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
168
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
169 os.chdir('..')
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
170
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
171 # test manifestlog being changed
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
172 print('== commit with manifestlog invalidated')
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
173
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
174 repo = hg.repository(u, b'test2', create=1)
32551
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
175 os.chdir('test2')
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
176
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
177 # make some commits
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
178 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: 31280
diff changeset
179 with open(i, 'wb') as f:
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
180 f.write(i)
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
181 status = scmutil.status([], [i], [], [], [], [], [])
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
182 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: 31280
diff changeset
183 date=(0, 0))
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
184 ctx.p1().manifest() # side effect: cache manifestctx
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
185 n = repo.commitctx(ctx)
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
186 printb(b'commit %s: %s' % (i, hex(n)))
32551
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
187
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
188 # touch 00manifest.i mtime so storecache could expire.
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
189 # repo.__dict__['manifestlog'] is deleted by transaction releasefn.
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
190 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
191 repo.svfs.utime(b'00manifest.i',
36789
ffa3026d4196 cleanup: use stat_result[stat.ST_MTIME] instead of stat_result.st_mtime
Augie Fackler <augie@google.com>
parents: 35407
diff changeset
192 (st[stat.ST_MTIME] + 1, st[stat.ST_MTIME] + 1))
32551
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
193
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
194 # read the file just committed
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
195 try:
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
196 if repo[n][i].data() != i:
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
197 print('data mismatch')
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
198 except Exception as ex:
bb628fc85b0e test-context: add a case demonstrating manifest caching problem
Jun Wu <quark@fb.com>
parents: 31280
diff changeset
199 print('cannot read data: %r' % ex)
33732
01a1c4e66816 repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 32551
diff changeset
200
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
201 with repo.wlock(), repo.lock(), repo.transaction(b'test'):
33732
01a1c4e66816 repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 32551
diff changeset
202 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: 32551
diff changeset
203 f.write(b'4')
37966
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
204 repo.dirstate.normal(b'4')
0d95ad9fc5f4 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com>
parents: 37304
diff changeset
205 repo.commit(b'4')
33732
01a1c4e66816 repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 32551
diff changeset
206 revsbefore = len(repo.changelog)
01a1c4e66816 repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 32551
diff changeset
207 repo.invalidate(clearfilecache=True)
01a1c4e66816 repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 32551
diff changeset
208 revsafter = len(repo.changelog)
01a1c4e66816 repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 32551
diff changeset
209 if revsbefore != revsafter:
01a1c4e66816 repo: skip invalidation of changelog if it has 'delayed' changes (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 32551
diff changeset
210 print('changeset lost by repo.invalidate()')