annotate tests/fakedirstatewritetime.py @ 50329:3dbc7b1ecaba stable

typing: correct the signature of error.CommandError There's a place in `mercurial.dispatch._parse()` that passes None if a parse error happens before the command can be parsed out, and casting the error to bytes works fine because the command and message fields are apparently ignored. Likewise, TortoiseHg similarly passes None for the same reason.
author Matt Harbison <matt_harbison@yahoo.com>
date Fri, 24 Mar 2023 02:22:12 -0400
parents 6000f5b25c9b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
1 # extension to emulate invoking 'dirstate.write()' at the time
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
2 # specified by '[fakedirstatewritetime] fakenow', only when
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
3 # 'dirstate.write()' is invoked via functions below:
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
4 #
32812
add613cddcb6 workingctx: factor out post-status dirstate fixup
Siddharth Agarwal <sid0@fb.com>
parents: 32372
diff changeset
5 # - 'workingctx._poststatusfixup()' (= 'repo.status()')
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
6 # - 'committablectx.markcommitted()'
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
7
27283
b38adef652fe tests/fakedirstatewritetime.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26634
diff changeset
8
b38adef652fe tests/fakedirstatewritetime.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26634
diff changeset
9 from mercurial import (
b38adef652fe tests/fakedirstatewritetime.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26634
diff changeset
10 context,
47501
8b7e47802deb dirstate: split dirstatemap in its own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45942
diff changeset
11 dirstatemap as dirstatemapmod,
27283
b38adef652fe tests/fakedirstatewritetime.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26634
diff changeset
12 extensions,
32372
df448de7cf3b parsers: switch to policy importer
Yuya Nishihara <yuya@tcha.org>
parents: 27283
diff changeset
13 policy,
34771
28b7034a916a configitems: register the test 'fakedirstatewritetime.fakenow' config
Boris Feld <boris.feld@octobus.net>
parents: 32813
diff changeset
14 registrar,
27283
b38adef652fe tests/fakedirstatewritetime.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26634
diff changeset
15 )
48260
269ff8978086 dirstate: store mtimes with nanosecond precision in memory
Simon Sapin <simon.sapin@octobus.net>
parents: 48020
diff changeset
16 from mercurial.dirstateutils import timestamp
36607
c6061cadb400 util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents: 36327
diff changeset
17 from mercurial.utils import dateutil
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
18
42304
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
19 try:
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
20 from mercurial import rustext
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
21
42304
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
22 rustext.__name__ # force actual import (see hgdemandimport)
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
23 except ImportError:
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
24 rustext = None
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
25
34771
28b7034a916a configitems: register the test 'fakedirstatewritetime.fakenow' config
Boris Feld <boris.feld@octobus.net>
parents: 32813
diff changeset
26 configtable = {}
28b7034a916a configitems: register the test 'fakedirstatewritetime.fakenow' config
Boris Feld <boris.feld@octobus.net>
parents: 32813
diff changeset
27 configitem = registrar.configitem(configtable)
28b7034a916a configitems: register the test 'fakedirstatewritetime.fakenow' config
Boris Feld <boris.feld@octobus.net>
parents: 32813
diff changeset
28
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
29 configitem(
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43506
diff changeset
30 b'fakedirstatewritetime',
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43506
diff changeset
31 b'fakenow',
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43506
diff changeset
32 default=None,
34771
28b7034a916a configitems: register the test 'fakedirstatewritetime.fakenow' config
Boris Feld <boris.feld@octobus.net>
parents: 32813
diff changeset
33 )
28b7034a916a configitems: register the test 'fakedirstatewritetime.fakenow' config
Boris Feld <boris.feld@octobus.net>
parents: 32813
diff changeset
34
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
35 parsers = policy.importmod('parsers')
48020
1194394510ba rust: Remove the `rustext.parsers` module
Simon Sapin <simon.sapin@octobus.net>
parents: 47674
diff changeset
36 has_rust_dirstate = policy.importrust('dirstate') is not None
32372
df448de7cf3b parsers: switch to policy importer
Yuya Nishihara <yuya@tcha.org>
parents: 27283
diff changeset
37
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
38
48392
434de12918fd dirstate: remove need_delay logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48379
diff changeset
39 def pack_dirstate(orig, dmap, copymap, pl):
434de12918fd dirstate: remove need_delay logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48379
diff changeset
40 return orig(dmap, copymap, pl)
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
41
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
42
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
43 def fakewrite(ui, func):
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
44 # fake "now" of 'pack_dirstate' only if it is invoked while 'func'
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
45
36324
ac04f17b7041 py3: add b'' prefixes in fakedirstatewritetime.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34771
diff changeset
46 fakenow = ui.config(b'fakedirstatewritetime', b'fakenow')
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
47 if not fakenow:
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
48 # Execute original one, if fakenow isn't configured. This is
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
49 # useful to prevent subrepos from executing replaced one,
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
50 # because replacing 'parsers.pack_dirstate' is also effective
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
51 # in subrepos.
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
52 return func()
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
53
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
54 # parsing 'fakenow' in YYYYmmddHHMM format makes comparison between
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
55 # 'fakenow' value and 'touch -t YYYYmmddHHMM' argument easy
36607
c6061cadb400 util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents: 36327
diff changeset
56 fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0]
48398
111098af6356 dirstate-item: add a "second_ambiguous` flag in the mtime tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48392
diff changeset
57 fakenow = timestamp.timestamp((fakenow, 0, False))
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
58
48020
1194394510ba rust: Remove the `rustext.parsers` module
Simon Sapin <simon.sapin@octobus.net>
parents: 47674
diff changeset
59 if has_rust_dirstate:
42747
760a7851e9ba rust-parsers: move parser bindings to their own file and Python module
Raphaël Gomès <rgomes@octobus.net>
parents: 42304
diff changeset
60 # The Rust implementation does not use public parse/pack dirstate
760a7851e9ba rust-parsers: move parser bindings to their own file and Python module
Raphaël Gomès <rgomes@octobus.net>
parents: 42304
diff changeset
61 # to prevent conversion round-trips
47501
8b7e47802deb dirstate: split dirstatemap in its own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45942
diff changeset
62 orig_dirstatemap_write = dirstatemapmod.dirstatemap.write
48392
434de12918fd dirstate: remove need_delay logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48379
diff changeset
63 wrapper = lambda self, tr, st: orig_dirstatemap_write(self, tr, st)
47501
8b7e47802deb dirstate: split dirstatemap in its own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45942
diff changeset
64 dirstatemapmod.dirstatemap.write = wrapper
42304
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
65
48379
08b060abd658 dirstate: move "get fs now" in the timestamp utility module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48260
diff changeset
66 orig_get_fs_now = timestamp.get_fs_now
48392
434de12918fd dirstate: remove need_delay logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48379
diff changeset
67 wrapper = lambda *args: pack_dirstate(orig_pack_dirstate, *args)
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
68
42747
760a7851e9ba rust-parsers: move parser bindings to their own file and Python module
Raphaël Gomès <rgomes@octobus.net>
parents: 42304
diff changeset
69 orig_module = parsers
760a7851e9ba rust-parsers: move parser bindings to their own file and Python module
Raphaël Gomès <rgomes@octobus.net>
parents: 42304
diff changeset
70 orig_pack_dirstate = parsers.pack_dirstate
760a7851e9ba rust-parsers: move parser bindings to their own file and Python module
Raphaël Gomès <rgomes@octobus.net>
parents: 42304
diff changeset
71
42304
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
72 orig_module.pack_dirstate = wrapper
48392
434de12918fd dirstate: remove need_delay logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48379
diff changeset
73 timestamp.get_fs_now = (
434de12918fd dirstate: remove need_delay logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48379
diff changeset
74 lambda *args: fakenow
434de12918fd dirstate: remove need_delay logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48379
diff changeset
75 ) # XXX useless for this purpose now
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
76 try:
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
77 return func()
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
78 finally:
42304
9c6c0f736e1d rust-dirstate: call parse/pack bindings from Python
Raphaël Gomès <rgomes@octobus.net>
parents: 42295
diff changeset
79 orig_module.pack_dirstate = orig_pack_dirstate
48379
08b060abd658 dirstate: move "get fs now" in the timestamp utility module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48260
diff changeset
80 timestamp.get_fs_now = orig_get_fs_now
48020
1194394510ba rust: Remove the `rustext.parsers` module
Simon Sapin <simon.sapin@octobus.net>
parents: 47674
diff changeset
81 if has_rust_dirstate:
47501
8b7e47802deb dirstate: split dirstatemap in its own file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45942
diff changeset
82 dirstatemapmod.dirstatemap.write = orig_dirstatemap_write
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
83
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
84
32813
6d73b7ff8f92 workingctx: also pass status tuple into poststatusfixup
Siddharth Agarwal <sid0@fb.com>
parents: 32812
diff changeset
85 def _poststatusfixup(orig, workingctx, status, fixup):
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
86 ui = workingctx.repo().ui
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
87 return fakewrite(ui, lambda: orig(workingctx, status, fixup))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
88
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
89
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
90 def markcommitted(orig, committablectx, node):
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
91 ui = committablectx.repo().ui
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
92 return fakewrite(ui, lambda: orig(committablectx, node))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
93
25752
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
94
815df73abf12 tests: add extension to emulate invoking dirstate.write at the specific time
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff changeset
95 def extsetup(ui):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
96 extensions.wrapfunction(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
97 context.workingctx, '_poststatusfixup', _poststatusfixup
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
98 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42747
diff changeset
99 extensions.wrapfunction(context.workingctx, 'markcommitted', markcommitted)