annotate tests/autodiff.py @ 42154:f2fe7cf4ebb6

tests: split out separate test for issue5020 The test was added to the existing setup in 41f6af50c0d8 (merge: fix crash on criss cross merge with dir move and delete (issue5020), 2017-01-31). I'm about to make a change that affects that test and it's much easier to follow if the test case for issue5020 is a separate test case. The separate test case is based on what mpm provided in comment 12 on the issue. `hg diff -r 41f6af50c0d8^ tests/test-merge-criss-cross.t` after this patch is pretty small (besides the added test). It's probably easier for reviewers to look at that than to try to understand the diff itself (I don't understand it). Differential Revision: https://phab.mercurial-scm.org/D6243
author Martin von Zweigbergk <martinvonz@google.com>
date Sat, 13 Apr 2019 23:18:56 -0700
parents cdccfe20eed7
children 2372284d9457
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,
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
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
16 @command(b'autodiff',
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
17 [(b'', b'git', b'', b'git upgrade mode (yes/no/auto/warn/abort)')],
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
18 b'[OPTION]... [FILE]...')
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
19 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
20 opts = pycompat.byteskwargs(opts)
23692
f78192115229 tests/autodiff.py: explicitly only honor feature diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 21254
diff changeset
21 diffopts = patch.difffeatureopts(ui, opts)
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
22 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
23 brokenfiles = set()
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
24 losedatafn = None
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
25 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
26 diffopts.git = git == b'yes'
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
27 diffopts.upgrade = False
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
28 elif git == b'auto':
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
29 diffopts.git = False
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
30 diffopts.upgrade = True
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
31 elif git == b'warn':
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
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
34 def losedatafn(fn=None, **kwargs):
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
35 brokenfiles.add(fn)
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
36 return True
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
37 elif git == b'abort':
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
38 diffopts.git = False
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
39 diffopts.upgrade = True
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
40 def losedatafn(fn=None, **kwargs):
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
41 raise error.Abort(b'losing data for %s' % fn)
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
42 else:
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
43 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
44
37258
f654105f1517 tests: use context-return revpair() in autodiff
Martin von Zweigbergk <martinvonz@google.com>
parents: 37251
diff changeset
45 ctx1, ctx2 = scmutil.revpair(repo, [])
f654105f1517 tests: use context-return revpair() in autodiff
Martin von Zweigbergk <martinvonz@google.com>
parents: 37251
diff changeset
46 m = scmutil.match(ctx2, pats, opts)
f654105f1517 tests: use context-return revpair() in autodiff
Martin von Zweigbergk <martinvonz@google.com>
parents: 37251
diff changeset
47 it = patch.diff(repo, ctx1.node(), ctx2.node(), match=m, opts=diffopts,
10189
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
48 losedatafn=losedatafn)
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
49 for chunk in it:
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
50 ui.write(chunk)
e451e599fbcf patch: support diff data loss detection and upgrade
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
51 for fn in sorted(brokenfiles):
35581
154754d1f137 tests: make autodiff.py work on Python 3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32337
diff changeset
52 ui.write((b'data lost for: %s\n' % fn))