Mercurial > hg
view tests/autodiff.py @ 45855:c10683da6889
tests: show how `hg split` can put color codes in commit template
With D9255, I made it so `hg split` respects the
`commmand-templates.oneline-summary` config. I don't think I realized
that the output I modified was being put in a commit message
template. The result was that if you have coloring enabled, you get
colors in the commit template. This patch show that. The test is
unfortunately pretty verbose (like most other `hg split` tests) and
shows a bunch of irrelevant "color codes" (templater labels).
Differential Revision: https://phab.mercurial-scm.org/D9321
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 12 Nov 2020 17:06:45 -0800 |
parents | 2372284d9457 |
children | b74e128676d4 |
line wrap: on
line source
# Extension dedicated to test patch.diff() upgrade modes from __future__ import absolute_import from mercurial import ( error, patch, pycompat, registrar, scmutil, ) cmdtable = {} command = registrar.command(cmdtable) @command( b'autodiff', [(b'', b'git', b'', b'git upgrade mode (yes/no/auto/warn/abort)')], b'[OPTION]... [FILE]...', ) def autodiff(ui, repo, *pats, **opts): opts = pycompat.byteskwargs(opts) diffopts = patch.difffeatureopts(ui, opts) git = opts.get(b'git', b'no') brokenfiles = set() losedatafn = None if git in (b'yes', b'no'): diffopts.git = git == b'yes' diffopts.upgrade = False elif git == b'auto': diffopts.git = False diffopts.upgrade = True elif git == b'warn': diffopts.git = False diffopts.upgrade = True def losedatafn(fn=None, **kwargs): brokenfiles.add(fn) return True elif git == b'abort': diffopts.git = False diffopts.upgrade = True def losedatafn(fn=None, **kwargs): raise error.Abort(b'losing data for %s' % fn) else: raise error.Abort(b'--git must be yes, no or auto') ctx1, ctx2 = scmutil.revpair(repo, []) m = scmutil.match(ctx2, pats, opts) it = patch.diff( repo, ctx1.node(), ctx2.node(), match=m, opts=diffopts, losedatafn=losedatafn, ) for chunk in it: ui.write(chunk) for fn in sorted(brokenfiles): ui.write((b'data lost for: %s\n' % fn))