24
from bzrlib.selftest import InTempDir
26
class BranchStatus(InTempDir):
24
from cStringIO import StringIO
26
from tempfile import TemporaryFile
29
from bzrlib.tests import TestCaseInTempDir
30
from bzrlib.revisionspec import RevisionSpec
31
from bzrlib.merge import merge
32
from bzrlib.status import show_status
33
from bzrlib.branch import Branch
34
from bzrlib.clone import copy_branch
36
class BranchStatus(TestCaseInTempDir):
28
38
def test_branch_status(self):
29
"""Basic 'bzr mkdir' operation"""
30
from cStringIO import StringIO
39
"""Test basic branch status"""
31
40
from bzrlib.status import show_status
32
41
from bzrlib.branch import Branch
34
b = Branch('.', init=True)
43
b = Branch.initialize(u'.')
36
45
# status with nothing
42
51
self.build_tree(['hello.c', 'bye.c'])
52
b.working_tree().add_pending_merge('pending@pending-0-0')
43
53
show_status(b, to_file=tof)
45
55
self.assertEquals(tof.readlines(),
60
' pending@pending-0-0\n'
63
def test_branch_status_revisions(self):
64
"""Tests branch status with revisions"""
66
b = Branch.initialize(u'.')
69
self.build_tree(['hello.c', 'bye.c'])
70
b.working_tree().add('hello.c')
71
b.working_tree().add('bye.c')
72
b.working_tree().commit('Test message')
76
revs.append(RevisionSpec(0))
78
show_status(b, to_file=tof, revision=revs)
81
self.assertEquals(tof.readlines(),
86
self.build_tree(['more.c'])
87
b.working_tree().add('more.c')
88
b.working_tree().commit('Another test message')
91
revs.append(RevisionSpec(1))
93
show_status(b, to_file=tof, revision=revs)
96
self.assertEquals(tof.readlines(),
101
def status_string(self, branch):
102
# use a real file rather than StringIO because it doesn't handle
104
tof = codecs.getwriter('utf-8')(TemporaryFile())
105
show_status(branch, to_file=tof)
107
return tof.read().decode('utf-8')
109
def test_pending(self):
110
"""Pending merges display works, including Unicode"""
112
b = Branch.initialize('./branch')
113
b.working_tree().commit("Empty commit 1")
114
b_2 = copy_branch(b, './copy')
115
b.working_tree().commit(u"\N{TIBETAN DIGIT TWO} Empty commit 2")
116
merge(["./branch", -1], [None, None], this_dir = './copy')
117
message = self.status_string(b_2)
118
self.assert_(message.startswith("pending merges:\n"))
119
self.assert_(message.endswith("Empty commit 2\n"))
120
b_2.working_tree().commit("merged")
121
# must be long to make sure we see elipsis at the end
122
b.working_tree().commit("Empty commit 3 " +
123
"blah blah blah blah " * 10)
124
merge(["./branch", -1], [None, None], this_dir = './copy')
125
message = self.status_string(b_2)
126
self.assert_(message.startswith("pending merges:\n"))
127
self.assert_("Empty commit 3" in message)
128
self.assert_(message.endswith("...\n"))
130
def test_branch_status_specific_files(self):
131
"""Tests branch status with given specific files"""
132
from cStringIO import StringIO
133
from bzrlib.status import show_status
134
from bzrlib.branch import Branch
136
b = Branch.initialize(u'.')
138
self.build_tree(['directory/','directory/hello.c', 'bye.c','test.c','dir2/'])
139
b.working_tree().add('directory')
140
b.working_tree().add('test.c')
141
b.working_tree().commit('testing')
144
show_status(b, to_file=tof)
146
self.assertEquals(tof.readlines(),
150
' directory/hello.c\n'
154
show_status(b, specific_files=['bye.c','test.c','absent.c'], to_file=tof)
156
self.assertEquals(tof.readlines(),
162
show_status(b, specific_files=['directory'], to_file=tof)
164
self.assertEquals(tof.readlines(),
166
' directory/hello.c\n'
169
show_status(b, specific_files=['dir2'], to_file=tof)
171
self.assertEquals(tof.readlines(),