/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to tests/test_branch.py

  • Committer: Robert Collins
  • Date: 2007-10-05 02:41:37 UTC
  • mto: (2592.3.166 repository)
  • mto: This revision was merged to the branch mainline in revision 2896.
  • Revision ID: robertc@robertcollins.net-20071005024137-kn7brcu07nu8cwl1
* The class ``bzrlib.repofmt.knitrepo.KnitRepository3`` has been folded into
  ``KnitRepository`` by parameters to the constructor. (Robert Collins)
* ``bzrlib.xml_serializer.Serializer`` is now responsible for checking that
  mandatory attributes are present on serialisation and deserialisation.
  This fixes some holes in API usage and allows better separation between
  physical storage and object serialisation. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007 Canonical Ltd
2
 
#
3
 
# This program is free software; you can redistribute it and/or modify
4
 
# it under the terms of the GNU General Public License as published by
5
 
# the Free Software Foundation; either version 2 of the License, or
6
 
# (at your option) any later version.
7
 
#
8
 
# This program is distributed in the hope that it will be useful,
9
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
# GNU General Public License for more details.
12
 
#
13
 
# You should have received a copy of the GNU General Public License
14
 
# 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
 
 
17
 
"""Tests for interfacing with a Git Branch"""
18
 
 
19
 
import dulwich as git
20
 
import os
21
 
 
22
 
from bzrlib import (
23
 
    revision,
24
 
    )
25
 
from bzrlib.branch import (
26
 
    Branch,
27
 
    )
28
 
from bzrlib.bzrdir import (
29
 
    BzrDir,
30
 
    )
31
 
from bzrlib.repository import (
32
 
    Repository,
33
 
    )
34
 
 
35
 
from bzrlib.plugins.git import (
36
 
    branch,
37
 
    tests,
38
 
    )
39
 
from bzrlib.plugins.git.mapping import default_mapping
40
 
 
41
 
 
42
 
class TestGitBranch(tests.TestCaseInTempDir):
43
 
 
44
 
    _test_needs_features = [tests.GitCommandFeature]
45
 
 
46
 
    def test_open_existing(self):
47
 
        tests.run_git('init')
48
 
 
49
 
        thebranch = Branch.open('.')
50
 
        self.assertIsInstance(thebranch, branch.GitBranch)
51
 
 
52
 
    def test_last_revision_is_null(self):
53
 
        tests.run_git('init')
54
 
 
55
 
        thebranch = Branch.open('.')
56
 
        self.assertEqual(revision.NULL_REVISION, thebranch.last_revision())
57
 
        self.assertEqual((0, revision.NULL_REVISION),
58
 
                         thebranch.last_revision_info())
59
 
 
60
 
    def simple_commit_a(self):
61
 
        tests.run_git('init')
62
 
        self.build_tree(['a'])
63
 
        tests.run_git('add', 'a')
64
 
        tests.run_git('commit', '-m', 'a')
65
 
 
66
 
    def test_last_revision_is_valid(self):
67
 
        self.simple_commit_a()
68
 
        head = tests.run_git('rev-parse', 'HEAD').strip()
69
 
 
70
 
        thebranch = Branch.open('.')
71
 
        self.assertEqual(default_mapping.revision_id_foreign_to_bzr(head),
72
 
                         thebranch.last_revision())
73
 
 
74
 
    def test_revision_history(self):
75
 
        self.simple_commit_a()
76
 
        reva = tests.run_git('rev-parse', 'HEAD').strip()
77
 
        self.build_tree(['b'])
78
 
        tests.run_git('add', 'b')
79
 
        tests.run_git('commit', '-m', 'b')
80
 
        revb = tests.run_git('rev-parse', 'HEAD').strip()
81
 
 
82
 
        thebranch = Branch.open('.')
83
 
        self.assertEqual([default_mapping.revision_id_foreign_to_bzr(r) for r in (reva, revb)],
84
 
                         thebranch.revision_history())
85
 
 
86
 
    def test_tag_annotated(self):
