~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/test_smart_add.py

  • Committer: Martin Pool
  • Date: 2005-09-06 02:26:28 UTC
  • Revision ID: mbp@sourcefrog.net-20050906022628-66d65f0feb4a9e80
- implement version 5 xml storage, and tests

  This stores files identified by the version that introduced the 
  text, and the version that introduced the name.  Entry kinds are
  given by the xml tag not an explicit kind field.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import os
 
2
import unittest
 
3
 
 
4
from bzrlib.selftest import TestCaseInTempDir, TestCase
 
5
from bzrlib.branch import Branch
 
6
from bzrlib.errors import NotBranchError, NotVersionedError
 
7
 
 
8
class TestSmartAdd(TestCaseInTempDir):
 
9
 
 
10
    def test_add_dot_from_root(self):
 
11
        """Test adding . from the root of the tree.""" 
 
12
        from bzrlib.add import smart_add
 
13
        paths = ("original/", "original/file1", "original/file2")
 
14
        self.build_tree(paths)
 
15
        branch = Branch(".", init=True)
 
16
        smart_add((".",), recurse=True)
 
17
        for path in paths:
 
18
            self.assertNotEqual(branch.inventory.path2id(path), None)
 
19
 
 
20
    def test_add_dot_from_subdir(self):
 
21
        """Test adding . from a subdir of the tree.""" 
 
22
        from bzrlib.add import smart_add
 
23
        paths = ("original/", "original/file1", "original/file2")
 
24
        self.build_tree(paths)
 
25
        branch = Branch(".", init=True)
 
26
        os.chdir("original")
 
27
        smart_add((".",), recurse=True)
 
28
        for path in paths:
 
29
            self.assertNotEqual(branch.inventory.path2id(path), None)
 
30
 
 
31
    def test_add_tree_from_above_tree(self):
 
32
        """Test adding a tree from above the tree.""" 
 
33
        from bzrlib.add import smart_add
 
34
        paths = ("original/", "original/file1", "original/file2")
 
35
        branch_paths = ("branch/", "branch/original/", "branch/original/file1",
 
36
                        "branch/original/file2")
 
37
        self.build_tree(branch_paths)
 
38
        branch = Branch("branch", init=True)
 
39
        smart_add(("branch",))
 
40
        for path in paths:
 
41
            self.assertNotEqual(branch.inventory.path2id(path), None)
 
42
 
 
43
    def test_add_above_tree_preserves_tree(self):
 
44
        """Test nested trees are not affect by an add above them."""
 
45
        from bzrlib.add import smart_add, add_reporter_null
 
46
        
 
47
        paths = ("original/", "original/file1", "original/file2")
 
48
        child_paths = ("path",)
 
49
        full_child_paths = ("original/child", "original/child/path")
 
50
        build_paths = ("original/", "original/file1", "original/file2", 
 
51
                       "original/child/", "original/child/path")
 
52
        
 
53
        self.build_tree(build_paths)
 
54
        branch = Branch(".", init=True)
 
55
        child_branch = Branch("original/child", init=True)
 
56
        smart_add((".",), True, add_reporter_null)
 
57
        for path in paths:
 
58
            self.assertNotEqual((path, branch.inventory.path2id(path)),
 
59
                                (path, None))
 
60
        for path in full_child_paths:
 
61
            self.assertEqual((path, branch.inventory.path2id(path)),
 
62
                             (path, None))
 
63
        for path in child_paths:
 
64
            self.assertEqual(child_branch.inventory.path2id(path), None)
 
65
 
 
66
    def test_add_paths(self):
 
67
        """Test smart-adding a list of paths."""
 
68
        from bzrlib.add import smart_add
 
69
        paths = ("file1", "file2")
 
70
        self.build_tree(paths)
 
71
        branch = Branch(".", init=True)
 
72
        smart_add(paths)
 
73
        for path in paths:
 
74
            self.assertNotEqual(branch.inventory.path2id(path), None)
 
75
            
 
76
class TestSmartAddBranch(TestCaseInTempDir):
 
77
    """Test smart adds with a specified branch."""
 
