annotate tests/test-context.py @ 41784:251332dbf33d

diff: make sure we output stat even when --git is not passed (issue4037) (BC) Before this patch, `hg diff --stat` will give an empty output. It will not show the stat information. I debugged and found that the underlying code does not return the diff header and due to that, other code paths fails to parse that as a diff. I looked into why we don't return diff headers in quiet mode and found the behavior is from 8f8bb77d560e70bcc95577e4dfa877df18d876ab which does not have any mention about why it is done. We also show the diff headers in git, so I think it's fine showing diff header in normal diff in quiet mode. Differential Revision: https://phab.mercurial-scm.org/D6007
author Pulkit Goyal <pulkit@yandex-team.ru>
date Fri, 22 Feb 2019 03:52:10 +0530
parents 0bd56c291359
children 4950ae4d034f
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
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()')