13
14
# You should have received a copy of the GNU General Public License
14
15
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
18
"""Test the GitDir class"""
19
from bzrlib import bzrdir, errors
21
from bzrlib.plugins.git import dir, tests, workingtree
20
from dulwich.repo import Repo as GitRepo
28
from ...transport import get_transport
29
from ...tests import TestSkipped
24
38
class TestGitDir(tests.TestCaseInTempDir):
26
_test_needs_features = [tests.GitCommandFeature]
40
def test_get_head_branch_reference(self):
43
gd = controldir.ControlDir.open('.')
46
urlutils.local_path_to_url(os.path.abspath(".")),
47
gd.get_branch_reference())
28
49
def test_open_existing(self):
31
gd = bzrdir.BzrDir.open('.')
52
gd = controldir.ControlDir.open('.')
32
53
self.assertIsInstance(gd, dir.LocalGitDir)
55
def test_open_ref_parent(self):
57
cid = r.do_commit(message=b"message", ref=b'refs/heads/foo/bar')
58
gd = controldir.ControlDir.open('.')
59
self.assertRaises(errors.NotBranchError, gd.open_branch, 'foo')
34
61
def test_open_workingtree(self):
63
r.do_commit(message=b"message")
37
gd = bzrdir.BzrDir.open('.')
65
gd = controldir.ControlDir.open('.')
38
66
wt = gd.open_workingtree()
39
67
self.assertIsInstance(wt, workingtree.GitWorkingTree)
41
69
def test_open_workingtree_bare(self):
42
tests.run_git('--bare', 'init')
70
GitRepo.init_bare(".")
44
gd = bzrdir.BzrDir.open('.')
72
gd = controldir.ControlDir.open('.')
45
73
self.assertRaises(errors.NoWorkingTree, gd.open_workingtree)
48
class TestGitDirFormat(tests.TestCaseInTempDir):
50
_test_needs_features = [tests.GitCommandFeature]
75
def test_git_file(self):
76
gitrepo = GitRepo.init("blah", mkdir=True)
77
self.build_tree_contents(
78
[('foo/', ), ('foo/.git', b'gitdir: ../blah/.git\n')])
80
gd = controldir.ControlDir.open('foo')
81
self.assertEqual(gd.control_url.rstrip('/'),
82
urlutils.local_path_to_url(os.path.abspath(gitrepo.controldir())))
84
def test_shared_repository(self):
85
t = get_transport('.')
87
errors.SharedRepositoriesUnsupported,
88
dir.LocalGitControlDirFormat().initialize_on_transport_ex, t,
92
class TestGitDirFormat(tests.TestCase):
53
95
super(TestGitDirFormat, self).setUp()
54
self.format = dir.LocalGitBzrDirFormat()
96
self.format = dir.LocalGitControlDirFormat()
56
98
def test_get_format_description(self):
57
self.assertEquals("Local Git Repository",
58
self.format.get_format_description())
99
self.assertEqual("Local Git Repository",
100
self.format.get_format_description())
103
format2 = dir.LocalGitControlDirFormat()
104
self.assertEqual(self.format, format2)
105
self.assertEqual(self.format, self.format)
106
bzr_format = controldir.format_registry.make_controldir("default")
107
self.assertNotEqual(self.format, bzr_format)