Mercurial > hgsubversion
view tests/test_template_keywords.py @ 1365:89997a5fc181 stable 1.8.4
stupid: self-disable if svn bindings are too new to work with stupid mode
Subversion 1.9 enhanced the diff format slightly in a way that we
can't parse. We're collectively weary in hgsubversion of parsing diffs
to emulate replay given that ra_replay was new in Subversion 1.5,
which is now 7.5 years old. Rather than try to adapt to the diff
format changes, we'll disable stupid mode for 1.9 bindings and see if
anyone actually bothers to email the list and tell us they saw the
message. I figure if we don't see anything by mid 2016 or so we can
rip out stupid mode entirely.
Disable all tests that use stupid mode when 1.9 is in play. This
should actually be a nice runtime win on the testsuite since we'll be
running many hundreds fewer tests overall.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Thu, 31 Dec 2015 12:06:58 -0500 |
parents | 8caf1226adec |
children |
line wrap: on
line source
import test_util import unittest from mercurial import commands from mercurial import error from mercurial import ui try: from mercurial import templatekw templatekw.keywords except ImportError: templatekw = None try: from mercurial import revset revset.methods except ImportError: revset = None class CapturingUI(ui.ui): def __init__(self, *args, **kwds): super(CapturingUI, self).__init__(*args, **kwds) self._output = "" def write(self, msg, *args, **kwds): self._output += msg class TestLogKeywords(test_util.TestBase): @test_util.requiresmodule(templatekw) def test_svn_keywords(self): defaults = {'date': None, 'rev': None, 'user': None, 'graph': True} repo = self._load_fixture_and_fetch('two_revs.svndump') # we want one commit that isn't from Subversion self.commitchanges([('foo', 'foo', 'frobnicate\n')]) ui = CapturingUI() commands.log(ui, repo, template=(' rev: {rev} svnrev:{svnrev} ' 'svnpath:{svnpath} svnuuid:{svnuuid}\n'), **defaults) print ui._output self.assertEqual(ui._output.strip(), ''' rev: 2 svnrev: svnpath: svnuuid: @ | rev: 1 svnrev:3 svnpath:/trunk svnuuid:df2126f7-00ab-4d49-b42c-7e981dde0bcf o | rev: 0 svnrev:2 svnpath:/trunk svnuuid:df2126f7-00ab-4d49-b42c-7e981dde0bcf o '''.strip()) @test_util.requiresmodule(revset) @test_util.requiresmodule(templatekw) def test_svn_revsets(self): repo = self._load_fixture_and_fetch('two_revs.svndump') # we want one commit that isn't from Subversion self.commitchanges([('foo', 'foo', 'frobnicate\n')]) defaults = {'date': None, 'rev': ['fromsvn()'], 'user': None} ui = CapturingUI() commands.log(ui, repo, template='{rev}:{svnrev} ', **defaults) self.assertEqual(ui._output, '0:2 1:3 ') defaults = {'date': None, 'rev': ['svnrev(2)'], 'user': None} ui = CapturingUI() commands.log(ui, repo, template='{rev}:{svnrev} ', **defaults) self.assertEqual(ui._output, '0:2 ') defaults = {'date': None, 'rev': ['fromsvn(1)'], 'user': None} self.assertRaises(error.ParseError, commands.log, self.ui(), repo, template='{rev}:{svnrev} ', **defaults) defaults = {'date': None, 'rev': ['svnrev(1, 2)'], 'user': None} self.assertRaises(error.ParseError, commands.log, self.ui(), repo, template='{rev}:{svnrev} ', **defaults)