26
26
class TestCommitBuilder(TestCaseWithRepository):
28
28
def test_get_commit_builder(self):
29
tree = self.make_branch_and_tree(".")
30
builder = tree.branch.get_commit_builder([])
29
branch = self.make_branch('.')
30
branch.repository.lock_write()
31
builder = branch.repository.get_commit_builder(
32
branch, [], branch.get_config())
31
33
self.assertIsInstance(builder, CommitBuilder)
34
branch.repository.commit_write_group()
35
branch.repository.unlock()
33
37
def record_root(self, builder, tree):
34
38
if builder.record_root_entry is True:
44
48
def test_finish_inventory(self):
45
49
tree = self.make_branch_and_tree(".")
46
builder = tree.branch.get_commit_builder([])
47
self.record_root(builder, tree)
48
builder.finish_inventory()
52
builder = tree.branch.get_commit_builder([])
53
self.record_root(builder, tree)
54
builder.finish_inventory()
55
tree.branch.repository.commit_write_group()
50
59
def test_commit_message(self):
51
60
tree = self.make_branch_and_tree(".")
52
builder = tree.branch.get_commit_builder([])
53
self.record_root(builder, tree)
54
builder.finish_inventory()
55
rev_id = builder.commit('foo bar blah')
63
builder = tree.branch.get_commit_builder([])
64
self.record_root(builder, tree)
65
builder.finish_inventory()
66
rev_id = builder.commit('foo bar blah')
56
69
rev = tree.branch.repository.get_revision(rev_id)
57
70
self.assertEqual('foo bar blah', rev.message)
59
72
def test_commit_with_revision_id(self):
60
73
tree = self.make_branch_and_tree(".")
61
# use a unicode revision id to test more corner cases.
62
# The repository layer is meant to handle this.
63
revision_id = u'\xc8abc'.encode('utf8')
76
# use a unicode revision id to test more corner cases.
77
# The repository layer is meant to handle this.
78
revision_id = u'\xc8abc'.encode('utf8')
66
builder = tree.branch.get_commit_builder([],
67
revision_id=revision_id)
68
except NonAsciiRevisionId:
70
builder = tree.branch.get_commit_builder([],
71
revision_id=revision_id)
72
except CannotSetRevisionId:
73
# This format doesn't support supplied revision ids
75
self.record_root(builder, tree)
76
builder.finish_inventory()
77
self.assertEqual(revision_id, builder.commit('foo bar'))
81
builder = tree.branch.get_commit_builder([],
82
revision_id=revision_id)
83
except NonAsciiRevisionId:
85
builder = tree.branch.get_commit_builder([],
86
revision_id=revision_id)
87
except CannotSetRevisionId:
88
# This format doesn't support supplied revision ids
90
self.record_root(builder, tree)
91
builder.finish_inventory()
92
self.assertEqual(revision_id, builder.commit('foo bar'))
78
95
self.assertTrue(tree.branch.repository.has_revision(revision_id))
79
96
# the revision id must be set on the inventory when saving it. This
80
97
# does not precisely test that - a repository that wants to can add it
86
103
def test_commit_without_root(self):
87
104
"""This should cause a deprecation warning, not an assertion failure"""
88
105
tree = self.make_branch_and_tree(".")
89
if tree.branch.repository.supports_rich_root():
90
raise tests.TestSkipped('Format requires root')
91
self.build_tree(['foo'])
92
tree.add('foo', 'foo-id')
108
if tree.branch.repository.supports_rich_root():
109
raise tests.TestSkipped('Format requires root')
110
self.build_tree(['foo'])
111
tree.add('foo', 'foo-id')
95
112
entry = tree.inventory['foo-id']
96
113
builder = tree.branch.get_commit_builder([])
97
114
self.callDeprecated(['Root entry should be supplied to'
105
122
def test_commit(self):
106
123
tree = self.make_branch_and_tree(".")
107
builder = tree.branch.get_commit_builder([])
108
self.record_root(builder, tree)
109
builder.finish_inventory()
110
rev_id = builder.commit('foo bar')
126
builder = tree.branch.get_commit_builder([])
127
self.record_root(builder, tree)
128
builder.finish_inventory()
129
rev_id = builder.commit('foo bar')
111
132
self.assertNotEqual(None, rev_id)
112
133
self.assertTrue(tree.branch.repository.has_revision(rev_id))
113
134
# the revision id must be set on the inventory when saving it. This does not
118
139
def test_revision_tree(self):
119
140
tree = self.make_branch_and_tree(".")
120
builder = tree.branch.get_commit_builder([])
121
self.record_root(builder, tree)
122
builder.finish_inventory()
123
rev_id = builder.commit('foo bar')
143
builder = tree.branch.get_commit_builder([])
144
self.record_root(builder, tree)
145
builder.finish_inventory()
146
rev_id = builder.commit('foo bar')
124
149
rev_tree = builder.revision_tree()
125
150
# Just a couple simple tests to ensure that it actually follows
126
151
# the RevisionTree api.