1472
1472
self.addCleanup(lambda:self.cleanup(files))
1475
def get_simple_key(self, suffix):
1476
"""Return a key for the object under test."""
1477
if self.key_length == 1:
1480
return ('FileA',) + (suffix,)
1482
def test_add_lines(self):
1483
f = self.get_versionedfiles()
1484
key0 = self.get_simple_key('r0')
1485
key1 = self.get_simple_key('r1')
1486
key2 = self.get_simple_key('r2')
1487
keyf = self.get_simple_key('foo')
1488
f.add_lines(key0, [], ['a\n', 'b\n'])
1490
f.add_lines(key1, [key0], ['b\n', 'c\n'])
1492
f.add_lines(key1, [], ['b\n', 'c\n'])
1494
self.assertTrue(key0 in keys)
1495
self.assertTrue(key1 in keys)
1497
for record in f.get_record_stream([key0, key1], 'unordered', True):
1498
records.append((record.key, record.get_bytes_as('fulltext')))
1500
self.assertEqual([(key0, 'a\nb\n'), (key1, 'b\nc\n')], records)
1502
def test__add_text(self):
1503
f = self.get_versionedfiles()
1504
key0 = self.get_simple_key('r0')
1505
key1 = self.get_simple_key('r1')
1506
key2 = self.get_simple_key('r2')
1507
keyf = self.get_simple_key('foo')
1508
f._add_text(key0, [], 'a\nb\n')
1510
f._add_text(key1, [key0], 'b\nc\n')
1512
f._add_text(key1, [], 'b\nc\n')
1514
self.assertTrue(key0 in keys)
1515
self.assertTrue(key1 in keys)
1517
for record in f.get_record_stream([key0, key1], 'unordered', True):
1518
records.append((record.key, record.get_bytes_as('fulltext')))
1520
self.assertEqual([(key0, 'a\nb\n'), (key1, 'b\nc\n')], records)
1475
1522
def test_annotate(self):
1476
1523
files = self.get_versionedfiles()
1477
1524
self.get_diamond_files(files)
1543
1590
trailing_eol=trailing_eol, nograph=not self.graph,
1544
1591
left_only=left_only, nokeys=nokeys)
1546
def test_add_lines_nostoresha(self):
1593
def _add_content_nostoresha(self, add_lines):
1547
1594
"""When nostore_sha is supplied using old content raises."""
1548
1595
vf = self.get_versionedfiles()
1549
1596
empty_text = ('a', [])
1551
1598
sample_text_no_nl = ('c', ["foo\n", "bar"])
1553
1600
for version, lines in (empty_text, sample_text_nl, sample_text_no_nl):
1554
sha, _, _ = vf.add_lines(self.get_simple_key(version), [], lines)
1602
sha, _, _ = vf.add_lines(self.get_simple_key(version), [],
1605
sha, _, _ = vf._add_text(self.get_simple_key(version), [],
1555
1607
shas.append(sha)
1556
1608
# we now have a copy of all the lines in the vf.
1557
1609
for sha, (version, lines) in zip(
1560
1612
self.assertRaises(errors.ExistingContent,
1561
1613
vf.add_lines, new_key, [], lines,
1562
1614
nostore_sha=sha)
1615
self.assertRaises(errors.ExistingContent,
1616
vf._add_text, new_key, [], ''.join(lines),
1563
1618
# and no new version should have been added.
1564
1619
record = vf.get_record_stream([new_key], 'unordered', True).next()
1565
1620
self.assertEqual('absent', record.storage_kind)
1622
def test_add_lines_nostoresha(self):
1623
self._add_content_nostoresha(add_lines=True)
1625
def test__add_text_nostoresha(self):
1626
self._add_content_nostoresha(add_lines=False)
1567
1628
def test_add_lines_return(self):
1568
1629
files = self.get_versionedfiles()
1569
1630
# save code by using the stock data insertion helper.
1718
1779
self.capture_stream(files, entries, seen.add, parent_map)
1719
1780
self.assertEqual(set(keys), seen)
1721
def get_simple_key(self, suffix):
1722
"""Return a key for the object under test."""
1723
if self.key_length == 1:
1726
return ('FileA',) + (suffix,)
1728
1782
def get_keys_and_sort_order(self):
1729
1783
"""Get diamond test keys list, and their sort ordering."""
1730
1784
if self.key_length == 1:
2150
def test_get_annotator(self):
2151
files = self.get_versionedfiles()
2152
self.get_diamond_files(files)
2153
origin_key = self.get_simple_key('origin')
2154
base_key = self.get_simple_key('base')
2155
left_key = self.get_simple_key('left')
2156
right_key = self.get_simple_key('right')
2157
merged_key = self.get_simple_key('merged')
2158
# annotator = files.get_annotator()
2159
# introduced full text
2160
origins, lines = files.get_annotator().annotate(origin_key)
2161
self.assertEqual([(origin_key,)], origins)
2162
self.assertEqual(['origin\n'], lines)
2164
origins, lines = files.get_annotator().annotate(base_key)
2165
self.assertEqual([(base_key,)], origins)
2167
origins, lines = files.get_annotator().annotate(merged_key)
2176
# Without a graph everything is new.
2183
self.assertRaises(RevisionNotPresent,
2184
files.get_annotator().annotate, self.get_simple_key('missing-key'))
2096
2186
def test_get_parent_map(self):
2097
2187
files = self.get_versionedfiles()
2098
2188
if self.key_length == 1: