239
239
self.assertTrue(large_pack_name in pack_names)
241
241
def test_commit_write_group_returns_new_pack_names(self):
242
# This test doesn't need real disk.
243
self.vfs_transport_factory = tests.MemoryServer
242
244
format = self.get_format()
243
tree = self.make_branch_and_tree('foo', format=format)
244
tree.commit('first post')
245
repo = tree.branch.repository
245
repo = self.make_repository('foo', format=format)
246
246
repo.lock_write()
248
repo.start_write_group()
250
inv = inventory.Inventory(revision_id="A")
251
inv.root.revision = "A"
252
repo.texts.add_lines((inv.root.file_id, "A"), [], [])
253
rev = _mod_revision.Revision(timestamp=0, timezone=None,
254
committer="Foo Bar <foo@example.com>", message="Message",
257
repo.add_revision("A", rev, inv=inv)
259
repo.abort_write_group()
262
old_names = repo._pack_collection._names.keys()
263
result = repo.commit_write_group()
264
cur_names = repo._pack_collection._names.keys()
265
new_names = list(set(cur_names) - set(old_names))
266
self.assertEqual(new_names, result)
248
# All current pack repository styles autopack at 10 revisions; and
249
# autopack as well as regular commit write group needs to return
250
# the new pack name. Looping is a little ugly, but we don't have a
251
# clean way to test both the autopack logic and the normal code
252
# path without doing this loop.
253
for pos in range(10):
255
repo.start_write_group()
257
inv = inventory.Inventory(revision_id=revid)
258
inv.root.revision = revid
259
repo.texts.add_lines((inv.root.file_id, revid), [], [])
260
rev = _mod_revision.Revision(timestamp=0, timezone=None,
261
committer="Foo Bar <foo@example.com>", message="Message",
264
repo.add_revision(revid, rev, inv=inv)
266
repo.abort_write_group()
269
old_names = repo._pack_collection._names.keys()
270
result = repo.commit_write_group()
271
cur_names = repo._pack_collection._names.keys()
272
new_names = list(set(cur_names) - set(old_names))
273
self.assertEqual(new_names, result)