/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/test_workingtree_4.py

  • Committer: Jelmer Vernooij
  • Date: 2018-11-11 04:08:32 UTC
  • mto: (7143.16.20 even-more-cleanups)
  • mto: This revision was merged to the branch mainline in revision 7175.
  • Revision ID: jelmer@jelmer.uk-20181111040832-nsljjynzzwmznf3h
Run autopep8.

Show diffs side-by-side

added added

removed removed

Lines of Context:
125
125
        # permit lock upgrading.
126
126
        subtree.lock_write()
127
127
        self.addCleanup(subtree.unlock)
128
 
        self.build_tree(['subdir/file-a',])
 
128
        self.build_tree(['subdir/file-a', ])
129
129
        subtree.add(['file-a'], [b'id-a'])
130
130
        rev1 = subtree.commit('commit in subdir')
131
131
 
297
297
        state = tree.current_dirstate()
298
298
        called = []
299
299
        orig_update = state.update_basis_by_delta
 
300
 
300
301
        def log_update_basis_by_delta(delta, new_revid):
301
302
            called.append(new_revid)
302
303
            return orig_update(delta, new_revid)
304
305
        basis = tree.basis_tree()
305
306
        self.assertEqual(b'a-id', basis.path2id('a'))
306
307
        self.assertFalse(basis.is_versioned('b'))
 
308
 
307
309
        def fail_set_parent_trees(trees, ghosts):
308
310
            raise AssertionError('dirstate.set_parent_trees() was called')
309
311
        state.set_parent_trees = fail_set_parent_trees
347
349
        # until we have detection for when a dirstate can be reused, we
348
350
        # want to reparse dirstate on every new lock.
349
351
        known_dirstates = set()
 
352
 
350
353
        def lock_and_compare_all_current_dirstate(tree, lock_method):
351
354
            getattr(tree, lock_method)()
352
355
            state = tree.current_dirstate()
388
391
        rev_tree2 = tree.branch.repository.revision_tree(rev_id2)
389
392
        optimiser = InterTree.get(rev_tree, rev_tree2)
390
393
        self.assertIsInstance(optimiser, InterTree)
391
 
        self.assertFalse(isinstance(optimiser, workingtree_4.InterDirStateTree))
 
394
        self.assertFalse(isinstance(
 
395
            optimiser, workingtree_4.InterDirStateTree))
392
396
        optimiser = InterTree.get(rev_tree2, rev_tree)
393
397
        self.assertIsInstance(optimiser, InterTree)
394
 
        self.assertFalse(isinstance(optimiser, workingtree_4.InterDirStateTree))
 
398
        self.assertFalse(isinstance(
 
399
            optimiser, workingtree_4.InterDirStateTree))
395
400
 
396
401
    def test_revtree_not_in_dirstate_to_dirstate_not_interdirstate(self):
397
402
        # we should not get a dirstate optimiser when the revision id for of
403
408
        tree.lock_read()
404
409
        optimiser = InterTree.get(rev_tree, tree)
405
410
        self.assertIsInstance(optimiser, InterTree)
406
 
        self.assertFalse(isinstance(optimiser, workingtree_4.InterDirStateTree))
 
411
        self.assertFalse(isinstance(
 
412
            optimiser, workingtree_4.InterDirStateTree))
407
413
        optimiser = InterTree.get(tree, rev_tree)
408
414
        self.assertIsInstance(optimiser, InterTree)
409
 
        self.assertFalse(isinstance(optimiser, workingtree_4.InterDirStateTree))
 
415
        self.assertFalse(isinstance(
 
416
            optimiser, workingtree_4.InterDirStateTree))
410
417
        tree.unlock()
411
418
 
412
419
    def test_empty_basis_to_dirstate_tree(self):
525
532
        # each time you initialize a new tree, it gets a different root id
526
533
        format_name = 'development-subtree'
527
534
        tree1 = self.make_branch_and_tree('tree1',
528
 
            format=format_name)
 
535
                                          format=format_name)
529
536
        tree2 = self.make_branch_and_tree('tree2',
530
 
            format=format_name)
 
537
                                          format=format_name)
531
538
        self.assertNotEqual(tree1.get_root_id(), tree2.get_root_id())
