734
734
# the ordering here is to make a tree so that dumb searches have
735
735
# more changes to muck up.
737
class InstrumentedProgress(progress.DummyProgress):
737
class InstrumentedProgress(progress.ProgressTask):
739
739
def __init__(self):
741
progress.DummyProgress.__init__(self)
740
progress.ProgressTask.__init__(self)
742
741
self.updates = []
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)
1476
1475
def get_simple_key(self, suffix):
1581
1580
# All texts should be output.
1582
1581
self.assertEqual(set(keys), seen)
1583
def test_clear_cache(self):
1584
files = self.get_versionedfiles()
1584
1587
def test_construct(self):
1585
1588
"""Each parameterised test can be constructed on a transport."""
1586
1589
files = self.get_versionedfiles()
2435
2438
self.assertIdenticalVersionedFile(source, files)
2440
def test_insert_record_stream_long_parent_chain_out_of_order(self):
2441
"""An out of order stream can either error or work."""
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')
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)
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.
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()
2466
files.insert_record_stream(deltas)
2467
except RevisionNotPresent:
2468
# Must not have corrupted the file.
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)
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.
2510
class InstrumentedProgress(progress.DummyProgress):
2550
class InstrumentedProgress(progress.ProgressTask):
2512
2552
def __init__(self):
2514
progress.DummyProgress.__init__(self)
2553
progress.ProgressTask.__init__(self)
2515
2554
self.updates = []
2517
2556
def update(self, msg=None, current=None, total=None):