Mercurial > hg
view tests/autodiff.py @ 43815:19da643dc10c
tests: finally fix up test-fuzz-targets.t
It's been failing on my workstation for a while, since I have a new enough
LLVM that I had the fuzzer goo, but not so new that I actually had
FuzzedDataProvider. This is a better solution all around in my opinion.
I _believe_ this should let us run these tests on most systems, even
those using GCC instead of clang. That said, my one attempt to test
this on my macOS laptop failed miserably, and I don't feel like doing
more work on this right now.
Differential Revision: https://phab.mercurial-scm.org/D7566
author | Augie Fackler <augie@google.com> |
---|---|
date | Fri, 06 Dec 2019 15:08:37 -0500 |
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))