87
103
job.add_files(charm_data)
88
104
self.assertIn('files', charm_data)
89
105
self.assertIn('icon', charm_data)
110
temp_home = mkdtemp()
112
old_cwd = os.getcwd()
115
with patch.dict(os.environ, values={'HOME': temp_home},
121
shutil.rmtree(temp_home)
125
def write_locked(lockable):
126
lockable.lock_write()
133
class TestChangelogBzrHandling(TestCase):
136
super(TestChangelogBzrHandling)
137
self.use_context(bzr_isolation())
140
def num_commit(tree, num):
141
return tree.commit("revision %d" % num, committer=JRH)
143
def make_locked_tree(self):
144
tree = BzrDir.create_standalone_workingtree('tree')
145
return self.use_context(write_locked(tree))
147
def test_get_revisions(self):
148
tree = self.make_locked_tree()
149
job = ChangelogIngestJob()
150
revisions = job.get_revisions(tree.branch)
151
self.assertEqual([], revisions)
153
self.num_commit(tree, x)
154
revisions = job.get_revisions(tree.branch)
155
self.assertEqual(["revision %d" % num for num in range(8, -1, -1)],
156
[revision.message for revision in revisions])
157
self.num_commit(tree, 9)
158
revisions = job.get_revisions(tree.branch)
159
self.assertEqual(["revision %d" % num for num in range(9, -1, -1)],
160
[revision.message for revision in revisions])
161
self.num_commit(tree, 10)
162
revisions = job.get_revisions(tree.branch)
163
self.assertEqual(["revision %d" % num for num in range(10, 0, -1)],
164
[revision.message for revision in revisions])
165
self.num_commit(tree, 11)
166
revisions = job.get_revisions(tree.branch)
167
self.assertEqual(["revision %d" % num for num in range(11, 1, -1)],
168
[revision.message for revision in revisions])
170
def test_get_revisions_honours_limit(self):
171
tree = self.make_locked_tree()
173
self.num_commit(tree, x)
174
revisions = ChangelogIngestJob(limit=5).get_revisions(tree.branch)
175
self.assertEqual(5, len(revisions))
176
revisions = ChangelogIngestJob(limit=20).get_revisions(tree.branch)
177
self.assertEqual(15, len(revisions))
179
def test_get_revisions_honours_since(self):
180
tree = self.make_locked_tree()
181
tree.commit('', timestamp=0, committer='')
182
tree.commit('', timestamp=1, committer='')
183
tree.commit('', timestamp=2, committer='')
184
job = ChangelogIngestJob(since=0, limit=0)
185
revisions = job.get_revisions(tree.branch)
186
self.assertEqual(3, len(revisions))
187
job = ChangelogIngestJob(since=1, limit=0)
188
revisions = job.get_revisions(tree.branch)
189
self.assertEqual(2, len(revisions))
191
def test_limit_overrides_since(self):
192
tree = self.make_locked_tree()
193
tree.commit('', timestamp=0, committer='')
194
tree.commit('', timestamp=1, committer='')
195
tree.commit('', timestamp=2, committer='')
196
job = ChangelogIngestJob(since=1, limit=3)
197
revisions = job.get_revisions(tree.branch)
198
self.assertEqual(3, len(revisions))
200
def test_rev_info(self):
201
tree = self.make_locked_tree()
202
revision_id = tree.commit('message1', committer=JRH)
203
rev = tree.branch.repository.get_revision(revision_id)
205
rev_info = ChangelogIngestJob._rev_info(rev, tree.branch)
210
'message': 'message1',
215
def get_rev_info(branch, revision_id):
216
rev = branch.repository.get_revision(revision_id)
217
return ChangelogIngestJob._rev_info(rev, branch)
219
def test_rev_info_supplied_authors(self):
220
tree = self.make_locked_tree()
221
revision_id = tree.commit(
222
'message1', committer=JRH, authors=[YRH, ZRH])
223
rev_info = self.get_rev_info(tree.branch, revision_id)
224
self.assertEqual([YRH, ZRH], rev_info['authors'])
225
self.assertEqual(JRH, rev_info['committer'])
227
def test_get_changes(self):
228
tree = self.make_locked_tree()
229
first_id = self.num_commit(tree, 1)
230
job = ChangelogIngestJob()
231
charm_data = job.get_changes('tree')
232
self.assertItemsEqual(['changes', 'first_change', 'last_change'],
234
self.assertEqual(charm_data['first_change'], charm_data['last_change'])
235
self.assertEqual([charm_data['first_change']], charm_data['changes'])
236
for num in range(1, 11):
237
self.num_commit(tree, 1)
238
charm_data = job.get_changes('tree')
239
self.assertNotEqual(charm_data['first_change'],
240
charm_data['last_change'])
241
self.assertEqual(charm_data['last_change'], charm_data['changes'][0])
242
self.assertNotEqual(charm_data['first_change'],
243
charm_data['changes'][-1])
244
self.assertEqual(self.get_rev_info(tree.branch, first_id),
245
charm_data['first_change'])
247
def test_get_changes_no_revisions(self):
248
self.make_locked_tree()
249
charm_data = ChangelogIngestJob().get_changes('tree')
250
self.assertEqual([], charm_data['changes'])
251
self.assertIs(None, charm_data['first_change'])
252
self.assertIs(None, charm_data['last_change'])