44
41
class BranchStatus(TestCaseWithTransport):
46
43
def assertStatus(self, expected_lines, working_tree,
47
revision=None, short=False, pending=True):
44
revision=None, short=False):
48
45
"""Run status in working_tree and look for output.
50
47
:param expected_lines: The lines to look for.
51
48
:param working_tree: The tree to run status in.
53
output_string = self.status_string(working_tree, revision, short,
50
output_string = self.status_string(working_tree, revision, short)
55
51
self.assertEqual(expected_lines, output_string.splitlines(True))
57
def status_string(self, wt, revision=None, short=False, pending=True):
53
def status_string(self, wt, revision=None, short=False):
58
54
# use a real file rather than StringIO because it doesn't handle
59
55
# Unicode very well.
60
56
tof = codecs.getwriter('utf-8')(TemporaryFile())
61
show_tree_status(wt, to_file=tof, revision=revision, short=short,
57
show_tree_status(wt, to_file=tof, revision=revision, short=short)
64
59
return tof.read().decode('utf-8')
244
228
self.assertEquals(tof.readlines(), ['? dir2/\n'])
247
revs = [RevisionSpec.from_string('0'), RevisionSpec.from_string('1')]
248
show_tree_status(wt, specific_files=['test.c'], to_file=tof,
249
short=True, revision=revs)
251
self.assertEquals(tof.readlines(), ['+N test.c\n'])
253
def test_specific_files_conflicts(self):
254
tree = self.make_branch_and_tree('.')
255
self.build_tree(['dir2/'])
257
tree.commit('added dir2')
258
tree.set_conflicts(conflicts.ConflictList(
259
[conflicts.ContentsConflict('foo')]))
261
show_tree_status(tree, specific_files=['dir2'], to_file=tof)
262
self.assertEqualDiff('', tof.getvalue())
263
tree.set_conflicts(conflicts.ConflictList(
264
[conflicts.ContentsConflict('dir2')]))
266
show_tree_status(tree, specific_files=['dir2'], to_file=tof)
267
self.assertEqualDiff('conflicts:\n Contents conflict in dir2\n',
270
tree.set_conflicts(conflicts.ConflictList(
271
[conflicts.ContentsConflict('dir2/file1')]))
273
show_tree_status(tree, specific_files=['dir2'], to_file=tof)
274
self.assertEqualDiff('conflicts:\n Contents conflict in dir2/file1\n',
277
230
def test_status_nonexistent_file(self):
278
231
# files that don't exist in either the basis tree or working tree
279
232
# should give an error
280
233
wt = self.make_branch_and_tree('.')
281
out, err = self.run_bzr('status does-not-exist', retcode=3)
234
out, err = self.run_bzr('status', 'does-not-exist', retcode=3)
282
235
self.assertContainsRe(err, r'do not exist.*does-not-exist')
284
237
def test_status_out_of_date(self):
316
268
class TestStatus(TestCaseWithTransport):
318
270
def test_status_plain(self):
319
tree = self.make_branch_and_tree('.')
321
273
self.build_tree(['hello.txt'])
322
274
result = self.run_bzr("status")[0]
323
275
self.assertContainsRe(result, "unknown:\n hello.txt\n")
325
tree.add("hello.txt")
277
self.run_bzr("add", "hello.txt")
326
278
result = self.run_bzr("status")[0]
327
279
self.assertContainsRe(result, "added:\n hello.txt\n")
329
tree.commit(message="added")
330
result = self.run_bzr("status -r 0..1")[0]
331
self.assertContainsRe(result, "added:\n hello.txt\n")
333
result = self.run_bzr("status -c 1")[0]
281
self.run_bzr("commit", "-m", "added")
282
result = self.run_bzr("status", "-r", "0..1")[0]
334
283
self.assertContainsRe(result, "added:\n hello.txt\n")
336
285
self.build_tree(['world.txt'])
337
result = self.run_bzr("status -r 0")[0]
286
result = self.run_bzr("status", "-r", "0")[0]
338
287
self.assertContainsRe(result, "added:\n hello.txt\n" \
339
288
"unknown:\n world.txt\n")
340
result2 = self.run_bzr("status -r 0..")[0]
289
result2 = self.run_bzr("status", "-r", "0..")[0]
341
290
self.assertEquals(result2, result)
343
292
def test_status_short(self):
344
tree = self.make_branch_and_tree('.')
346
295
self.build_tree(['hello.txt'])
347
result = self.run_bzr("status --short")[0]
296
result = self.run_bzr("status","--short")[0]
348
297
self.assertContainsRe(result, "[?] hello.txt\n")
350
tree.add("hello.txt")
351
result = self.run_bzr("status --short")[0]
299
self.run_bzr("add", "hello.txt")
300
result = self.run_bzr("status","--short")[0]
352
301
self.assertContainsRe(result, "[+]N hello.txt\n")
354
tree.commit(message="added")
355
result = self.run_bzr("status --short -r 0..1")[0]
303
self.run_bzr("commit", "-m", "added")
304
result = self.run_bzr("status", "--short", "-r", "0..1")[0]
356
305
self.assertContainsRe(result, "[+]N hello.txt\n")
358
307
self.build_tree(['world.txt'])
359
result = self.run_bzr("status --short -r 0")[0]
308
result = self.run_bzr("status", "--short", "-r", "0")[0]
360
309
self.assertContainsRe(result, "[+]N hello.txt\n" \
361
310
"[?] world.txt\n")
362
result2 = self.run_bzr("status --short -r 0..")[0]
311
result2 = self.run_bzr("status", "--short", "-r", "0..")[0]
363
312
self.assertEquals(result2, result)
365
314
def test_status_versioned(self):
366
tree = self.make_branch_and_tree('.')
368
317
self.build_tree(['hello.txt'])
369
result = self.run_bzr("status --versioned")[0]
318
result = self.run_bzr("status", "--versioned")[0]
370
319
self.assertNotContainsRe(result, "unknown:\n hello.txt\n")
372
tree.add("hello.txt")
373
result = self.run_bzr("status --versioned")[0]
321
self.run_bzr("add", "hello.txt")
322
result = self.run_bzr("status", "--versioned")[0]
374
323
self.assertContainsRe(result, "added:\n hello.txt\n")
377
result = self.run_bzr("status --versioned -r 0..1")[0]
325
self.run_bzr("commit", "-m", "added")
326
result = self.run_bzr("status", "--versioned", "-r", "0..1")[0]
378
327
self.assertContainsRe(result, "added:\n hello.txt\n")
380
329
self.build_tree(['world.txt'])
381
result = self.run_bzr("status --versioned -r 0")[0]
330
result = self.run_bzr("status", "--versioned", "-r", "0")[0]
382
331
self.assertContainsRe(result, "added:\n hello.txt\n")
383
332
self.assertNotContainsRe(result, "unknown:\n world.txt\n")
384
result2 = self.run_bzr("status --versioned -r 0..")[0]
385
self.assertEquals(result2, result)
387
def test_status_SV(self):
388
tree = self.make_branch_and_tree('.')
390
self.build_tree(['hello.txt'])
391
result = self.run_bzr("status -SV")[0]
392
self.assertNotContainsRe(result, "hello.txt")
394
tree.add("hello.txt")
395
result = self.run_bzr("status -SV")[0]
396
self.assertContainsRe(result, "[+]N hello.txt\n")
398
tree.commit(message="added")
399
result = self.run_bzr("status -SV -r 0..1")[0]
400
self.assertContainsRe(result, "[+]N hello.txt\n")
402
self.build_tree(['world.txt'])
403
result = self.run_bzr("status -SV -r 0")[0]
404
self.assertContainsRe(result, "[+]N hello.txt\n")
406
result2 = self.run_bzr("status -SV -r 0..")[0]
333
result2 = self.run_bzr("status", "--versioned", "-r", "0..")[0]
407
334
self.assertEquals(result2, result)
409
336
def assertStatusContains(self, pattern):
410
337
"""Run status, and assert it contains the given pattern"""
411
result = self.run_bzr("status --short")[0]
338
result = self.run_bzr("status", "--short")[0]
412
339
self.assertContainsRe(result, pattern)
414
341
def test_kind_change_short(self):