Mercurial > hg
view tests/autodiff.py @ 15164:7bddec632821
patchbomb: make it easy for the user to decline sending an intro message.
- prompt(): respect interactive mode; clarify logic a bit
- rename introneeded() to introwanted() and give it only one caller
- add 'numbered' arg to makepatch() so it does not need to call
introwanted()
- factor makeintro() out of getpatchmsgs(), so it's easier to skip the
intro message based on the user's behaviour
Unexpected but perfectly reasonable side effect: in non-interactive
mode, we don't show unanswerable "Cc" or "From" prompts anymore, so
remove those from the test expectations.
author | Greg Ward <greg@gerg.ca> |
---|---|
date | Tue, 27 Sep 2011 22:38:47 -0400 |
parents | 35c2cc322ba8 |
children | a08775ec89f2 |
line wrap: on
line source
# Extension dedicated to test patch.diff() upgrade modes # # from mercurial import scmutil, patch, util def autodiff(ui, repo, *pats, **opts): diffopts = patch.diffopts(ui, opts) git = opts.get('git', 'no') brokenfiles = set() losedatafn = None if git in ('yes', 'no'): diffopts.git = git == 'yes' diffopts.upgrade = False elif git == 'auto': diffopts.git = False diffopts.upgrade = True elif git == 'warn': diffopts.git = False diffopts.upgrade = True def losedatafn(fn=None, **kwargs): brokenfiles.add(fn) return True elif git == 'abort': diffopts.git = False diffopts.upgrade = True def losedatafn(fn=None, **kwargs): raise util.Abort('losing data for %s' % fn) else: raise util.Abort('--git must be yes, no or auto') node1, node2 = scmutil.revpair(repo, []) m = scmutil.match(repo[node2], pats, opts) it = patch.diff(repo, node1, node2, match=m, opts=diffopts, losedatafn=losedatafn) for chunk in it: ui.write(chunk) for fn in sorted(brokenfiles): ui.write('data lost for: %s\n' % fn) cmdtable = { "autodiff": (autodiff, [('', 'git', '', 'git upgrade mode (yes/no/auto/warn/abort)'), ], '[OPTION]... [FILE]...'), }