532
539
        # when you branch, it inherits the same root id
533
540
        rev1 = tree1.commit('first post')
579
586
        # the root is new too).
580
587
        tree.lock_read()
581
588
        expected = [(b'dir-id',
582
 
            (None, u'dir'),
583
 
            True,
584
 
            (False, True),
585
 
            (None, b'root'),
586
 
            (None, u'dir'),
587
 
            (None, 'directory'),
588
 
            (None, False)),
589
 
            (b'root', (None, u''), True, (False, True), (None, None),
590
 
            (None, u''), (None, 'directory'), (None, 0))]
 
589
                     (None, u'dir'),
 
590
                     True,
 
591
                     (False, True),
 
592
                     (None, b'root'),
 
593
                     (None, u'dir'),
 
594
                     (None, 'directory'),
 
595
                     (None, False)),
 
596
                    (b'root', (None, u''), True, (False, True), (None, None),
 
597
                     (None, u''), (None, 'directory'), (None, 0))]
591
598
        self.assertEqual(expected, list(tree.iter_changes(tree.basis_tree(),
592
 
            specific_files=['dir'])))
 
599
                                                          specific_files=['dir'])))
593
600
        tree.unlock()
594
601
        # do a commit, we want to trigger the dirstate fast-path too
595
602
        tree.commit('first post')
599
606
        # now the diff will use the fast path
600
607
        tree.lock_read()
601
608
        expected = [(b'dir-id',
602
 
            (u'dir', u'dir'),
603
 
            True,
604
 
            (True, True),
605
 
            (b'root', b'root'),
606
 
            ('dir', 'dir'),
607
 
            ('directory', None),
608
 
            (False, False))]
 
609
                     (u'dir', u'dir'),
 
610
                     True,
 
611
                     (True, True),
 
612
                     (b'root', b'root'),
 
613
                     ('dir', 'dir'),
 
614
                     ('directory', None),
 
615
                     (False, False))]
609
616
        self.assertEqual(expected, list(tree.iter_changes(tree.basis_tree())))
610
617
        tree.unlock()
611
618
 
635
642
                         'versioned2/unversioned/',
636
643
                         'versioned2/unversioned/a',
637
644
                         'versioned2/unversioned/b/',
638
 
                        ])
 
645
                         ])
639
646
        tree.add(['versioned', 'versioned2', 'versioned2/a'])
640
647
        tree.commit('one', rev_id=b'rev-1')
641
648
        # Trap osutils._walkdirs_utf8 to spy on what dirs have been accessed.
642
649
        returned = []
 
650
 
643
651
        def walkdirs_spy(*args, **kwargs):
644
652
            for val in orig(*args, **kwargs):
645
653
                returned.append(val[0][0])
656
664
        self.assertEqual([(None, 'unversioned'),
657
665
                          (None, 'versioned/unversioned'),
658
666
                          (None, 'versioned2/unversioned'),
659
 
                         ], changes)
 
667
                          ], changes)
660
668
        self.assertEqual([b'', b'versioned', b'versioned2'], returned)
661
 
        del returned[:] # reset
 
669
        del returned[:]  # reset
662
670
        changes = [c[1] for c in tree.iter_changes(basis)]
663
671
        self.assertEqual([], changes)
664
672
        self.assertEqual([b'', b'versioned', b'versioned2'], returned)
672
680
        tree.add(['bar'], [b'bar-id'])
673
681
        tree.lock_read()
674
682
        self.addCleanup(tree.unlock)
675
 
        tree_iter_changes = lambda files: [
 
683
 
 
684
        def tree_iter_changes(files): return [
676
685
            c for c in tree.iter_changes(tree.basis_tree(), specific_files=files,
677
686
                                         require_versioned=True)
678
687
        ]
686
695
        tree = self.make_branch_and_tree('.')
687
696
        self.build_tree_contents([('f', b'')])
688
697
        tree.add(['f'], [b'f-id'])
 
698
 
689
699
        def tree_iter_changes(tree, files):
690
700
            return list(tree.iter_changes(tree.basis_tree(),
691
 
                specific_files=files, require_versioned=True))
 
701
                                          specific_files=files, require_versioned=True))
692
702
        tree.lock_read()
