Merge lp:~jelmer/brz/custom-revprops into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Merged at revision: 6855
Proposed branch: lp:~jelmer/brz/custom-revprops
Merge into: lp:brz
Diff against target: 187 lines (+45/-20)
6 files modified
breezy/repository.py (+2/-0)
breezy/tests/per_repository/test_commit_builder.py (+5/-0)
breezy/tests/per_repository/test_repository.py (+5/-0)
breezy/tests/per_repository/test_revision.py (+31/-18)
breezy/tests/per_workingtree/test_get_file_mtime.py (+1/-1)
breezy/tree.py (+1/-1)
To merge this branch: bzr merge lp:~jelmer/brz/custom-revprops
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+337508@code.launchpad.net

Description of the change

Allow formats to not support custom revision properties.

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

Okay, seems reasonable.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/repository.py'
2--- breezy/repository.py 2017-11-21 21:17:13 +0000
3+++ breezy/repository.py 2018-02-10 15:09:07 +0000
4@@ -1300,6 +1300,8 @@
5 supports_storing_branch_nick = True
6 # Does the format support overriding the transport to use
7 supports_overriding_transport = True
8+ # Does the format support setting custom revision properties?
9+ supports_custom_revision_properties = True
10
11 def __repr__(self):
12 return "%s()" % self.__class__.__name__
13
14=== modified file 'breezy/tests/per_repository/test_commit_builder.py'
15--- breezy/tests/per_repository/test_commit_builder.py 2018-01-22 01:01:48 +0000
16+++ breezy/tests/per_repository/test_commit_builder.py 2018-02-10 15:09:07 +0000
17@@ -449,6 +449,7 @@
18 expect_fs_hash=False, mini_commit=None):
19 tree.add([name])
20 file_id = tree.path2id(name)
21+ self.assertIsNot(None, file_id)
22 self._commit_change_check_changed(
23 tree, name, file_id,
24 changer, expect_fs_hash=expect_fs_hash, mini_commit=mini_commit)
25@@ -500,6 +501,7 @@
26 result = list(builder.record_iter_changes(tree, parent_ids[0],
27 changes))
28 file_id = tree.path2id(new_name)
29+ self.assertIsNot(None, file_id)
30 if expect_fs_hash:
31 tree_file_stat = tree.get_file_with_stat(new_name)
32 tree_file_stat[0].close()
33@@ -598,6 +600,7 @@
34 """Do a rename in both trees."""
35 rev1, tree2 = self._commit_sprout(tree1, name)
36 file_id = tree2.path2id(name)
37+ self.assertIsNot(None, file_id)
38 # change both sides equally
39 rev2 = self._rename_in_tree(tree1, name)
40 rev3 = self._rename_in_tree(tree2, name)
41@@ -643,6 +646,7 @@
42 # Part 1: change in the merged branch.
43 rev1, tree2 = self._commit_sprout(tree1, name)
44 file_id = tree2.path2id(name)
45+ self.assertIsNot(None, file_id)
46 # change on the other side to merge back
47 rev2 = self._rename_in_tree(tree2, name)
48 tree1.merge_from_branch(tree2.branch)
49@@ -676,6 +680,7 @@
50 make('t2/name')
51 tree2.add(['name'])
52 file_id = tree2.path2id('name')
53+ self.assertIsNot(None, file_id)
54 rev2 = tree2.commit('')
55 tree1.merge_from_branch(tree2.branch)
56 rev3 = mini_commit(tree1, None, 'name', False)
57
58=== modified file 'breezy/tests/per_repository/test_repository.py'
59--- breezy/tests/per_repository/test_repository.py 2018-01-12 08:52:43 +0000
60+++ breezy/tests/per_repository/test_repository.py 2018-02-10 15:09:07 +0000
61@@ -122,6 +122,11 @@
62 self.assertFormatAttribute('supports_storing_branch_nick',
63 (True, False))
64
65+ def test_attribute_format_supports_custom_revision_properties(self):
66+ self.assertFormatAttribute(
67+ 'supports_custom_revision_properties',
68+ (True, False))
69+
70 def test_attribute_format_supports_overriding_transport(self):
71 repo = self.make_repository('repo')
72 self.assertIn(repo._format.supports_overriding_transport, (True, False))
73
74=== modified file 'breezy/tests/per_repository/test_revision.py'
75--- breezy/tests/per_repository/test_revision.py 2017-11-21 00:34:39 +0000
76+++ breezy/tests/per_repository/test_revision.py 2018-02-10 15:09:07 +0000
77@@ -16,6 +16,7 @@
78
79 """Tests for revision properties."""
80
81+from breezy.tests import TestNotApplicable
82 from breezy.tests.per_repository import (
83 TestCaseWithRepository,
84 )
85@@ -27,30 +28,40 @@
86 wt = self.make_branch_and_tree('.')
87 b = wt.branch
88 b.nick = 'Nicholas'
89- props = dict(flavor='choc-mint',
90- condiment='orange\n mint\n\tcandy',
91- empty='',
92- non_ascii=u'\xb5')
93+ if b.repository._format.supports_custom_revision_properties:
94+ props = dict(flavor='choc-mint',
95+ condiment='orange\n mint\n\tcandy',
96+ empty='',
97+ non_ascii=u'\xb5')
98+ else:
99+ props = {}
100 rev1 = wt.commit(message='initial null commit',
101 revprops=props,
102 allow_pointless=True)
103 rev = b.repository.get_revision(rev1)
104- self.assertTrue('flavor' in rev.properties)
105- self.assertEqual(rev.properties['flavor'], 'choc-mint')
106- expected_revprops = {
107- 'condiment': 'orange\n mint\n\tcandy',
108- 'empty': '',
109- 'flavor': 'choc-mint',
110- 'non_ascii': u'\xb5',
111- }
112+ if b.repository._format.supports_custom_revision_properties:
113+ self.assertTrue('flavor' in rev.properties)
114+ self.assertEqual(rev.properties['flavor'], 'choc-mint')
115+ expected_revprops = {
116+ 'condiment': 'orange\n mint\n\tcandy',
117+ 'empty': '',
118+ 'flavor': 'choc-mint',
119+ 'non_ascii': u'\xb5',
120+ }
121+ else:
122+ expected_revprops = {}
123 if b.repository._format.supports_storing_branch_nick:
124 expected_revprops['branch-nick'] = 'Nicholas'
125- self.assertEqual(expected_revprops, rev.properties)
126+ for name, value in expected_revprops.items():
127+ self.assertEqual(rev.properties[name], value)
128
129 def test_invalid_revprops(self):
130 """Invalid revision properties"""
131 wt = self.make_branch_and_tree('.')
132 b = wt.branch
133+ if not b.repository._format.supports_custom_revision_properties:
134+ raise TestNotApplicable(
135+ 'format does not support custom revision properties')
136 self.assertRaises(ValueError,
137 wt.commit,
138 message='invalid',
139@@ -69,15 +80,17 @@
140 same as the ones that go in.
141 """
142 tree1 = self.make_branch_and_tree("br1")
143-
144- # create a revision
145- rev1 = tree1.commit(message="quux", allow_pointless=True,
146- committer="jaq",
147+ if tree1.branch.repository._format.supports_custom_revision_properties:
148 revprops={'empty':'',
149 'value':'one',
150 'unicode':u'\xb5',
151 'multiline':'foo\nbar\n\n'
152- })
153+ }
154+ else:
155+ revprops = {}
156+ # create a revision
157+ rev1 = tree1.commit(message="quux", allow_pointless=True,
158+ committer="jaq", revprops=revprops)
159 self.assertEqual(tree1.branch.last_revision(), rev1)
160 rev_a = tree1.branch.repository.get_revision(
161 tree1.branch.last_revision())
162
163=== modified file 'breezy/tests/per_workingtree/test_get_file_mtime.py'
164--- breezy/tests/per_workingtree/test_get_file_mtime.py 2018-01-12 08:52:43 +0000
165+++ breezy/tests/per_workingtree/test_get_file_mtime.py 2018-02-10 15:09:07 +0000
166@@ -92,7 +92,7 @@
167 self.build_tree(['tree/d/', 'tree/d/a'])
168 tree.add(['d', 'd/a'])
169 a_id = tree.path2id('d/a')
170- tree.commit('1', rev_id='rev-1')
171+ rev_1 = tree.commit('1')
172
173 tree.rename_one('d', 'e')
174
175
176=== modified file 'breezy/tree.py'
177--- breezy/tree.py 2018-01-12 08:52:43 +0000
178+++ breezy/tree.py 2018-02-10 15:09:07 +0000
179@@ -1082,7 +1082,7 @@
180 """
181 try:
182 inventory = tree.root_inventory
183- except NotImplementedError:
184+ except (AttributeError, NotImplementedError):
185 # No inventory available.
186 try:
187 iterator = tree.iter_entries_by_dir(specific_file_ids=[file_id])

Subscribers

People subscribed via source and target branches