~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-08-24 08:59:32 UTC
  • Revision ID: mbp@sourcefrog.net-20050824085932-c61f1f1f1c930e13
- Add a simple UIFactory 

  The idea of this is to let a client of bzrlib set some 
  policy about how output is displayed.

  In this revision all that's done is that progress bars
  are constructed by a policy established by the application
  rather than being randomly constructed in the library 
  or passed down the calls.  This avoids progress bars
  popping up while running the test suite and cleans up
  some code.

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")