693
703
        self.addCleanup(tree.unlock)
694
704
        e = self.assertRaises(errors.PathsNotVersionedError,
695
 
            tree_iter_changes, tree, [u'\xa7', u'\u03c0'])
 
705
                              tree_iter_changes, tree, [u'\xa7', u'\u03c0'])
696
706
        self.assertEqual(set(e.paths), set([u'\xa7', u'\u03c0']))
697
707
 
698
708
    def get_tree_with_cachable_file_foo(self):
740
750
            current_sha1 = tree._get_entry(path="foo")[1][0][1]
741
751
        with tree.lock_write():
742
752
            tree._observed_sha1(b"foo-id", "foo",
743
 
                (osutils.sha_file_by_name('foo'), os.lstat("foo")))
 
753
                                (osutils.sha_file_by_name('foo'), os.lstat("foo")))
744
754
            # Must not have changed
745
755
            self.assertEqual(current_sha1,
746
 
                tree._get_entry(path="foo")[1][0][1])
 
756
                             tree._get_entry(path="foo")[1][0][1])
747
757
 
748
758
    def test_get_file_with_stat_id_only(self):
749
759
        # Explicit test to ensure we get a lstat value from WT4 trees.
778
788
            state._read_dirblocks_if_needed()
779
789
            # Now add in an invalid entry, a rename with a dangling pointer
780
790
            state._dirblocks[1][1].append(((b'', b'foo', b'foo-id'),
781
 
                                            [(b'f', b'', 0, False, b''),
782
 
                                             (b'r', b'bar', 0, False, b'')]))
 
791
                                           [(b'f', b'', 0, False, b''),
 
792
                                            (b'r', b'bar', 0, False, b'')]))
783
793
            self.assertListRaises(dirstate.DirstateCorrupt,
784
794
                                  tree.iter_changes, tree.basis_tree())
785
795
 
816
826
            (b'', [((b'', b'', root_id), [b'd', b'd'])]),
817
827
            (b'', [((b'', b'dir', b'dir-id'), [b'd', b'd'])]),
818
828
            (b'dir', [((b'dir', b'file', b'file-id'), [b'f', b'f'])]),
819
 
        ],  self.get_simple_dirblocks(state))
 
829
        ], self.get_simple_dirblocks(state))
820
830
 
821
831
        tree.remove(['dir/file'])
822
832
        self.assertEqual([
823
833
            (b'', [((b'', b'', root_id), [b'd', b'd'])]),
824
834
            (b'', [((b'', b'dir', b'dir-id'), [b'd', b'd'])]),
825
835
            (b'dir', [((b'dir', b'file', b'file-id'), [b'a', b'f'])]),
826
 
        ],  self.get_simple_dirblocks(state))
 
836
        ], self.get_simple_dirblocks(state))
827
837
        # Make sure the removal is written to disk
828
838
        tree.flush()
829
839
 
833
843
        new_file = inventory.InventoryFile(b'file-id', 'new-file', root_id)
834
844
        new_file.revision = b'new-revision-id'
835
845
        self.assertRaises(errors.InconsistentDelta,
836
 
            tree.update_basis_by_delta, b'new-revision-id',
837
 
            [('dir', 'new-dir', b'dir-id', new_dir),
838
 
             ('dir/file', 'new-dir/new-file', b'file-id', new_file),
839
 
            ])
 
846
                          tree.update_basis_by_delta, b'new-revision-id',
 
847
                          [('dir', 'new-dir', b'dir-id', new_dir),
 
848
                           ('dir/file', 'new-dir/new-file', b'file-id', new_file),
 
849
                           ])
840
850
        del state
841
851
 
842
852
        # Now when we re-read the file it should not have been modified
849
859
            (b'', [((b'', b'', root_id), [b'd', b'd'])]),
850
860
            (b'', [((b'', b'dir', b'dir-id'), [b'd', b'd'])]),
851
861
            (b'dir', [((b'dir', b'file', b'file-id'), [b'a', b'f'])]),
852
 
        ],  self.get_simple_dirblocks(state))
 
862
        ], self.get_simple_dirblocks(state))
853
863
 
854
864
 
855
865
class TestInventoryCoherency(TestCaseWithTransport):