~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_repository.py

  • Committer: John Arbash Meinel
  • Date: 2010-01-17 15:07:39 UTC
  • mfrom: (4634.119.9 2.0)
  • mto: This revision was merged to the branch mainline in revision 4968.
  • Revision ID: john@arbash-meinel.com-20100117150739-h1tgxg82726yupxw
Merge bzr.stable, including the fix for bug #507566

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007, 2008, 2009 Canonical Ltd
 
1
# Copyright (C) 2006-2010 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
63
63
    revision as _mod_revision,
64
64
    symbol_versioning,
65
65
    upgrade,
 
66
    versionedfile,
66
67
    workingtree,
67
68
    )
68
69
from bzrlib.repofmt import (
1346
1347
        self.assertEqual({revs[-1]:(revs[-2],)}, r.get_parent_map([revs[-1]]))
1347
1348
        self.assertFalse(packs.reload_pack_names())
1348
1349
 
 
1350
    def test_reload_pack_names_preserves_pending(self):
 
1351
        # TODO: Update this to also test for pending-deleted names
 
1352
        tree, r, packs, revs = self.make_packs_and_alt_repo(write_lock=True)
 
1353
        # We will add one pack (via start_write_group + insert_record_stream),
 
1354
        # and remove another pack (via _remove_pack_from_memory)
 
1355
        orig_names = packs.names()
 
1356
        orig_at_load = packs._packs_at_load
 
1357
        to_remove_name = iter(orig_names).next()
 
1358
        r.start_write_group()
 
1359
        self.addCleanup(r.abort_write_group)
 
1360
        r.texts.insert_record_stream([versionedfile.FulltextContentFactory(
 
1361
            ('text', 'rev'), (), None, 'content\n')])
 
1362
        new_pack = packs._new_pack
 
1363
        self.assertTrue(new_pack.data_inserted())
 
1364
        new_pack.finish()
 
1365
        packs.allocate(new_pack)
 
1366
        packs._new_pack = None
 
1367
        removed_pack = packs.get_pack_by_name(to_remove_name)
 
1368
        packs._remove_pack_from_memory(removed_pack)
 
1369
        names = packs.names()
 
1370
        all_nodes, deleted_nodes, new_nodes = packs._diff_pack_names()
 
1371
        new_names = set([x[0][0] for x in new_nodes])
 
1372
        self.assertEqual(names, sorted([x[0][0] for x in all_nodes]))
 
1373
        self.assertEqual(set(names) - set(orig_names), new_names)
 
1374
        self.assertEqual(set([new_pack.name]), new_names)
 
1375
        self.assertEqual([to_remove_name],
 
1376
                         sorted([x[0][0] for x in deleted_nodes]))
 
1377
        packs.reload_pack_names()
 
1378
        reloaded_names = packs.names()
 
1379
        self.assertEqual(orig_at_load, packs._packs_at_load)
 
1380
        self.assertEqual(names, reloaded_names)
 
1381
        all_nodes, deleted_nodes, new_nodes = packs._diff_pack_names()
 
1382
        new_names = set([x[0][0] for x in new_nodes])
 
1383
        self.assertEqual(names, sorted([x[0][0] for x in all_nodes]))
 
1384
        self.assertEqual(set(names) - set(orig_names), new_names)
 
1385
        self.assertEqual(set([new_pack.name]), new_names)
 
1386
        self.assertEqual([to_remove_name],
 
1387
                         sorted([x[0][0] for x in deleted_nodes]))
 
1388
 
1349
1389
    def test_autopack_reloads_and_stops(self):
1350
1390
        tree, r, packs, revs = self.make_packs_and_alt_repo(write_lock=True)
1351
1391
        # After we have determined what needs to be autopacked, trigger a