~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_versionedfile.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-03-02 08:49:07 UTC
  • mfrom: (5067.1.1 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20100302084907-z4r0yoa4ldspjz82
(vila) Resolve --take-this or --take-other correctly rename kept file

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2009 Canonical Ltd
 
1
# Copyright (C) 2006-2010 Canonical Ltd
2
2
#
3
3
# Authors:
4
4
#   Johan Rydberg <jrydberg@gnu.org>
734
734
        # the ordering here is to make a tree so that dumb searches have
735
735
        # more changes to muck up.
736
736
 
737
 
        class InstrumentedProgress(progress.DummyProgress):
 
737
        class InstrumentedProgress(progress.ProgressTask):
738
738
 
739
739
            def __init__(self):
740
 
 
741
 
                progress.DummyProgress.__init__(self)
 
740
                progress.ProgressTask.__init__(self)
742
741
                self.updates = []
743
742
 
744
743
            def update(self, msg=None, current=None, total=None):
1470
1469
            transport.mkdir('.')
1471
1470
        files = self.factory(transport)
1472
1471
        if self.cleanup is not None:
1473
 
            self.addCleanup(lambda:self.cleanup(files))
 
1472
            self.addCleanup(self.cleanup, files)
1474
1473
        return files
1475
1474
 
1476
1475
    def get_simple_key(self, suffix):
1581
1580
        # All texts should be output.
1582
1581
        self.assertEqual(set(keys), seen)
1583
1582
 
 
1583
    def test_clear_cache(self):
 
1584
        files = self.get_versionedfiles()
 
1585
        files.clear_cache()
 
1586
 
1584
1587
    def test_construct(self):
1585
1588
        """Each parameterised test can be constructed on a transport."""
1586
1589
        files = self.get_versionedfiles()
2434
2437
        else:
2435
2438
            self.assertIdenticalVersionedFile(source, files)
2436
2439
 
 
2440
    def test_insert_record_stream_long_parent_chain_out_of_order(self):
 
2441
        """An out of order stream can either error or work."""
 
2442
        if not self.graph:
 
2443
            raise TestNotApplicable('ancestry info only relevant with graph.')
 
2444
        # Create a reasonably long chain of records based on each other, where
 
2445
        # most will be deltas.
 
2446
        source = self.get_versionedfiles('source')
 
2447
        parents = ()
 
2448
        keys = []
 
2449
        content = [('same same %d\n' % n) for n in range(500)]
 
2450
        for letter in 'abcdefghijklmnopqrstuvwxyz':
 
2451
            key = ('key-' + letter,)
 
2452
            if self.key_length == 2:
 
2453
                key = ('prefix',) + key
 
2454
            content.append('content for ' + letter + '\n')
 
2455
            source.add_lines(key, parents, content)
 
2456
            keys.append(key)
 
2457
            parents = (key,)
 
2458
        # Create a stream of these records, excluding the first record that the
 
2459
        # rest ultimately depend upon, and insert it into a new vf.
 
2460
        streams = []
 
2461
        for key in reversed(keys):
 
2462
            streams.append(source.get_record_stream([key], 'unordered', False))
 
2463
        deltas = chain(*streams[:-1])
 
2464
        files = self.get_versionedfiles()
 
2465
        try:
 
2466
            files.insert_record_stream(deltas)
 
2467
        except RevisionNotPresent:
 
2468
            # Must not have corrupted the file.
 
2469
            files.check()
 
2470
        else:
 
2471
            # Must only report either just the first key as a missing parent,
 
2472
            # no key as missing (for nodelta scenarios).
 
2473
            missing = set(files.get_missing_compression_parent_keys())
 
2474
            missing.discard(keys[0])
 
2475
            self.assertEqual(set(), missing)
 
2476
 
2437
2477
    def get_knit_delta_source(self):
2438
2478
        """Get a source that can produce a stream with knit delta records,
2439
2479
        regardless of this test's scenario.
2507
2547
        # the ordering here is to make a tree so that dumb searches have
2508
2548
        # more changes to muck up.
2509
2549
 
2510
 
        class InstrumentedProgress(progress.DummyProgress):
 
2550
        class InstrumentedProgress(progress.ProgressTask):
2511
2551
 
2512
2552
            def __init__(self):
2513
 
 
2514
 
                progress.DummyProgress.__init__(self)
 
2553
                progress.ProgressTask.__init__(self)
2515
2554
                self.updates = []
2516
2555
 
2517
2556
            def update(self, msg=None, current=None, total=None):