~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_status.py

  • Committer: John Arbash Meinel
  • Date: 2006-02-15 15:18:44 UTC
  • mto: (1185.79.1 bzr-jam-pending)
  • mto: This revision was merged to the branch mainline in revision 1554.
  • Revision ID: john@arbash-meinel.com-20060215151844-ce3e3efccd19da3f
Reverting gpg changes, should not be mainline, see gpg_uses_tempfile plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
"""Tests of status command.
19
19
 
20
20
Most of these depend on the particular formatting used.
 
21
As such they really are blackbox tests even though some of the 
 
22
tests are not using self.capture. If we add tests for the programmatic
 
23
interface later, they will be non blackbox tests.
21
24
"""
22
25
 
23
26
 
24
 
from bzrlib.selftest import InTempDir
25
 
 
26
 
class BranchStatus(InTempDir):
 
27
from cStringIO import StringIO
 
28
from os import mkdir
 
29
from tempfile import TemporaryFile
 
30
import codecs
 
31
 
 
32
from bzrlib.builtins import merge
 
33
from bzrlib.revisionspec import RevisionSpec
 
34
from bzrlib.status import show_status
 
35
from bzrlib.tests import TestCaseInTempDir
 
36
from bzrlib.workingtree import WorkingTree
 
37
 
 
38
 
 
39
class BranchStatus(TestCaseInTempDir):
27
40
    
28
41
    def test_branch_status(self): 
29
 
        """Basic 'bzr mkdir' operation"""
30
 
        from cStringIO import StringIO
31
 
        from bzrlib.status import show_status
32
 
        from bzrlib.branch import Branch
33
 
        
34
 
        b = Branch('.', init=True)
 
42
        """Test basic branch status"""
 
43
        wt = WorkingTree.create_standalone('.')
 
44
        b = wt.branch
35
45
 
36
46
        # status with nothing
37
47
        tof = StringIO()
40
50
 
41
51
        tof = StringIO()
42
52
        self.build_tree(['hello.c', 'bye.c'])
 
53
        wt.add_pending_merge('pending@pending-0-0')
43
54
        show_status(b, to_file=tof)
44
55
        tof.seek(0)
45
56
        self.assertEquals(tof.readlines(),
46
57
                          ['unknown:\n',
47
58
                           '  bye.c\n',
48
59
                           '  hello.c\n',
49
 
                           ])
 
60
                           'pending merges:\n',
 
61
                           '  pending@pending-0-0\n'
 
62
                           ])
 
63
 
 
64
    def test_branch_status_revisions(self):
 
65
        """Tests branch status with revisions"""
 
66
        wt = WorkingTree.create_standalone('.')
 
67
        b = wt.branch
 
68
 
 
69
        tof = StringIO()
 
70
        self.build_tree(['hello.c', 'bye.c'])
 
71
        wt.add('hello.c')
 
72
        wt.add('bye.c')
 
73
        wt.commit('Test message')
 
74
 
 
75
        tof = StringIO()
 
76
        revs =[]
 
77
        revs.append(RevisionSpec(0))
 
78
        
 
79
        show_status(b, to_file=tof, revision=revs)
 
80
        
 
81
        tof.seek(0)
 
82
        self.assertEquals(tof.readlines(),
 
83
                          ['added:\n',
 
84
                           '  bye.c\n',
 
85
                           '  hello.c\n'])
 
86
 
 
87
        self.build_tree(['more.c'])
 
88
        wt.add('more.c')
 
89
        wt.commit('Another test message')
 
90
        
 
91
        tof = StringIO()
 
92
        revs.append(RevisionSpec(1))
 
93
        
 
94
        show_status(b, to_file=tof, revision=revs)
 
95
        
 
96
        tof.seek(0)
 
97
        self.assertEquals(tof.readlines(),
 
98
                          ['added:\n',
 
99
                           '  bye.c\n',
 
100
                           '  hello.c\n'])
 
101
 
 
102
    def status_string(self, branch):
 
103
        # use a real file rather than StringIO because it doesn't handle
 
104
        # Unicode very well.
 
105
        tof = codecs.getwriter('utf-8')(TemporaryFile())
 
106
        show_status(branch, to_file=tof)
 
107
        tof.seek(0)
 
