annotate tests/autodiff.py @ 48670:6d2ddea0721a stable

stream-clone: filter possible missing requirements using all supported one The `supportedformat` requirements is missing some important requirements and it seems better to filter out with all requirements we know, not just an "arbitrary" subset. The `supportedformat` set is lacking some important requirements (for example `revlog-compression-zstd`). This is getting fixed on default (for Mercurial 6.1) However, fixing that in 6.1 means the stream requirements sent over the wire will contains more items. And if we don't apply this fix on older version, they might end up complaining about lacking support for feature they actually support for years. This patch does not fix the deeper problem (advertised stream requirement lacking some of them), but focus on the trivial part : Lets use the full set of supported requirement for looking for unsupported ones. This patch should be simple to backport to older version of Mercurial and packager should be encouraged to do so. This is a graft of d9017df70135 from default. Differential Revision: https://phab.mercurial-scm.org/D12091
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 24 Jan 2022 11:49:06 +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))