Mercurial > hgsubversion
comparison tests/test_utility_commands.py @ 331:75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
The 'hg svn url' command has been killed; the replacement is
'.hg/hgrc'. More stuff related to its disappearance has been stripped,
including two tests.
HgChangeReceiver now takes a UUID argument, which it uses to ensure
that remote repositories remain unchanged. This is a temporary
solution, and I'm not entirely satisfied with how it's done either.
Access to the UUID file has been isolated in a HgChangeReceiver
property.
Some more tests have been updated to use ui.pushbuffer()/popbuffer(),
and to pass through the Mercurial API.
Moved the arguments to wrappers.pull() to the UI configuration.
Also, remove HgChangeReceiver.opts in favour of a 'usebranchnames'
instance & configuration variable. The name is taken from the
ConvertExtension.
| author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
|---|---|
| date | Fri, 15 May 2009 19:18:43 +0200 |
| parents | 112d57bb736e |
| children | 46e69be8e2c8 |
comparison
equal
deleted
inserted
replaced
| 330:5f8f2fd4fd54 | 331:75f082b5897e |
|---|---|
| 6 from mercurial import hg | 6 from mercurial import hg |
| 7 from mercurial import revlog | 7 from mercurial import revlog |
| 8 from mercurial import context | 8 from mercurial import context |
| 9 from mercurial import node | 9 from mercurial import node |
| 10 | 10 |
| 11 import util | |
| 11 import utility_commands | 12 import utility_commands |
| 12 import test_util | 13 import test_util |
| 13 import wrappers | 14 import wrappers |
| 14 | 15 |
| 15 expected_info_output = '''URL: %(repourl)s/%(branch)s | 16 expected_info_output = '''URL: %(repourl)s/%(branch)s |
| 21 Last Changed Rev: %(rev)s | 22 Last Changed Rev: %(rev)s |
| 22 Last Changed Date: %(date)s | 23 Last Changed Date: %(date)s |
| 23 ''' | 24 ''' |
| 24 | 25 |
| 25 class UtilityTests(test_util.TestBase): | 26 class UtilityTests(test_util.TestBase): |
| 27 @property | |
| 28 def repourl(self): | |
| 29 return util.normalize_url(test_util.fileurl(self.repo_path)) | |
| 30 | |
| 26 def test_info_output(self): | 31 def test_info_output(self): |
| 27 self._load_fixture_and_fetch('two_heads.svndump') | 32 self._load_fixture_and_fetch('two_heads.svndump') |
| 28 hg.update(self.repo, 'the_branch') | 33 hg.update(self.repo, 'the_branch') |
| 29 u = ui.ui() | 34 u = ui.ui() |
| 35 u.pushbuffer() | |
| 30 utility_commands.info(u, self.repo, self.wc_path) | 36 utility_commands.info(u, self.repo, self.wc_path) |
| 37 actual = u.popbuffer() | |
| 31 expected = (expected_info_output % | 38 expected = (expected_info_output % |
| 32 {'date': '2008-10-08 01:39:05 +0000 (Wed, 08 Oct 2008)', | 39 {'date': '2008-10-08 01:39:05 +0000 (Wed, 08 Oct 2008)', |
| 33 'repourl': test_util.fileurl(self.repo_path), | 40 'repourl': self.repourl, |
| 34 'branch': 'branches/the_branch', | 41 'branch': 'branches/the_branch', |
| 35 'rev': 5, | 42 'rev': 5, |
| 36 }) | 43 }) |
| 37 self.assertEqual(u.stream.getvalue(), expected) | 44 self.assertEqual(actual, expected) |
| 38 hg.update(self.repo, 'default') | 45 hg.update(self.repo, 'default') |
| 39 u = ui.ui() | 46 u.pushbuffer() |
| 40 utility_commands.info(u, self.repo, self.wc_path) | 47 utility_commands.info(u, self.repo, self.wc_path) |
| 48 actual = u.popbuffer() | |
| 41 expected = (expected_info_output % | 49 expected = (expected_info_output % |
| 42 {'date': '2008-10-08 01:39:29 +0000 (Wed, 08 Oct 2008)', | 50 {'date': '2008-10-08 01:39:29 +0000 (Wed, 08 Oct 2008)', |
| 43 'repourl': test_util.fileurl(self.repo_path), | 51 'repourl': self.repourl, |
| 44 'branch': 'trunk', | 52 'branch': 'trunk', |
| 45 'rev': 6, | 53 'rev': 6, |
| 46 }) | 54 }) |
| 47 self.assertEqual(u.stream.getvalue(), expected) | 55 self.assertEqual(actual, expected) |
| 48 | 56 |
| 49 def test_parent_output(self): | 57 def test_parent_output(self): |
| 50 self._load_fixture_and_fetch('two_heads.svndump') | 58 self._load_fixture_and_fetch('two_heads.svndump') |
| 51 u = ui.ui() | 59 u = ui.ui() |
| 60 u.pushbuffer() | |
| 52 parents = (self.repo['the_branch'].node(), revlog.nullid, ) | 61 parents = (self.repo['the_branch'].node(), revlog.nullid, ) |
| 53 def filectxfn(repo, memctx, path): | 62 def filectxfn(repo, memctx, path): |
| 54 return context.memfilectx(path=path, | 63 return context.memfilectx(path=path, |
| 55 data='added', | 64 data='added', |
| 56 islink=False, | 65 islink=False, |
| 65 '2008-12-21 16:32:00 -0500', | 74 '2008-12-21 16:32:00 -0500', |
| 66 {'branch': 'localbranch', }) | 75 {'branch': 'localbranch', }) |
| 67 new = self.repo.commitctx(ctx) | 76 new = self.repo.commitctx(ctx) |
| 68 hg.update(self.repo, new) | 77 hg.update(self.repo, new) |
| 69 wrappers.parent(lambda x, y: None, u, self.repo, svn=True) | 78 wrappers.parent(lambda x, y: None, u, self.repo, svn=True) |
| 70 self.assertEqual(u.stream.getvalue(), | 79 actual = u.popbuffer() |
| 80 self.assertEqual(actual, | |
| 71 'changeset: 3:4e256962fc5d\n' | 81 'changeset: 3:4e256962fc5d\n' |
| 72 'branch: the_branch\n' | 82 'branch: the_branch\n' |
| 73 'user: durin@df2126f7-00ab-4d49-b42c-7e981dde0bcf\n' | 83 'user: durin@df2126f7-00ab-4d49-b42c-7e981dde0bcf\n' |
| 74 'date: Wed Oct 08 01:39:05 2008 +0000\n' | 84 'date: Wed Oct 08 01:39:05 2008 +0000\n' |
| 75 'summary: add delta on the branch\n\n') | 85 'summary: add delta on the branch\n\n') |
| 76 | 86 |
| 77 hg.update(self.repo, 'default') | 87 hg.update(self.repo, 'default') |
| 78 # Make sure styles work | 88 # Make sure styles work |
| 79 u = ui.ui() | 89 u.pushbuffer() |
| 80 wrappers.parent(lambda x, y: None, u, self.repo, svn=True, style='compact') | 90 wrappers.parent(lambda x, y: None, u, self.repo, svn=True, style='compact') |
| 81 self.assertEqual(u.stream.getvalue(), | 91 actual = u.popbuffer() |
| 92 self.assertEqual(actual, | |
| 82 '4:1 1083037b18d8 2008-10-08 01:39 +0000 durin\n' | 93 '4:1 1083037b18d8 2008-10-08 01:39 +0000 durin\n' |
| 83 ' Add gamma on trunk.\n\n') | 94 ' Add gamma on trunk.\n\n') |
| 84 # custom templates too | 95 # custom templates too |
| 85 u = ui.ui() | 96 u.pushbuffer() |
| 86 wrappers.parent(lambda x, y: None, u, self.repo, svn=True, template='{node}\n') | 97 wrappers.parent(lambda x, y: None, u, self.repo, svn=True, template='{node}\n') |
| 87 self.assertEqual(u.stream.getvalue(), '1083037b18d85cd84fa211c5adbaeff0fea2cd9f\n') | 98 actual = u.popbuffer() |
| 88 | 99 self.assertEqual(actual, '1083037b18d85cd84fa211c5adbaeff0fea2cd9f\n') |
| 89 u = ui.ui() | 100 |
| 101 u.pushbuffer() | |
| 90 wrappers.parent(lambda x, y: None, u, self.repo, svn=True) | 102 wrappers.parent(lambda x, y: None, u, self.repo, svn=True) |
| 91 self.assertEqual(u.stream.getvalue(), | 103 actual = u.popbuffer() |
| 104 self.assertEqual(actual, | |
| 92 'changeset: 4:1083037b18d8\n' | 105 'changeset: 4:1083037b18d8\n' |
| 93 'parent: 1:c95251e0dd04\n' | 106 'parent: 1:c95251e0dd04\n' |
| 94 'user: durin@df2126f7-00ab-4d49-b42c-7e981dde0bcf\n' | 107 'user: durin@df2126f7-00ab-4d49-b42c-7e981dde0bcf\n' |
| 95 'date: Wed Oct 08 01:39:29 2008 +0000\n' | 108 'date: Wed Oct 08 01:39:29 2008 +0000\n' |
| 96 'summary: Add gamma on trunk.\n\n') | 109 'summary: Add gamma on trunk.\n\n') |
| 97 | 110 |
| 98 def test_outgoing_output(self): | 111 def test_outgoing_output(self): |
| 99 self._load_fixture_and_fetch('two_heads.svndump') | 112 self._load_fixture_and_fetch('two_heads.svndump') |
| 100 u = ui.ui() | 113 u = ui.ui() |
| 114 u.pushbuffer() | |
| 101 parents = (self.repo['the_branch'].node(), revlog.nullid, ) | 115 parents = (self.repo['the_branch'].node(), revlog.nullid, ) |
| 102 def filectxfn(repo, memctx, path): | 116 def filectxfn(repo, memctx, path): |
| 103 return context.memfilectx(path=path, | 117 return context.memfilectx(path=path, |
| 104 data='added', | 118 data='added', |
| 105 islink=False, | 119 islink=False, |
| 114 '2008-12-21 16:32:00 -0500', | 128 '2008-12-21 16:32:00 -0500', |
| 115 {'branch': 'localbranch', }) | 129 {'branch': 'localbranch', }) |
| 116 new = self.repo.commitctx(ctx) | 130 new = self.repo.commitctx(ctx) |
| 117 hg.update(self.repo, new) | 131 hg.update(self.repo, new) |
| 118 wrappers.outgoing(lambda x,y,z: None, u, self.repo, svn=True) | 132 wrappers.outgoing(lambda x,y,z: None, u, self.repo, svn=True) |
| 119 self.assert_(node.hex(self.repo['localbranch'].node())[:8] in | 133 actual = u.popbuffer() |
| 120 u.stream.getvalue()) | 134 self.assert_(node.hex(self.repo['localbranch'].node())[:8] in actual) |
| 121 self.assertEqual(u.stream.getvalue(), ('changeset: 5:6de15430fa20\n' | 135 self.assertEqual(actual, ('changeset: 5:6de15430fa20\n' |
| 122 'branch: localbranch\n' | 136 'branch: localbranch\n' |
| 123 'tag: tip\n' | 137 'tag: tip\n' |
| 124 'parent: 3:4e256962fc5d\n' | 138 'parent: 3:4e256962fc5d\n' |
| 125 'user: testy\n' | 139 'user: testy\n' |
| 126 'date: Sun Dec 21 16:32:00 2008 -0500\n' | 140 'date: Sun Dec 21 16:32:00 2008 -0500\n' |
| 127 'summary: automated test\n' | 141 'summary: automated test\n' |
| 128 '\n')) | 142 '\n')) |
| 129 hg.update(self.repo, 'default') | 143 hg.update(self.repo, 'default') |
| 130 u = ui.ui() | 144 u.pushbuffer() |
| 131 wrappers.outgoing(lambda x,y,z: None, u, self.repo, svn=True) | 145 wrappers.outgoing(lambda x,y,z: None, u, self.repo, svn=True) |
| 132 self.assertEqual(u.stream.getvalue(), 'no changes found\n') | 146 actual = u.popbuffer() |
| 133 | 147 self.assertEqual(actual, 'no changes found\n') |
| 134 def test_url_output(self): | |
| 135 self._load_fixture_and_fetch('two_revs.svndump') | |
| 136 hg.update(self.repo, 'tip') | |
| 137 u = ui.ui() | |
| 138 utility_commands.url(u, self.repo, self.wc_path) | |
| 139 expected = test_util.fileurl(self.repo_path) + '\n' | |
| 140 self.assertEqual(u.stream.getvalue(), expected) | |
| 141 | 148 |
| 142 def test_rebase(self): | 149 def test_rebase(self): |
| 143 self._load_fixture_and_fetch('two_revs.svndump') | 150 self._load_fixture_and_fetch('two_revs.svndump') |
| 144 parents = (self.repo[0].node(), revlog.nullid, ) | 151 parents = (self.repo[0].node(), revlog.nullid, ) |
| 145 def filectxfn(repo, memctx, path): | 152 def filectxfn(repo, memctx, path): |
| 163 wrappers.rebase(rebase.rebase, ui.ui(), self.repo, svn=True) | 170 wrappers.rebase(rebase.rebase, ui.ui(), self.repo, svn=True) |
| 164 self.assertEqual(self.repo['tip'].branch(), 'localbranch') | 171 self.assertEqual(self.repo['tip'].branch(), 'localbranch') |
| 165 self.assertEqual(self.repo['tip'].parents()[0].parents()[0], self.repo[0]) | 172 self.assertEqual(self.repo['tip'].parents()[0].parents()[0], self.repo[0]) |
| 166 self.assertNotEqual(beforerebasehash, self.repo['tip'].node()) | 173 self.assertNotEqual(beforerebasehash, self.repo['tip'].node()) |
| 167 | 174 |
| 168 def test_url_is_normalized(self): | |
| 169 """Verify url gets normalized on initial clone. | |
| 170 """ | |
| 171 test_util.load_svndump_fixture(self.repo_path, 'two_revs.svndump') | |
| 172 wrappers.clone(None, ui.ui(), | |
| 173 source=test_util.fileurl(self.repo_path) + '/', | |
| 174 dest=self.wc_path, stupid=False) | |
| 175 hg.update(self.repo, 'tip') | |
| 176 u = ui.ui() | |
| 177 utility_commands.url(u, self.repo, self.wc_path) | |
| 178 expected = test_util.fileurl(self.repo_path) + '\n' | |
| 179 self.assertEqual(u.stream.getvalue(), expected) | |
| 180 | |
| 181 def test_genignore(self): | 175 def test_genignore(self): |
| 182 """Verify url gets normalized on initial clone. | 176 """ Test generation of .hgignore file. """ |
| 183 """ | 177 test_util.load_fixture_and_fetch('ignores.svndump', self.repo_path, |
| 184 test_util.load_svndump_fixture(self.repo_path, 'ignores.svndump') | 178 self.wc_path, noupdate=False) |
| 185 wrappers.clone(None, ui.ui(), | 179 u = ui.ui() |
| 186 source=test_util.fileurl(self.repo_path) + '/', | 180 u.pushbuffer() |
| 187 dest=self.wc_path, stupid=False) | |
| 188 hg.update(self.repo, 'tip') | |
| 189 u = ui.ui() | |
| 190 utility_commands.genignore(u, self.repo, self.wc_path) | 181 utility_commands.genignore(u, self.repo, self.wc_path) |
| 191 self.assertEqual(open(os.path.join(self.wc_path, '.hgignore')).read(), | 182 self.assertEqual(open(os.path.join(self.wc_path, '.hgignore')).read(), |
| 192 '.hgignore\nsyntax:glob\nblah\notherblah\nbaz/magic\n') | 183 '.hgignore\nsyntax:glob\nblah\notherblah\nbaz/magic\n') |
| 193 | 184 |
| 194 def test_list_authors(self): | 185 def test_list_authors(self): |
| 195 test_util.load_svndump_fixture(self.repo_path, | 186 test_util.load_svndump_fixture(self.repo_path, |
| 196 'replace_trunk_with_branch.svndump') | 187 'replace_trunk_with_branch.svndump') |
| 197 u = ui.ui() | 188 u = ui.ui() |
| 189 u.pushbuffer() | |
| 198 utility_commands.listauthors(u, | 190 utility_commands.listauthors(u, |
| 199 args=[test_util.fileurl(self.repo_path)], | 191 args=[test_util.fileurl(self.repo_path)], |
| 200 authors=None) | 192 authors=None) |
| 201 self.assertEqual(u.stream.getvalue(), 'Augie\nevil\n') | 193 actual = u.popbuffer() |
| 194 self.assertEqual(actual, 'Augie\nevil\n') | |
| 202 | 195 |
| 203 | 196 |
| 204 def test_list_authors_map(self): | 197 def test_list_authors_map(self): |
| 205 test_util.load_svndump_fixture(self.repo_path, | 198 test_util.load_svndump_fixture(self.repo_path, |
| 206 'replace_trunk_with_branch.svndump') | 199 'replace_trunk_with_branch.svndump') |