108
        return tof.read().decode('utf-8')
 
109
 
 
110
    def test_pending(self):
 
111
        """Pending merges display works, including Unicode"""
 
112
        mkdir("./branch")
 
113
        wt = WorkingTree.create_standalone('branch')
 
114
        b = wt.branch
 
115
        wt.commit("Empty commit 1")
 
116
        b_2 = b.clone('./copy')
 
117
        wt.commit(u"\N{TIBETAN DIGIT TWO} Empty commit 2")
 
118
        merge(["./branch", -1], [None, None], this_dir = './copy')
 
119
        message = self.status_string(b_2)
 
120
        self.assert_(message.startswith("pending merges:\n"))
 
121
        self.assert_(message.endswith("Empty commit 2\n")) 
 
122
        b_2.working_tree().commit("merged")
 
123
        # must be long to make sure we see elipsis at the end
 
124
        b.working_tree().commit("Empty commit 3 " + 
 
125
                                "blah blah blah blah " * 10)
 
126
        merge(["./branch", -1], [None, None], this_dir = './copy')
 
127
        message = self.status_string(b_2)
 
128
        self.assert_(message.startswith("pending merges:\n"))
 
129
        self.assert_("Empty commit 3" in message)
 
130
        self.assert_(message.endswith("...\n")) 
 
131
 
 
132
    def test_branch_status_specific_files(self): 
 
133
        """Tests branch status with given specific files"""
 
134
        wt = WorkingTree.create_standalone('.')
 
135
        b = wt.branch
 
136
 
 
137
        self.build_tree(['directory/','directory/hello.c', 'bye.c','test.c','dir2/'])
 
138
        wt.add('directory')
 
139
        wt.add('test.c')
 
140
        wt.commit('testing')
 
141
        
 
142
        tof = StringIO()
 
143
        show_status(b, to_file=tof)
 
144
        tof.seek(0)
 
145
        self.assertEquals(tof.readlines(),
 
146
                          ['unknown:\n',
 
147
                           '  bye.c\n',
 
148
                           '  dir2\n',
 
149
                           '  directory/hello.c\n'
 
150
                           ])
 
151
 
 
152
        tof = StringIO()
 
153
        show_status(b, specific_files=['bye.c','test.c','absent.c'], to_file=tof)
 
154
        tof.seek(0)
 
155
        self.assertEquals(tof.readlines(),
 
156
                          ['unknown:\n',
 
157
                           '  bye.c\n'
 
158
                           ])
 
159
        
 
160
        tof = StringIO()
 
161
        show_status(b, specific_files=['directory'], to_file=tof)
 
162
        tof.seek(0)
 
163
        self.assertEquals(tof.readlines(),
 
164
                          ['unknown:\n',
 
165
                           '  directory/hello.c\n'
 
166
                           ])
 
167
        tof = StringIO()
 
168
        show_status(b, specific_files=['dir2'], to_file=tof)
 
169
        tof.seek(0)
 
170
        self.assertEquals(tof.readlines(),
 
171
                          ['unknown:\n',
 
172
                           '  dir2\n'
 
173
                           ])
 
174
 
 
175
 
 
176
class TestStatus(TestCaseInTempDir):
 
177
 
 
178
    def test_status(self):
 
179
        self.run_bzr("init")
 
180
        self.build_tree(['hello.txt'])
 
181
        result = self.run_bzr("status")[0]
 
182
        self.assert_("unknown:\n  hello.txt\n" in result, result)
 
183
        self.run_bzr("add", "hello.txt")
 
184
        result = self.run_bzr("status")[0]
 
185
        self.assert_("added:\n  hello.txt\n" in result, result)
 
186
        self.run_bzr("commit", "-m", "added")
 
187
        result = self.run_bzr("status", "-r", "0..1")[0]
 
188
        self.assert_("added:\n  hello.txt\n" in result, result)
 
189
        self.build_tree(['world.txt'])
 
190
        result = self.run_bzr("status", "-r", "0")[0]
 
191
        self.assert_("added:\n  hello.txt\n" \
 
192
                     "unknown:\n  world.txt\n" in result, result)
 
193
 
 
194
        result2 = self.run_bzr("status", "-r", "0..")[0]
 
195
        self.assertEquals(result2, result)
 
196
 
50
197