78
 
 
79
    def test_add_dot_from_root(self):
 
80
        """Test adding . from the root of the tree.""" 
 
81
        from bzrlib.add import smart_add_branch
 
82
        paths = ("original/", "original/file1", "original/file2")
 
83
        self.build_tree(paths)
 
84
        branch = Branch(".", init=True)
 
85
        smart_add_branch(branch, (".",))
 
86
        for path in paths:
 
87
            self.assertNotEqual(branch.inventory.path2id(path), None)
 
88
 
 
89
    def test_add_dot_from_subdir(self):
 
90
        """Test adding . from a subdir of the tree.""" 
 
91
        from bzrlib.add import smart_add_branch
 
92
        paths = ("original/", "original/file1", "original/file2")
 
93
        self.build_tree(paths)
 
94
        branch = Branch(".", init=True)
 
95
        os.chdir("original")
 
96
        smart_add_branch(branch, (".",))
 
97
        for path in paths:
 
98
            self.assertNotEqual(branch.inventory.path2id(path), None)
 
99
 
 
100
    def test_add_tree_from_above_tree(self):
 
101
        """Test adding a tree from above the tree.""" 
 
102
        from bzrlib.add import smart_add_branch
 
103
        paths = ("original/", "original/file1", "original/file2")
 
104
        branch_paths = ("branch/", "branch/original/", "branch/original/file1",
 
105
                        "branch/original/file2")
 
106
        self.build_tree(branch_paths)
 
107
        branch = Branch("branch", init=True)
 
108
        smart_add_branch(branch, ("branch",))
 
109
        for path in paths:
 
110
            self.assertNotEqual(branch.inventory.path2id(path), None)
 
111
 
 
112
    def test_add_above_tree_preserves_tree(self):
 
113
        """Test nested trees are not affect by an add above them."""
 
114
        from bzrlib.add import smart_add_branch
 
115
        paths = ("original/", "original/file1", "original/file2")
 
116
        child_paths = ("path")
 
117
        full_child_paths = ("original/child", "original/child/path")
 
118
        build_paths = ("original/", "original/file1", "original/file2", 
 
119
                       "original/child/", "original/child/path")
 
120
        self.build_tree(build_paths)
 
121
        branch = Branch(".", init=True)
 
122
        child_branch = Branch("original/child", init=True)
 
123
        smart_add_branch(branch, (".",))
 
124
        for path in paths:
 
125
            self.assertNotEqual((path, branch.inventory.path2id(path)),
 
126
                                (path, None))
 
127
        for path in full_child_paths:
 
128
            self.assertEqual((path, branch.inventory.path2id(path)),
 
129
                             (path, None))
 
130
        for path in child_paths:
 
131
            self.assertEqual(child_branch.inventory.path2id(path), None)
 
132
 
 
133
    def test_add_paths(self):
 
134
        """Test smart-adding a list of paths."""
 
135
        from bzrlib.add import smart_add_branch
 
136
        paths = ("file1", "file2")
 
137
        self.build_tree(paths)
 
138
        branch = Branch(".", init=True)
 
139
        smart_add_branch(branch, paths)
 
140
        for path in paths:
 
141
            self.assertNotEqual(branch.inventory.path2id(path), None)
 
142
 
 
143
class TestAddCallbacks(TestCaseInTempDir):
 
144
 
 
145
    def setUp(self):
 
146
        from bzrlib.inventory import InventoryEntry
 
147
        super(TestAddCallbacks, self).setUp()
 
148
        self.entry = InventoryEntry("id", "name", "file", None)
 
149
 
 
150
    def test_null_callback(self):
 
151
        from bzrlib.add import add_reporter_null
 
152
        add_reporter_null('path', 'file', self.entry)
 
153
 
 
154
    def test_print_callback(self):
 
155
        from bzrlib.add import add_reporter_print
 
156
        from StringIO import StringIO
 
157
        stdout = StringIO()
 
158
        self.apply_redirected(None, stdout, None, add_reporter_print,
 
159
                              'path', 'file', self.entry)
 
160
        self.assertEqual(stdout.getvalue(), "added path\n")