60
60
def test_revert(self):
61
61
self.run_bzr('init')
63
file('hello', 'wt').write('foo')
63
with file('hello', 'wt') as f: f.write('foo')
64
64
self.run_bzr('add hello')
65
65
self.run_bzr('commit -m setup hello')
67
file('goodbye', 'wt').write('baz')
67
with file('goodbye', 'wt') as f: f.write('baz')
68
68
self.run_bzr('add goodbye')
69
69
self.run_bzr('commit -m setup goodbye')
71
file('hello', 'wt').write('bar')
72
file('goodbye', 'wt').write('qux')
71
with file('hello', 'wt') as f: f.write('bar')
72
with file('goodbye', 'wt') as f: f.write('qux')
73
73
self.run_bzr('revert hello')
74
74
self.check_file_contents('hello', 'foo')
75
75
self.check_file_contents('goodbye', 'qux')
110
110
def example_branch(test):
111
111
test.run_bzr('init')
112
file('hello', 'wt').write('foo')
112
with file('hello', 'wt') as f: f.write('foo')
113
113
test.run_bzr('add hello')
114
114
test.run_bzr('commit -m setup hello')
115
file('goodbye', 'wt').write('baz')
115
with file('goodbye', 'wt') as f: f.write('baz')
116
116
test.run_bzr('add goodbye')
117
117
test.run_bzr('commit -m setup goodbye')
128
128
self.run_bzr('branch a b')
130
open('b', 'wb').write('else\n')
130
with open('b', 'wb') as f: f.write('else\n')
131
131
self.run_bzr('add b')
132
132
self.run_bzr(['commit', '-m', 'added b'])
135
135
out = self.run_bzr('pull --verbose ../b')[0]
136
self.failIfEqual(out.find('Added Revisions:'), -1)
137
self.failIfEqual(out.find('message:\n added b'), -1)
138
self.failIfEqual(out.find('added b'), -1)
136
self.assertNotEqual(out.find('Added Revisions:'), -1)
137
self.assertNotEqual(out.find('message:\n added b'), -1)
138
self.assertNotEqual(out.find('added b'), -1)
140
140
# Check that --overwrite --verbose prints out the removed entries
141
141
self.run_bzr('commit -m foo --unchanged')
145
145
out = self.run_bzr('pull --overwrite --verbose ../a')[0]
147
147
remove_loc = out.find('Removed Revisions:')
148
self.failIfEqual(remove_loc, -1)
148
self.assertNotEqual(remove_loc, -1)
149
149
added_loc = out.find('Added Revisions:')
150
self.failIfEqual(added_loc, -1)
150
self.assertNotEqual(added_loc, -1)
152
152
removed_message = out.find('message:\n baz')
153
self.failIfEqual(removed_message, -1)
154
self.failUnless(remove_loc < removed_message < added_loc)
153
self.assertNotEqual(removed_message, -1)
154
self.assertTrue(remove_loc < removed_message < added_loc)
156
156
added_message = out.find('message:\n foo')
157
self.failIfEqual(added_message, -1)
158
self.failUnless(added_loc < added_message)
157
self.assertNotEqual(added_message, -1)
158
self.assertTrue(added_loc < added_message)
160
160
def test_locations(self):
161
161
"""Using and remembering different locations"""
188
188
def test_unknown_command(self):
189
189
"""Handling of unknown command."""
190
190
out, err = self.run_bzr('fluffy-badger', retcode=3)
191
self.assertEquals(out, '')
191
self.assertEqual(out, '')
192
192
err.index('unknown command')
194
194
def create_conflicts(self):
195
195
"""Create a conflicted tree"""
198
file('hello', 'wb').write("hi world")
199
file('answer', 'wb').write("42")
198
with file('hello', 'wb') as f: f.write("hi world")
199
with file('answer', 'wb') as f: f.write("42")
200
200
self.run_bzr('init')
201
201
self.run_bzr('add')
202
202
self.run_bzr('commit -m base')
203
203
self.run_bzr('branch . ../other')
204
204
self.run_bzr('branch . ../this')
205
205
os.chdir('../other')
206
file('hello', 'wb').write("Hello.")
207
file('answer', 'wb').write("Is anyone there?")
206
with file('hello', 'wb') as f: f.write("Hello.")
207
with file('answer', 'wb') as f: f.write("Is anyone there?")
208
208
self.run_bzr('commit -m other')
209
209
os.chdir('../this')
210
file('hello', 'wb').write("Hello, world")
210
with file('hello', 'wb') as f: f.write("Hello, world")
211
211
self.run_bzr('mv answer question')
212
file('question', 'wb').write("What do you get when you multiply six"
212
with file('question', 'wb') as f: f.write("What do you get when you multiply six"
214
214
self.run_bzr('commit -m this')
234
234
self.create_conflicts()
235
235
self.run_bzr('merge ../other --show-base', retcode=1)
236
236
conflict_text = file('hello').read()
237
self.assert_('<<<<<<<' in conflict_text)
238
self.assert_('>>>>>>>' in conflict_text)
239
self.assert_('=======' in conflict_text)
240
self.assert_('|||||||' in conflict_text)
241
self.assert_('hi world' in conflict_text)
237
self.assertTrue('<<<<<<<' in conflict_text)
238
self.assertTrue('>>>>>>>' in conflict_text)
239
self.assertTrue('=======' in conflict_text)
240
self.assertTrue('|||||||' in conflict_text)
241
self.assertTrue('hi world' in conflict_text)
242
242
self.run_bzr('revert')
243
243
self.run_bzr('resolve --all')
244
244
self.run_bzr('merge ../other', retcode=1)
245
245
conflict_text = file('hello').read()
246
self.assert_('|||||||' not in conflict_text)
247
self.assert_('hi world' not in conflict_text)
246
self.assertTrue('|||||||' not in conflict_text)
247
self.assertTrue('hi world' not in conflict_text)
248
248
result = self.run_bzr('conflicts')[0]
249
self.assertEquals(result, "Text conflict in hello\nText conflict in"
249
self.assertEqual(result, "Text conflict in hello\nText conflict in"
251
251
result = self.run_bzr('status')[0]
252
self.assert_("conflicts:\n Text conflict in hello\n"
252
self.assertTrue("conflicts:\n Text conflict in hello\n"
253
253
" Text conflict in question\n" in result, result)
254
254
self.run_bzr('resolve hello')
255
255
result = self.run_bzr('conflicts')[0]
256
self.assertEquals(result, "Text conflict in question\n")
256
self.assertEqual(result, "Text conflict in question\n")
257
257
self.run_bzr('commit -m conflicts', retcode=3)
258
258
self.run_bzr('resolve --all')
259
259
result = self.run_bzr('conflicts')[0]
260
260
self.run_bzr('commit -m conflicts')
261
self.assertEquals(result, "")
261
self.assertEqual(result, "")
263
263
def test_push(self):
264
264
# create a source branch
315
315
cmd_name = 'test-command'
316
316
if sys.platform == 'win32':
317
317
cmd_name += '.bat'
318
oldpath = os.environ.get('BZRPATH', None)
320
if 'BZRPATH' in os.environ:
321
del os.environ['BZRPATH']
323
f = file(cmd_name, 'wb')
324
if sys.platform == 'win32':
325
f.write('@echo off\n')
327
f.write('#!/bin/sh\n')
328
# f.write('echo Hello from test-command')
330
os.chmod(cmd_name, 0755)
332
# It should not find the command in the local
333
# directory by default, since it is not in my path
334
self.run_bzr(cmd_name, retcode=3)
336
# Now put it into my path
337
os.environ['BZRPATH'] = '.'
339
self.run_bzr(cmd_name)
341
# Make sure empty path elements are ignored
342
os.environ['BZRPATH'] = os.pathsep
344
self.run_bzr(cmd_name, retcode=3)
348
os.environ['BZRPATH'] = oldpath
318
self.overrideEnv('BZRPATH', None)
320
f = file(cmd_name, 'wb')
321
if sys.platform == 'win32':
322
f.write('@echo off\n')
324
f.write('#!/bin/sh\n')
325
# f.write('echo Hello from test-command')
327
os.chmod(cmd_name, 0755)
329
# It should not find the command in the local
330
# directory by default, since it is not in my path
331
self.run_bzr(cmd_name, retcode=3)
333
# Now put it into my path
334
self.overrideEnv('BZRPATH', '.')
335
self.run_bzr(cmd_name)
337
# Make sure empty path elements are ignored
338
self.overrideEnv('BZRPATH', os.pathsep)
339
self.run_bzr(cmd_name, retcode=3)
351
342
def listdir_sorted(dir):
377
368
f.write('hello world!\n')
380
self.assertEquals(self.run_bzr('unknowns')[0], 'test.txt\n')
371
self.assertEqual(self.run_bzr('unknowns')[0], 'test.txt\n')
382
373
out = self.run_bzr("status")[0]
383
self.assertEquals(out, 'unknown:\n test.txt\n')
374
self.assertEqual(out, 'unknown:\n test.txt\n')
385
376
f = file('test2.txt', 'wt')
386
377
f.write('goodbye cruel world...\n')
389
380
out = self.run_bzr("status test.txt")[0]
390
self.assertEquals(out, "unknown:\n test.txt\n")
381
self.assertEqual(out, "unknown:\n test.txt\n")
392
383
out = self.run_bzr("status")[0]
393
self.assertEquals(out, ("unknown:\n" " test.txt\n" " test2.txt\n"))
384
self.assertEqual(out, ("unknown:\n" " test.txt\n" " test2.txt\n"))
395
386
os.unlink('test2.txt')
397
388
progress("command aliases")
398
389
out = self.run_bzr("st")[0]
399
self.assertEquals(out, ("unknown:\n" " test.txt\n"))
390
self.assertEqual(out, ("unknown:\n" " test.txt\n"))
401
392
out = self.run_bzr("stat")[0]
402
self.assertEquals(out, ("unknown:\n" " test.txt\n"))
393
self.assertEqual(out, ("unknown:\n" " test.txt\n"))
404
395
progress("command help")
405
396
self.run_bzr("help st")
431
422
self.run_bzr('log -v --forward')
432
423
self.run_bzr('log -m', retcode=3)
433
424
log_out = self.run_bzr('log -m commit')[0]
434
self.assert_("this is my new commit\n and" in log_out)
435
self.assert_("rename nested" not in log_out)
436
self.assert_('revision-id' not in log_out)
437
self.assert_('revision-id' in self.run_bzr('log --show-ids -m commit')[0])
425
self.assertTrue("this is my new commit\n and" in log_out)
426
self.assertTrue("rename nested" not in log_out)
427
self.assertTrue('revision-id' not in log_out)
428
self.assertTrue('revision-id' in self.run_bzr('log --show-ids -m commit')[0])
439
430
log_out = self.run_bzr('log --line')[0]
440
431
# determine the widest line we want
441
432
max_width = osutils.terminal_width()
442
433
if max_width is not None:
443
434
for line in log_out.splitlines():
444
self.assert_(len(line) <= max_width - 1, len(line))
445
self.assert_("this is my new commit and" not in log_out)
446
self.assert_("this is my new commit" in log_out)
435
self.assertTrue(len(line) <= max_width - 1, len(line))
436
self.assertTrue("this is my new commit and" not in log_out)
437
self.assertTrue("this is my new commit" in log_out)
448
439
progress("file with spaces in name")
449
440
mkdir('sub directory')
450
file('sub directory/file with spaces ', 'wt').write('see how this works\n')
441
with file('sub directory/file with spaces ', 'wt') as f: f.write('see how this works\n')
451
442
self.run_bzr('add .')
452
443
self.run_bzr('diff', retcode=1)
453
444
self.run_bzr('commit -m add-spaces')
465
456
self.run_bzr('init')
466
457
os.symlink("NOWHERE1", "link1")
467
458
self.run_bzr('add link1')
468
self.assertEquals(self.run_bzr('unknowns')[0], '')
459
self.assertEqual(self.run_bzr('unknowns')[0], '')
469
460
self.run_bzr(['commit', '-m', '1: added symlink link1'])
472
463
self.run_bzr('add d1')
473
self.assertEquals(self.run_bzr('unknowns')[0], '')
464
self.assertEqual(self.run_bzr('unknowns')[0], '')
474
465
os.symlink("NOWHERE2", "d1/link2")
475
self.assertEquals(self.run_bzr('unknowns')[0], 'd1/link2\n')
466
self.assertEqual(self.run_bzr('unknowns')[0], 'd1/link2\n')
476
467
# is d1/link2 found when adding d1
477
468
self.run_bzr('add d1')
478
self.assertEquals(self.run_bzr('unknowns')[0], '')
469
self.assertEqual(self.run_bzr('unknowns')[0], '')
479
470
os.symlink("NOWHERE3", "d1/link3")
480
self.assertEquals(self.run_bzr('unknowns')[0], 'd1/link3\n')
471
self.assertEqual(self.run_bzr('unknowns')[0], 'd1/link3\n')
481
472
self.run_bzr(['commit', '-m', '2: added dir, symlink'])
483
474
self.run_bzr('rename d1 d2')
484
475
self.run_bzr('move d2/link2 .')
485
476
self.run_bzr('move link1 d2')
486
self.assertEquals(os.readlink("./link2"), "NOWHERE2")
487
self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
477
self.assertEqual(os.readlink("./link2"), "NOWHERE2")
478
self.assertEqual(os.readlink("d2/link1"), "NOWHERE1")
488
479
self.run_bzr('add d2/link3')
489
480
self.run_bzr('diff', retcode=1)
490
481
self.run_bzr(['commit', '-m',
495
486
os.unlink("d2/link1")
496
487
os.symlink("TARGET 1", "d2/link1")
497
488
self.run_bzr('diff', retcode=1)
498
self.assertEquals(self.run_bzr("relpath d2/link1")[0], "d2/link1\n")
489
self.assertEqual(self.run_bzr("relpath d2/link1")[0], "d2/link1\n")
499
490
self.run_bzr(['commit', '-m', '4: retarget of two links'])
501
492
self.run_bzr('remove --keep d2/link1')
502
self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
493
self.assertEqual(self.run_bzr('unknowns')[0], 'd2/link1\n')
503
494
self.run_bzr(['commit', '-m', '5: remove d2/link1'])
504
495
# try with the rm alias
505
496
self.run_bzr('add d2/link1')
506
497
self.run_bzr(['commit', '-m', '6: add d2/link1'])
507
498
self.run_bzr('rm --keep d2/link1')
508
self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
499
self.assertEqual(self.run_bzr('unknowns')[0], 'd2/link1\n')
509
500
self.run_bzr(['commit', '-m', '7: remove d2/link1'])
512
503
self.run_bzr('add d1')
513
504
self.run_bzr('rename d2/link3 d1/link3new')
514
self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
505
self.assertEqual(self.run_bzr('unknowns')[0], 'd2/link1\n')
515
506
self.run_bzr(['commit', '-m',
516
507
'8: remove d2/link1, move/rename link3'])
520
511
self.run_bzr('export -r 1 exp1.tmp')
521
512
chdir("exp1.tmp")
522
self.assertEquals(listdir_sorted("."), [ "link1" ])
523
self.assertEquals(os.readlink("link1"), "NOWHERE1")
513
self.assertEqual(listdir_sorted("."), [ "link1" ])
514
self.assertEqual(os.readlink("link1"), "NOWHERE1")
526
517
self.run_bzr('export -r 2 exp2.tmp')
527
518
chdir("exp2.tmp")
528
self.assertEquals(listdir_sorted("."), [ "d1", "link1" ])
519
self.assertEqual(listdir_sorted("."), [ "d1", "link1" ])
531
522
self.run_bzr('export -r 3 exp3.tmp')
532
523
chdir("exp3.tmp")
533
self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
534
self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
535
self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
536
self.assertEquals(os.readlink("link2") , "NOWHERE2")
524
self.assertEqual(listdir_sorted("."), [ "d2", "link2" ])
525
self.assertEqual(listdir_sorted("d2"), [ "link1", "link3" ])
526
self.assertEqual(os.readlink("d2/link1"), "NOWHERE1")
527
self.assertEqual(os.readlink("link2") , "NOWHERE2")
539
530
self.run_bzr('export -r 4 exp4.tmp')
540
531
chdir("exp4.tmp")
541
self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
542
self.assertEquals(os.readlink("d2/link1"), "TARGET 1")
543
self.assertEquals(os.readlink("link2") , "TARGET 2")
544
self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
532
self.assertEqual(listdir_sorted("."), [ "d2", "link2" ])
533
self.assertEqual(os.readlink("d2/link1"), "TARGET 1")
534
self.assertEqual(os.readlink("link2") , "TARGET 2")
535
self.assertEqual(listdir_sorted("d2"), [ "link1", "link3" ])
547
538
self.run_bzr('export -r 5 exp5.tmp')
548
539
chdir("exp5.tmp")
549
self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
550
self.assert_(os.path.islink("link2"))
551
self.assert_(listdir_sorted("d2")== [ "link3" ])
540
self.assertEqual(listdir_sorted("."), [ "d2", "link2" ])
541
self.assertTrue(os.path.islink("link2"))
542
self.assertTrue(listdir_sorted("d2")== [ "link3" ])
554
545
self.run_bzr('export -r 8 exp6.tmp')
555
546
chdir("exp6.tmp")
556
547
self.assertEqual(listdir_sorted("."), [ "d1", "d2", "link2"])
557
self.assertEquals(listdir_sorted("d1"), [ "link3new" ])
558
self.assertEquals(listdir_sorted("d2"), [])
559
self.assertEquals(os.readlink("d1/link3new"), "NOWHERE3")
548
self.assertEqual(listdir_sorted("d1"), [ "link3new" ])
549
self.assertEqual(listdir_sorted("d2"), [])
550
self.assertEqual(os.readlink("d1/link3new"), "NOWHERE3")
562
553
progress("skipping symlink tests")