/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_knit.py

merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
816
816
        self.assertEqual(["c"], index.get_parents_with_ghosts("a"))
817
817
        self.assertEqual(["a"], index.get_parents_with_ghosts("b"))
818
818
 
 
819
    def test_add_versions_random_id_is_accepted(self):
 
820
        transport = MockTransport([
 
821
            _KnitIndex.HEADER
 
822
            ])
 
823
        index = self.get_knit_index(transport, "filename", "r")
 
824
 
 
825
        index.add_versions([
 
826
            ("a", ["option"], (None, 0, 1), ["b"]),
 
827
            ("a", ["opt"], (None, 1, 2), ["c"]),
 
828
            ("b", ["option"], (None, 2, 3), ["a"])
 
829
            ], random_id=True)
 
830
 
819
831
    def test_delay_create_and_add_versions(self):
820
832
        transport = MockTransport()
821
833
 
1303
1315
        self.assertEquals(origins[1], ('text-1', 'b\n'))
1304
1316
        self.assertEquals(origins[2], ('text-1', 'c\n'))
1305
1317
 
1306
 
    def test_knit_join(self):
1307
 
        """Store in knit with parents"""
1308
 
        k1 = KnitVersionedFile('test1', get_transport('.'), factory=KnitPlainFactory(), create=True)
1309
 
        k1.add_lines('text-a', [], split_lines(TEXT_1))
1310
 
        k1.add_lines('text-b', ['text-a'], split_lines(TEXT_1))
1311
 
 
1312
 
        k1.add_lines('text-c', [], split_lines(TEXT_1))
1313
 
        k1.add_lines('text-d', ['text-c'], split_lines(TEXT_1))
1314
 
 
1315
 
        k1.add_lines('text-m', ['text-b', 'text-d'], split_lines(TEXT_1))
1316
 
 
1317
 
        k2 = KnitVersionedFile('test2', get_transport('.'), factory=KnitPlainFactory(), create=True)
 
1318
    def _test_join_with_factories(self, k1_factory, k2_factory):
 
1319
        k1 = KnitVersionedFile('test1', get_transport('.'), factory=k1_factory, create=True)
 
1320
        k1.add_lines('text-a', [], ['a1\n', 'a2\n', 'a3\n'])
 
1321
        k1.add_lines('text-b', ['text-a'], ['a1\n', 'b2\n', 'a3\n'])
 
1322
        k1.add_lines('text-c', [], ['c1\n', 'c2\n', 'c3\n'])
 
1323
        k1.add_lines('text-d', ['text-c'], ['c1\n', 'd2\n', 'd3\n'])
 
1324
        k1.add_lines('text-m', ['text-b', 'text-d'], ['a1\n', 'b2\n', 'd3\n'])
 
1325
        k2 = KnitVersionedFile('test2', get_transport('.'), factory=k2_factory, create=True)
1318
1326
        count = k2.join(k1, version_ids=['text-m'])
1319
1327
        self.assertEquals(count, 5)
1320
1328
        self.assertTrue(k2.has_version('text-a'))
1321
1329
        self.assertTrue(k2.has_version('text-c'))
 
1330
        origins = k2.annotate('text-m')
 
1331
        self.assertEquals(origins[0], ('text-a', 'a1\n'))
 
1332
        self.assertEquals(origins[1], ('text-b', 'b2\n'))
 
1333
        self.assertEquals(origins[2], ('text-d', 'd3\n'))
 
1334
 
 
1335
    def test_knit_join_plain_to_plain(self):
 
1336
        """Test joining a plain knit with a plain knit."""
 
1337
        self._test_join_with_factories(KnitPlainFactory(), KnitPlainFactory())
 
1338
 
 
1339
    def test_knit_join_anno_to_anno(self):
 
1340
        """Test joining an annotated knit with an annotated knit."""
 
1341
        self._test_join_with_factories(None, None)
 
1342
 
 
1343
    def test_knit_join_anno_to_plain(self):
 
1344
        """Test joining an annotated knit with a plain knit."""
 
1345
        self._test_join_with_factories(None, KnitPlainFactory())
 
1346
 
 
1347
    def test_knit_join_plain_to_anno(self):
 
1348
        """Test joining a plain knit with an annotated knit."""
 
1349
        self._test_join_with_factories(KnitPlainFactory(), None)
1322
1350
 
1323
1351
    def test_reannotate(self):
1324
1352
        k1 = KnitVersionedFile('knit1', get_transport('.'),
1895
1923
 
1896
1924
class TestKnitCaching(KnitTests):
1897
1925
    
1898
 
    def create_knit(self, cache_add=False):
 
1926
    def create_knit(self):
1899
1927
        k = self.make_test_knit(True)
1900
 
        if cache_add:
1901
 
            k.enable_cache()
1902
 
 
1903
1928
        k.add_lines('text-1', [], split_lines(TEXT_1))
1904
1929
        k.add_lines('text-2', [], split_lines(TEXT_2))
1905
1930
        return k
1909
1934
        # Nothing should be cached without setting 'enable_cache'
1910
1935
        self.assertEqual({}, k._data._cache)
1911
1936
 
1912
 
    def test_cache_add_and_clear(self):
1913
 
        k = self.create_knit(True)
1914
 
 
1915
 
        self.assertEqual(['text-1', 'text-2'], sorted(k._data._cache.keys()))
1916
 
 
1917
 
        k.clear_cache()
1918
 
        self.assertEqual({}, k._data._cache)
1919
 
 
1920
1937
    def test_cache_data_read_raw(self):
1921
1938
        k = self.create_knit()
1922
1939
 
2307
2324
            [('new', 'no-eol,line-delta', (None, 0, 100), ['parent'])])
2308
2325
        self.assertEqual([], self.caught_entries)
2309
2326
 
 
2327
    def test_add_versions_random_id_accepted(self):
 
2328
        index = self.two_graph_index(catch_adds=True)
 
2329
        index.add_versions([], random_id=True)
 
2330
 
2310
2331
    def test_add_versions_same_dup(self):
2311
2332
        index = self.two_graph_index(catch_adds=True)
2312
2333
        # options can be spelt two different ways
2570
2591
            [('new', 'no-eol,fulltext', (None, 0, 100), ['parent'])])
2571
2592
        self.assertEqual([], self.caught_entries)
2572
2593
 
 
2594
    def test_add_versions_random_id_accepted(self):
 
2595
        index = self.two_graph_index(catch_adds=True)
 
2596
        index.add_versions([], random_id=True)
 
2597
 
2573
2598
    def test_add_versions_same_dup(self):
2574
2599
        index = self.two_graph_index(catch_adds=True)
2575
2600
        # options can be spelt two different ways