/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 breezy/tests/per_repository/test_commit_builder.py

  • Committer: Jelmer Vernooij
  • Date: 2018-05-07 11:22:07 UTC
  • mfrom: (6951 work)
  • mto: This revision was merged to the branch mainline in revision 6953.
  • Revision ID: jelmer@jelmer.uk-20180507112207-x3kqvmjdzfvmfk2p
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
    tests,
28
28
    )
29
29
from breezy.bzr import (
30
 
    inventory,
 
30
    inventorytree,
31
31
    )
32
32
from breezy.tests import per_repository
33
33
from breezy.tests import (
351
351
        # modified.
352
352
        tree = self.make_branch_and_tree('.')
353
353
        subtree = self.make_reference('reference')
 
354
        subtree.commit('')
354
355
        try:
355
356
            tree.add_reference(subtree)
356
357
            self._commit_check_unchanged(tree, 'reference',
400
401
        # renaming a reference changes the last modified.
401
402
        tree = self.make_branch_and_tree('.')
402
403
        subtree = self.make_reference('reference')
 
404
        subtree.commit('')
403
405
        try:
404
406
            tree.add_reference(subtree)
405
407
            self._commit_renamed_check_changed(tree, 'reference')
419
421
    def test_last_modified_revision_after_reparent_dir_changes(self):
420
422
        # reparenting a dir changes the last modified.
421
423
        tree = self.make_branch_and_tree('.')
 
424
        if not tree.has_versioned_directories():
 
425
            raise tests.TestNotApplicable(
 
426
                    'Format does not support versioned directories')
422
427
        self.build_tree(['dir/'])
423
428
        self._add_commit_reparent_check_changed(tree, 'dir')
424
429
 
488
493
                    changes))
489
494
                file_id = tree.path2id(new_name)
490
495
                self.assertIsNot(None, file_id)
491
 
                if expect_fs_hash:
492
 
                    tree_file_stat = tree.get_file_with_stat(new_name)
493
 
                    tree_file_stat[0].close()
494
 
                    self.assertLength(1, result)
495
 
                    result = result[0]
496
 
                    self.assertEqual(result[:2], (file_id, new_name))
497
 
                    self.assertEqual(result[2][0], tree.get_file_sha1(new_name))
498
 
                    self.assertEqualStat(result[2][1], tree_file_stat[1])
499
 
                else:
500
 
                    self.assertEqual([], result)
 
496
                if isinstance(tree, inventorytree.InventoryTree):
 
497
                    # TODO(jelmer): record_iter_changes shouldn't yield
 
498
                    # data that is WorkingTree-format-specific and uses file ids.
 
499
                    if expect_fs_hash:
 
500
                        tree_file_stat = tree.get_file_with_stat(new_name)
 
501
                        tree_file_stat[0].close()
 
502
                        self.assertLength(1, result)
 
503
                        result = result[0]
 
504
                        self.assertEqual(result[:2], (file_id, new_name))
 
505
                        self.assertEqual(result[2][0], tree.get_file_sha1(new_name))
 
506
                        self.assertEqualStat(result[2][1], tree_file_stat[1])
 
507
                    else:
 
508
                        self.assertEqual([], result)
501
509
                builder.finish_inventory()
502
510
                if tree.branch.repository._format.supports_full_versioned_files:
503
511
                    inv_key = (builder._new_revision_id,)
510
518
                raise
511
519
            delta = builder.get_basis_delta()
512
520
            delta_dict = dict((change[2], change) for change in delta)
513
 
            version_recorded = (file_id in delta_dict and
514
 
                delta_dict[file_id][3] is not None and
515
 
                delta_dict[file_id][3].revision == rev2)
516
 
            if records_version:
517
 
                self.assertTrue(version_recorded)
518
 
            else:
519
 
                self.assertFalse(version_recorded)
 
521
            if tree.branch.repository._format.records_per_file_revision:
 
522
                version_recorded = (file_id in delta_dict and
 
523
                    delta_dict[file_id][3] is not None and
 
524
                    delta_dict[file_id][3].revision == rev2)
 
525
                if records_version:
 
526
                    self.assertTrue(version_recorded)
 
527
                else:
 
528
                    self.assertFalse(version_recorded)
520
529
 
521
530
            revtree = builder.revision_tree()
522
531
            new_entry = revtree.iter_entries_by_dir(specific_files=[new_name]).next()[1]
529
538
                self.assertEqual(expected_delta, delta_dict[file_id])
530
539
            else:
531
540
                expected_delta = None
532
 
                self.assertFalse(version_recorded)
 
541
                if tree.branch.repository._format.records_per_file_revision:
 
542
                    self.assertFalse(version_recorded)
533
543
            tree.set_parent_ids([rev2])
534
544
        return rev2
535
545
 
590
600
        rev3 = self._rename_in_tree(tree2, name, 'rev3')
591
601
        tree1.merge_from_branch(tree2.branch)
592
602
        rev4 = self.mini_commit_record_iter_changes(tree1, 'new_' + name, 'new_' + name,
593
 
            expect_fs_hash=expect_fs_hash)
 
603
            expect_fs_hash=expect_fs_hash,
 
604
            delta_against_basis=tree1.supports_rename_tracking())
594
605
        tree3, = self._get_revtrees(tree1, [rev4])
595
 
        self.assertEqual(rev4, tree3.get_file_revision('new_' + name))
596
606
        expected_graph = {}
597
 
        expected_graph[(file_id, rev1)] = ()
598
 
        expected_graph[(file_id, rev2)] = ((file_id, rev1),)
599
 
        expected_graph[(file_id, rev3)] = ((file_id, rev1),)
600
 
        expected_graph[(file_id, rev4)] = ((file_id, rev2), (file_id, rev3),)
 
607
        if tree1.supports_rename_tracking():
 
608
            self.assertEqual(rev4, tree3.get_file_revision('new_' + name))
 
609
            expected_graph[(file_id, rev1)] = ()
 
610
            expected_graph[(file_id, rev2)] = ((file_id, rev1),)
 
611
            expected_graph[(file_id, rev3)] = ((file_id, rev1),)
 
612
            expected_graph[(file_id, rev4)] = ((file_id, rev2), (file_id, rev3),)
 
613
        else:
 
614
            self.assertEqual(rev2, tree3.get_file_revision('new_' + name))
 
615
            expected_graph[(file_id, rev4)] = ()
601
616
        self.assertFileGraph(expected_graph, tree1, (file_id, rev4))
602
617
 
603
618
    def test_last_modified_revision_after_merge_dir_changes(self):
726
741
        os.symlink('target', name)
727
742
 
728
743
    def make_reference(self, name):
729
 
        tree = self.make_branch_and_tree(name, format='1.9-rich-root')
 
744
        tree = self.make_branch_and_tree(name)
 
745
        if not tree.branch.repository._format.rich_root_data:
 
746
            raise tests.TestNotApplicable(
 
747
                    'format does not support rich roots')
730
748
        tree.commit('foo')
731
749
        return tree
732
750