tests/autodiff.py
author Martin Geisler <mg@aragost.com>
Mon, 01 Nov 2010 10:24:07 +0100
branchstable
changeset 12895 53cfde2b3cf9
parent 10189 e451e599fbcf
child 14319 b33f3e35efb0
permissions -rw-r--r--
run-tests: use regex when searching for $HGPORT in test output This prevents spurious errors when a changeset hash happens to match the port number. Before, this invocation gave a test failure: $ ./run-tests.py test-log.t --port 24427 ERROR: /home/mg/src/mercurial-crew/tests/test-log.t output changed --- /home/mg/src/mercurial-crew/tests/test-log.t +++ /home/mg/src/mercurial-crew/tests/test-log.t.err @@ -626,12 +626,12 @@ $ hg log -b default changeset: 2:c3a4f03cc9a7 - parent: 0:24427303d56f + parent: 0:$HGPORT303d56f user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: commit on default ...

# Extension dedicated to test patch.diff() upgrade modes
#
#
from mercurial import cmdutil, 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 = cmdutil.revpair(repo, [])
    m = cmdutil.match(repo, 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]...'),
}