87
 
        self.simple_commit_a()
88
 
        reva = tests.run_git('rev-parse', 'HEAD').strip()
89
 
        tests.run_git('tag', '-a', '-m', 'add tag', 'foo')
90
 
        thebranch = Branch.open('.')
91
 
        self.assertEquals({"foo": default_mapping.revision_id_foreign_to_bzr(reva)},
92
 
                          thebranch.tags.get_tag_dict())
93
 
 
94
 
    def test_tag(self):
95
 
        self.simple_commit_a()
96
 
        reva = tests.run_git('rev-parse', 'HEAD').strip()
97
 
        tests.run_git('tag', '-m', 'add tag', 'foo')
98
 
        thebranch = Branch.open('.')
99
 
        self.assertEquals({"foo": default_mapping.revision_id_foreign_to_bzr(reva)},
100
 
                          thebranch.tags.get_tag_dict())
101
 
 
102
 
        
103
 
 
104
 
class TestWithGitBranch(tests.TestCaseWithTransport):
105
 
 
106
 
    def setUp(self):
107
 
        tests.TestCaseWithTransport.setUp(self)
108
 
        git.repo.Repo.create(self.test_dir)
109
 
        self.git_branch = Branch.open(self.test_dir)
110
 
 
111
 
    def test_get_parent(self):
112
 
        self.assertIs(None, self.git_branch.get_parent())
113
 
 
114
 
    def test_get_stacked_on_url(self):
115
 
        self.assertIs(None, self.git_branch.get_stacked_on_url())
116
 
 
117
 
    def test_get_physical_lock_status(self):
118
 
        self.assertFalse(self.git_branch.get_physical_lock_status())
119
 
 
120
 
 
121
 
class TestGitBranchFormat(tests.TestCase):
122
 
 
123
 
    def setUp(self):
124
 
        super(TestGitBranchFormat, self).setUp()
125
 
        self.format = branch.GitBranchFormat()
126
 
 
127
 
    def test_get_format_description(self):
128
 
        self.assertEquals("Git Branch", self.format.get_format_description())
129
 
 
130
 
 
131
 
 
132
 
class BranchTests(tests.TestCaseInTempDir):
133
 
 
134
 
    def make_onerev_branch(self):
135
 
        os.mkdir("d")
136
 
        os.chdir("d")
137
 
        tests.run_git("init")
138
 
        bb = tests.GitBranchBuilder()
139
 
        bb.set_file("foobar", "foo\nbar\n", False)
140
 
        mark = bb.commit("Somebody <somebody@someorg.org>", "mymsg")
141
 
        gitsha = bb.finish()[mark]
142
 
        os.chdir("..")
143
 
        return "d", gitsha
144
 
 
145
 
    def clone_git_branch(self, from_url, to_url):
146
 
        from_dir = BzrDir.open(from_url)
147
 
        to_dir = from_dir.sprout(to_url)
148
 
        return to_dir.open_branch()
149
 
 
150
 
    def test_single_rev(self):
151
 
        path, gitsha = self.make_onerev_branch()
152
 
        oldrepo = Repository.open(path)
153
 
        revid = oldrepo.get_mapping().revision_id_foreign_to_bzr(gitsha)
154
 
        newbranch = self.clone_git_branch(path, "f")
155
 
        self.assertEquals([revid], newbranch.repository.all_revision_ids())
156
 
 
157
 
    def test_sprouted_tags(self):
158
 
        path, gitsha = self.make_onerev_branch()
159
 
        os.chdir(path)
160
 
        tests.run_git("tag", "lala")
161
 
        os.chdir(self.test_dir)
162
 
        oldrepo = Repository.open(path)
163
 
        revid = oldrepo.get_mapping().revision_id_foreign_to_bzr(gitsha)
164
 
        newbranch = self.clone_git_branch(path, "f")
165
 
        self.assertEquals({"lala": revid}, newbranch.tags.get_tag_dict())
166
 
        self.assertEquals([revid], newbranch.repository.all_revision_ids())