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

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-06-11 12:46:45 UTC
  • mfrom: (7511.1.1 actions-no-fork)
  • Revision ID: breezy.the.bot@gmail.com-20200611124645-4lx66gps99i0hmzh
Avoid using fork when running the testsuite in github actions.

Merged from https://code.launchpad.net/~jelmer/brz/actions-no-fork/+merge/385565

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
import os
20
20
import sys
21
21
 
22
 
from ... import (
 
22
from .. import (
23
23
    diff,
24
24
    errors,
25
25
    merge,
28
28
    tests,
29
29
    treebuilder,
30
30
    )
31
 
from .. import (
 
31
from ..bzr import (
32
32
    bzrdir,
33
33
    inventory,
34
34
    )
35
 
from ..bundle.apply_bundle import install_bundle, merge_bundle
36
 
from ..bundle.bundle_data import BundleTree
37
 
from ..bundle.serializer import write_bundle, read_bundle, v09, v4
38
 
from ..bundle.serializer.v08 import BundleSerializerV08
39
 
from ..bundle.serializer.v09 import BundleSerializerV09
40
 
from ..bundle.serializer.v4 import BundleSerializerV4
41
 
from ..import knitrepo
42
 
from ..inventorytree import InventoryTree
43
 
from ...tests import (
 
35
from ..bzr.bundle.apply_bundle import install_bundle, merge_bundle
 
36
from ..bzr.bundle.bundle_data import BundleTree
 
37
from ..bzr.bundle.serializer import write_bundle, read_bundle, v09, v4
 
38
from ..bzr.bundle.serializer.v08 import BundleSerializerV08
 
39
from ..bzr.bundle.serializer.v09 import BundleSerializerV09
 
40
from ..bzr.bundle.serializer.v4 import BundleSerializerV4
 
41
from ..bzr import knitrepo
 
42
from . import (
44
43
    features,
45
44
    test_commit,
46
45
    )
47
 
from ...tree import InterTree
 
46
from ..tree import InterTree
48
47
 
49
48
 
50
49
def get_text(vf, key):
60
59
        return get_text(repo.inventories, (revision_id,))
61
60
 
62
61
 
63
 
class MockTree(InventoryTree):
 
62
class MockTree(object):
64
63
 
65
64
    def __init__(self):
66
 
        from ..inventory import InventoryDirectory, ROOT_ID
 
65
        from ..bzr.inventory import InventoryDirectory, ROOT_ID
67
66
        object.__init__(self)
68
67
        self.paths = {ROOT_ID: ""}
69
68
        self.ids = {"": ROOT_ID}
113
112
        return kind
114
113
 
115
114
    def make_entry(self, file_id, path):
116
 
        from ..inventory import (InventoryFile, InventoryDirectory,
117
 
                                 InventoryLink)
 
115
        from ..bzr.inventory import (InventoryFile, InventoryDirectory,
 
116
                                     InventoryLink)
118
117
        if not isinstance(file_id, bytes):
119
118
            raise TypeError(file_id)
120
119
        name = os.path.basename(path)
593
592
            ])
594
593
        self.build_tree_contents([('b1/sub/sub/emptyfile.txt', b''),
595
594
                                  ('b1/dir/nolastnewline.txt', b'bloop')])
596
 
        tt = self.tree1.transform()
 
595
        tt = self.tree1.get_transform()
597
596
        tt.new_file('executable', tt.root, [b'#!/bin/sh\n'], b'exe-1', True)
598
597
        tt.apply()
599
598
        # have to fix length of file-id so that we can predictably rewrite
613
612
        self.tree1.remove(
614
613
            ['sub/sub/nonempty.txt', 'sub/sub/emptyfile.txt', 'sub/sub'
615
614
             ])
616
 
        tt = self.tree1.transform()
 
615
        tt = self.tree1.get_transform()
617
616
        trans_id = tt.trans_id_tree_path('executable')
618
617
        tt.set_executability(False, trans_id)
619
618
        tt.apply()
674
673
        self.tree1 = self.make_branch_and_tree('b1')
675
674
        self.b1 = self.tree1.branch
676
675
 
677
 
        tt = self.tree1.transform()
 
676
        tt = self.tree1.get_transform()
678
677
        tt.new_symlink(link_name, tt.root, link_target, link_id)
679
678
        tt.apply()
680
679
        self.tree1.commit('add symlink', rev_id=b'l@cset-0-1')
685
684
            self.assertEqual(
686
685
                link_target, bund_tree.get_symlink_target(link_name))
687
686
 
688
 
        tt = self.tree1.transform()
 
687
        tt = self.tree1.get_transform()
689
688
        trans_id = tt.trans_id_tree_path(link_name)
690
689
        tt.adjust_path('link2', tt.root, trans_id)
691
690
        tt.delete_contents(trans_id)
699
698
            self.assertEqual(new_link_target,
700
699
                             bund_tree.get_symlink_target('link2'))
701
700
 
702
 
        tt = self.tree1.transform()
 
701
        tt = self.tree1.get_transform()
703
702
        trans_id = tt.trans_id_tree_path('link2')
704
703
        tt.delete_contents(trans_id)
705
704
        tt.create_symlink('jupiter', trans_id)
707
706
        self.tree1.commit('just change symlink target', rev_id=b'l@cset-0-3')
708
707
        bundle = self.get_valid_bundle(b'l@cset-0-2', b'l@cset-0-3')
709
708
 
710
 
        tt = self.tree1.transform()
 
709
        tt = self.tree1.get_transform()
711
710
        trans_id = tt.trans_id_tree_path('link2')
712
711
        tt.delete_contents(trans_id)
713
712
        tt.apply()
726
725
    def test_binary_bundle(self):
727
726
        self.tree1 = self.make_branch_and_tree('b1')
728
727
        self.b1 = self.tree1.branch
729
 
        tt = self.tree1.transform()
 
728
        tt = self.tree1.get_transform()
730
729
 
731
730
        # Add
732
731
        tt.new_file('file', tt.root, [
738
737
        self.get_valid_bundle(b'null:', b'b@cset-0-1')
739
738
 
740
739
        # Delete
741
 
        tt = self.tree1.transform()
 
740
        tt = self.tree1.get_transform()
742
741
        trans_id = tt.trans_id_tree_path('file')
743
742
        tt.delete_contents(trans_id)
744
743
        tt.apply()
746
745
        self.get_valid_bundle(b'b@cset-0-1', b'b@cset-0-2')
747
746
 
748
747
        # Rename & modify
749
 
        tt = self.tree1.transform()
 
748
        tt = self.tree1.get_transform()
750
749
        trans_id = tt.trans_id_tree_path('file2')
751
750
        tt.adjust_path('file3', tt.root, trans_id)
752
751
        tt.delete_contents(trans_id)
756
755
        self.get_valid_bundle(b'b@cset-0-2', b'b@cset-0-3')
757
756
 
758
757
        # Modify
759
 
        tt = self.tree1.transform()
 
758
        tt = self.tree1.get_transform()
760
759
        trans_id = tt.trans_id_tree_path('file3')
761
760
        tt.delete_contents(trans_id)
762
761
        tt.create_file([b'\x00file\rcontents'], trans_id)
770
769
    def test_last_modified(self):
771
770
        self.tree1 = self.make_branch_and_tree('b1')
772
771
        self.b1 = self.tree1.branch
773
 
        tt = self.tree1.transform()
 
772
        tt = self.tree1.get_transform()
774
773
        tt.new_file('file', tt.root, [b'file'], b'file')
775
774
        tt.apply()
776
775
        self.tree1.commit('create file', rev_id=b'a@lmod-0-1')
777
776
 
778
 
        tt = self.tree1.transform()
 
777
        tt = self.tree1.get_transform()
779
778
        trans_id = tt.trans_id_tree_path('file')
780
779
        tt.delete_contents(trans_id)
781
780
        tt.create_file([b'file2'], trans_id)
783
782
        self.tree1.commit('modify text', rev_id=b'a@lmod-0-2a')
784
783
 
785
784
        other = self.get_checkout(b'a@lmod-0-1')
786
 
        tt = other.transform()
 
785
        tt = other.get_transform()
787
786
        trans_id = tt.trans_id_tree_path('file2')
788
787
        tt.delete_contents(trans_id)
789
788
        tt.create_file([b'file2'], trans_id)
1331
1330
 
1332
1331
        :return: The in-memory bundle
1333
1332
        """
1334
 
        from ..bundle import serializer
 
1333
        from ..bzr.bundle import serializer
1335
1334
        bundle_txt, rev_ids = self.create_bundle_text(base_rev_id, rev_id)
1336
1335
        new_text = self.get_raw(BytesIO(b''.join(bundle_txt)))
1337
1336
        new_text = new_text.replace(b'<file file_id="exe-1"',
1416
1415
        tree_a.commit("base", allow_pointless=True, rev_id=b'A')
1417
1416
        self.assertFalse(branch.repository.has_signature_for_revision_id(b'A'))
1418
1417
        try:
1419
 
            from ..testament import Testament
 
1418
            from ..bzr.testament import Testament
1420
1419
            # monkey patch gpg signing mechanism
1421
1420
            breezy.gpg.GPGStrategy = breezy.gpg.LoopbackGPGStrategy
1422
1421
            new_config = test_commit.MustSignConfig()
1458
1457
 
1459
1458
        :return: The in-memory bundle
1460
1459
        """
1461
 
        from ..bundle import serializer
 
1460
        from ..bzr.bundle import serializer
1462
1461
        bundle_txt, rev_ids = self.create_bundle_text(base_rev_id, rev_id)
1463
1462
        new_text = self.get_raw(BytesIO(b''.join(bundle_txt)))
1464
1463
        # We are going to be replacing some text to set the executable bit on a