annotate tests/autodiff.py @ 48691:b4bc9c4f925d

debugbuilddag: add a flag to allow running it from a non-empty repository Allow that by default seems "dangerous", but having a flag to make it possible will be useful to help building some repository incrementally. The newly introduced support is basic, but already useful. Differential Revision: https://phab.mercurial-scm.org/D12094
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 27 Jan 2022 15:22:04 +0100
parents b74e128676d4
children 6000f5b25c9b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
1 # Extension dedicated to test patch.diff() upgrade modes
27281
3b517f2a3989 tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
2
3b517f2a3989 tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
3 from __future__ import absolute_import
3b517f2a3989 tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
4
3b517f2a3989 tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
5 from mercurial import (
3b517f2a3989 tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
6 error,
48117
b74e128676d4 errors: raise InputError from revpair() iff revset provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents: 43076
diff changeset
7 logcmdutil,
27281
3b517f2a3989 tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
8 patch,
37368
cdccfe20eed7 py3: use pycompat.byteskwargs() in tests/autodiff.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 37258
diff changeset
9 pycompat,
32337
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 27281
diff changeset
10 registrar,
27281
3b517f2a3989 tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
11 scmutil,
3b517f2a3989 tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
12 )
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
13
21254
51e5c793a9f4 tests: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 17956
diff changeset
14 cmdtable = {}
32337
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 27281
diff changeset
15 command = registrar.command(cmdtable)
21254
51e5c793a9f4 tests: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 17956
diff changeset
16
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
17
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
18 @command(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
19 b'autodiff',
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
20 [(b'', b'git', b'', b'git upgrade mode (yes/no/auto/warn/abort)')],
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
21 b'[OPTION]... [FILE]...',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
22 )
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
23 def autodiff(ui, repo, *pats, **opts):
37368
cdccfe20eed7 py3: use pycompat.byteskwargs() in tests/autodiff.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 37258
diff changeset
24 opts = pycompat.byteskwargs(opts)
23692
f78192115229 tests/autodiff.py: explicitly only honor feature diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 21254
diff changeset
25 diffopts = patch.difffeatureopts(ui, opts)
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
26 git = opts.get(b'git', b'no')
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
27 brokenfiles = set()
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
28 losedatafn = None
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
29 if git in (b'yes', b'no'):
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
30 diffopts.git = git == b'yes'
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
31 diffopts.upgrade = False
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
32 elif git == b'auto':
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
33 diffopts.git = False
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
34 diffopts.upgrade = True
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
35 elif git == b'warn':
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
36 diffopts.git = False
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
37 diffopts.upgrade = True
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
38
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
39 def losedatafn(fn=None, **kwargs):
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
40 brokenfiles.add(fn)
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
41 return True
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
42
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
43 elif git == b'abort':
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
44 diffopts.git = False
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
45 diffopts.upgrade = True
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
46
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
47 def losedatafn(fn=None, **kwargs):
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
48 raise error.Abort(b'losing data for %s' % fn)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
49
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
50 else:
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
51 raise error.Abort(b'--git must be yes, no or auto')
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
52
48117
b74e128676d4 errors: raise InputError from revpair() iff revset provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents: 43076
diff changeset
53 ctx1, ctx2 = logcmdutil.revpair(repo, [])
37258
f654105f1517 tests: use context-return revpair() in autodiff
Martin von Zweigbergk <martinvonz@google.com>
parents: 37251
diff changeset
54 m = scmutil.match(ctx2, pats, opts)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
55 it = patch.diff(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
56 repo,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
57 ctx1.node(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
58 ctx2.node(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
59 match=m,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
60 opts=diffopts,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
61 losedatafn=losedatafn,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37368
diff changeset
62 )
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
63 for chunk in it:
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
64 ui.write(chunk)
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
65 for fn in sorted(brokenfiles):
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
66 ui.write((b'data lost for: %s\n' % fn))