22
22
interface later, they will be non blackbox tests.
25
from cStringIO import StringIO
27
26
from os import mkdir, chdir, rmdir, unlink
29
from tempfile import TemporaryFile
38
36
import breezy.branch
39
from breezy.osutils import pathjoin
40
from breezy.revisionspec import RevisionSpec
41
from breezy.status import show_tree_status
42
from breezy.tests import TestCaseWithTransport, TestSkipped
43
from breezy.workingtree import WorkingTree
37
from ...osutils import pathjoin
38
from ...revisionspec import RevisionSpec
39
from ...sixish import (
42
from ...status import show_tree_status
43
from .. import TestCaseWithTransport, TestSkipped
44
from ...workingtree import WorkingTree
46
47
class BranchStatus(TestCaseWithTransport):
67
68
def status_string(self, wt, specific_files=None, revision=None,
68
69
short=False, pending=True, verbose=False):
69
# use a real file rather than StringIO because it doesn't handle
71
tof = codecs.getwriter('utf-8')(TemporaryFile())
72
show_tree_status(wt, specific_files=specific_files, to_file=tof,
70
uio = self.make_utf8_encoded_stringio()
71
show_tree_status(wt, specific_files=specific_files, to_file=uio,
73
72
revision=revision, short=short, show_pending=pending,
76
return tof.read().decode('utf-8')
74
return uio.getvalue().decode('utf-8')
78
76
def test_branch_status(self):
79
77
"""Test basic branch status"""
243
241
self.assertRaises(errors.PathsDoNotExist,
244
242
show_tree_status,
245
243
wt, specific_files=['bye.c','test.c','absent.c'],
249
247
show_tree_status(wt, specific_files=['directory'], to_file=tof)
251
249
self.assertEqual(tof.readlines(),
253
251
' directory/hello.c\n'
256
254
show_tree_status(wt, specific_files=['directory'], to_file=tof,
259
257
self.assertEqual(tof.readlines(), ['? directory/hello.c\n'])
262
260
show_tree_status(wt, specific_files=['dir2'], to_file=tof)
264
262
self.assertEqual(tof.readlines(),
269
267
show_tree_status(wt, specific_files=['dir2'], to_file=tof, short=True)
271
269
self.assertEqual(tof.readlines(), ['? dir2/\n'])
274
272
revs = [RevisionSpec.from_string('0'), RevisionSpec.from_string('1')]
275
273
show_tree_status(wt, specific_files=['test.c'], to_file=tof,
276
274
short=True, revision=revs)
278
276
self.assertEqual(tof.readlines(), ['+N test.c\n'])
281
279
show_tree_status(wt, specific_files=['missing.c'], to_file=tof)
283
281
self.assertEqual(tof.readlines(),
288
286
show_tree_status(wt, specific_files=['missing.c'], to_file=tof,
298
296
tree.commit('added dir2')
299
297
tree.set_conflicts(conflicts.ConflictList(
300
298
[conflicts.ContentsConflict('foo')]))
302
300
show_tree_status(tree, specific_files=['dir2'], to_file=tof)
303
301
self.assertEqualDiff('', tof.getvalue())
304
302
tree.set_conflicts(conflicts.ConflictList(
305
303
[conflicts.ContentsConflict('dir2')]))
307
305
show_tree_status(tree, specific_files=['dir2'], to_file=tof)
308
306
self.assertEqualDiff('conflicts:\n Contents conflict in dir2\n',
311
309
tree.set_conflicts(conflicts.ConflictList(
312
310
[conflicts.ContentsConflict('dir2/file1')]))
314
312
show_tree_status(tree, specific_files=['dir2'], to_file=tof)
315
313
self.assertEqualDiff('conflicts:\n Contents conflict in dir2/file1\n',
470
468
self.assertContainsRe(err,
471
469
r'.*ERROR: Path\(s\) do not exist: '
475
473
'? UNVERSIONED_BUT_EXISTING\n',
479
477
'X NONEXISTENT\n',
482
479
out, err = self.run_bzr('status --short NONEXISTENT '
483
480
'FILE_A FILE_B UNVERSIONED_BUT_EXISTING '
484
481
'FILE_C FILE_D FILE_E FILE_Q', retcode=3)