Mercurial > hgsubversion
comparison tests/test_single_dir_clone.py @ 500:5ddc212dbc56
push: fix for single directory repository layouts
| author | Daniel Tang <dytang@cs.purdue.edu> |
|---|---|
| date | Tue, 20 Oct 2009 14:34:00 -0400 |
| parents | 1fd3cfa47c5e |
| children | 89eda60c90b3 |
comparison
equal
deleted
inserted
replaced
| 499:1fd3cfa47c5e | 500:5ddc212dbc56 |
|---|---|
| 1 import shutil | 1 import shutil |
| 2 | |
| 3 from mercurial import commands | |
| 4 from mercurial import context | |
| 5 from mercurial import hg | |
| 6 from mercurial import node | |
| 7 from mercurial import ui | |
| 2 | 8 |
| 3 import test_util | 9 import test_util |
| 4 | 10 |
| 5 | 11 |
| 6 class TestSingleDir(test_util.TestBase): | 12 class TestSingleDir(test_util.TestBase): |
| 68 assert '[.]' not in extdata | 74 assert '[.]' not in extdata |
| 69 print extdata | 75 print extdata |
| 70 expect = '' # Not honestly sure what this should be... | 76 expect = '' # Not honestly sure what this should be... |
| 71 test = 4 | 77 test = 4 |
| 72 self.assertEqual(self.repo[test]['.hgsvnexternals'].data(), expect) | 78 self.assertEqual(self.repo[test]['.hgsvnexternals'].data(), expect) |
| 79 | |
| 80 def test_push_single_dir(self): | |
| 81 # Tests simple pushing from default branch to a single dir repo | |
| 82 repo = self._load_fixture_and_fetch('branch_from_tag.svndump', | |
| 83 stupid=False, | |
| 84 layout='single', | |
| 85 subdir='') | |
| 86 def file_callback(repo, memctx, path): | |
| 87 if path == 'adding_file': | |
| 88 return context.memfilectx(path=path, | |
| 89 data='foo', | |
| 90 islink=False, | |
| 91 isexec=False, | |
| 92 copied=False) | |
| 93 raise IOError() | |
| 94 ctx = context.memctx(repo, | |
| 95 (repo['tip'].node(), node.nullid), | |
| 96 'automated test', | |
| 97 ['adding_file'], | |
| 98 file_callback, | |
| 99 'an_author', | |
| 100 '2009-10-19 18:49:30 -0500', | |
| 101 {'branch': 'default',}) | |
| 102 repo.commitctx(ctx) | |
| 103 hg.update(repo, repo['tip'].node()) | |
| 104 self.pushrevisions() | |
| 105 self.assertTrue('adding_file' in self.svnls('')) | |
| 106 | |
| 107 def test_push_single_dir_branch(self): | |
| 108 # Tests local branches pushing to a single dir repo. Creates a fork at | |
| 109 # tip. The default branch adds a file called default, while branch foo | |
| 110 # adds a file called foo, then tries to push the foo branch and default | |
| 111 # branch in that order. | |
| 112 repo = self._load_fixture_and_fetch('branch_from_tag.svndump', | |
| 113 stupid=False, | |
| 114 layout='single', | |
| 115 subdir='') | |
| 116 def file_callback(data): | |
| 117 def cb(repo, memctx, path): | |
| 118 if path == data: | |
| 119 return context.memfilectx(path=path, | |
| 120 data=data, | |
| 121 islink=False, | |
| 122 isexec=False, | |
| 123 copied=False) | |
| 124 raise IOError() | |
| 125 return cb | |
| 126 | |
| 127 def commit_to_branch(name, parent): | |
| 128 repo.commitctx(context.memctx(repo, | |
| 129 (parent, node.nullid), | |
| 130 'automated test (%s)' % name, | |
| 131 [name], | |
| 132 file_callback(name), | |
| 133 'an_author', | |
| 134 '2009-10-19 18:49:30 -0500', | |
| 135 {'branch': name,})) | |
| 136 | |
| 137 parent = repo['tip'].node() | |
| 138 commit_to_branch('default', parent) | |
| 139 commit_to_branch('foo', parent) | |
| 140 hg.update(repo, repo['foo'].node()) | |
| 141 self.pushrevisions() | |
| 142 repo = self.repo # repo is outdated after the rebase happens, refresh | |
| 143 self.assertTrue('foo' in self.svnls('')) | |
| 144 self.assertEqual(repo.branchtags().keys(), ['default']) | |
| 145 # Have to cross to another branch head, so hg.update doesn't work | |
| 146 commands.update(ui.ui(), | |
| 147 self.repo, | |
| 148 self.repo.branchheads('default')[1], | |
| 149 clean=True) | |
| 150 self.pushrevisions() | |
| 151 self.assertTrue('default' in self.svnls('')) | |
| 152 self.assertEquals(len(self.repo.branchheads('default')), 1) | |
| 153 |
