Mercurial > hgsubversion
view tests/test_template_keywords.py @ 762:c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
At this point, only pulling externals definitions into .hgsub and .hgsubstate
is supported. One difference between subrepos and svn:externals is the former
separate the source definition and target revision in two files, while
svn:externals definitions contain both. To handle this, the svn:externals
revision references is replaced with a {REV} placeholder and stored in .hgsub,
prefixed with the external base directory separated with a ':', while the
revision is extracted in .hgsubstate.
For instance, the following external:
-r3 ^/externals/proj2@2 deps/proj2
Becomes:
(.hgsub)
deps/proj2 = [hgsubversion] :-r{REV} ^/externals/proj2@2 deps/proj2
(.hgsubstate)
3 deps/proj2
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Thu, 25 Nov 2010 21:55:21 +0100 |
parents | 4baa41e0f8ad |
children | e9af7eba88db |
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} 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}:{svnrev} ', **defaults) self.assertEqual(ui._output, '0:2 1:3 2: ') ui = CapturingUI() commands.log(ui, repo, template='{rev}:{svnpath} ', **defaults) self.assertEqual(ui._output, '0:/trunk 1:/trunk 2: ') ui = CapturingUI() commands.log(ui, repo, template='{rev}:{svnuuid} ', **defaults) self.assertEqual(ui._output, ('0:df2126f7-00ab-4d49-b42c-7e981dde0bcf ' '1:df2126f7-00ab-4d49-b42c-7e981dde0bcf ' '2: ')) @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) def suite(): all = [unittest.TestLoader().loadTestsFromTestCase(TestLogKeywords),] return unittest.TestSuite(all)