Mercurial > hg
annotate tests/autodiff.py @ 51105:af96fbb8f739
revlog: add a `canonical_index_file` attribute on inner revlog
This is currently the same and the index_file but it will become more complex
when we start doing delayed write.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 26 Oct 2023 05:37:37 +0200 |
parents | 6000f5b25c9b |
children |
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 |
3b517f2a3989
tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26587
diff
changeset
|
4 from mercurial import ( |
3b517f2a3989
tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26587
diff
changeset
|
5 error, |
48117
b74e128676d4
errors: raise InputError from revpair() iff revset provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
43076
diff
changeset
|
6 logcmdutil, |
27281
3b517f2a3989
tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26587
diff
changeset
|
7 patch, |
37368
cdccfe20eed7
py3: use pycompat.byteskwargs() in tests/autodiff.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37258
diff
changeset
|
8 pycompat, |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
27281
diff
changeset
|
9 registrar, |
27281
3b517f2a3989
tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26587
diff
changeset
|
10 scmutil, |
3b517f2a3989
tests/autodiff.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26587
diff
changeset
|
11 ) |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
12 |
21254
51e5c793a9f4
tests: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
17956
diff
changeset
|
13 cmdtable = {} |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
27281
diff
changeset
|
14 command = registrar.command(cmdtable) |
21254
51e5c793a9f4
tests: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
17956
diff
changeset
|
15 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
16 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
17 @command( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
18 b'autodiff', |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
19 [(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
|
20 b'[OPTION]... [FILE]...', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
21 ) |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
22 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
|
23 opts = pycompat.byteskwargs(opts) |
23692
f78192115229
tests/autodiff.py: explicitly only honor feature diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
21254
diff
changeset
|
24 diffopts = patch.difffeatureopts(ui, opts) |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
25 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
|
26 brokenfiles = set() |
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
27 losedatafn = None |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
28 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
|
29 diffopts.git = git == b'yes' |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
30 diffopts.upgrade = False |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
31 elif git == b'auto': |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
32 diffopts.git = False |
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
33 diffopts.upgrade = True |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
34 elif git == b'warn': |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
35 diffopts.git = False |
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
36 diffopts.upgrade = True |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
37 |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
38 def losedatafn(fn=None, **kwargs): |
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
39 brokenfiles.add(fn) |
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
40 return True |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
41 |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
42 elif git == b'abort': |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
43 diffopts.git = False |
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
44 diffopts.upgrade = True |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
45 |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
46 def losedatafn(fn=None, **kwargs): |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
47 raise error.Abort(b'losing data for %s' % fn) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
48 |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
49 else: |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
50 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
|
51 |
48117
b74e128676d4
errors: raise InputError from revpair() iff revset provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
43076
diff
changeset
|
52 ctx1, ctx2 = logcmdutil.revpair(repo, []) |
37258
f654105f1517
tests: use context-return revpair() in autodiff
Martin von Zweigbergk <martinvonz@google.com>
parents:
37251
diff
changeset
|
53 m = scmutil.match(ctx2, pats, opts) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
54 it = patch.diff( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
55 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
56 ctx1.node(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
57 ctx2.node(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
58 match=m, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
59 opts=diffopts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
60 losedatafn=losedatafn, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37368
diff
changeset
|
61 ) |
10189
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
62 for chunk in it: |
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
63 ui.write(chunk) |
e451e599fbcf
patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
64 for fn in sorted(brokenfiles): |
35581
154754d1f137
tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
65 ui.write((b'data lost for: %s\n' % fn)) |