72
72
self.assert_(os.path.exists('subdir1'))
73
73
self.assert_(os.path.exists('subdir1/.bzr'))
75
self.runbzr('init subdir2/nothere', retcode=2)
75
self.runbzr('init subdir2/nothere', retcode=3)
77
77
os.mkdir('subdir2')
78
78
self.runbzr('init subdir2')
79
self.runbzr('init subdir2', retcode=1)
79
self.runbzr('init subdir2', retcode=3)
81
81
self.runbzr('init subdir2/subsubdir1')
82
82
self.assert_(os.path.exists('subdir2/subsubdir1/.bzr'))
112
112
if bzr_email is not None:
113
113
os.environ['BZREMAIL'] = bzr_email
115
def test_nick_command(self):
116
"""bzr nick for viewing, setting nicknames"""
120
nick = self.runbzr("nick",backtick=True)
121
self.assertEqual(nick, 'me.dev\n')
122
nick = self.runbzr("nick moo")
123
nick = self.runbzr("nick",backtick=True)
124
self.assertEqual(nick, 'moo\n')
115
127
def test_invalid_commands(self):
116
self.runbzr("pants", retcode=1)
117
self.runbzr("--pants off", retcode=1)
118
self.runbzr("diff --message foo", retcode=1)
128
self.runbzr("pants", retcode=3)
129
self.runbzr("--pants off", retcode=3)
130
self.runbzr("diff --message foo", retcode=3)
120
132
def test_empty_commit(self):
121
133
self.runbzr("init")
122
134
self.build_tree(['hello.txt'])
123
self.runbzr("commit -m empty", retcode=1)
135
self.runbzr("commit -m empty", retcode=3)
124
136
self.runbzr("add hello.txt")
125
137
self.runbzr("commit -m added")
128
140
self.runbzr("init")
129
141
file('foo.c', 'wt').write('int main() {}')
130
142
self.runbzr(['add', 'foo.c'])
131
self.runbzr(["commit", "-m", ""] , retcode=1)
143
self.runbzr(["commit", "-m", ""] , retcode=3)
133
145
def test_other_branch_commit(self):
134
146
# this branch is to ensure consistent behaviour, whether we're run
145
157
self.runbzr(['add', 'branch/foo.c'])
146
158
self.runbzr(['add', 'branch'])
147
159
# can't commit files in different trees; sane error
148
self.runbzr('commit -m newstuff branch/foo.c .', retcode=1)
160
self.runbzr('commit -m newstuff branch/foo.c .', retcode=3)
149
161
self.runbzr('commit -m newstuff branch/foo.c')
150
162
self.runbzr('commit -m newstuff branch')
151
self.runbzr('commit -m newstuff branch', retcode=1)
163
self.runbzr('commit -m newstuff branch', retcode=3)
154
166
def test_ignore_patterns(self):
326
338
self.assert_('\n+hello world!' in output)
327
339
output = self.runbzr('diff -r last:3..last:1', backtick=1, retcode=1)
328
340
self.assert_('\n+baz' in output)
341
file('moo', 'wb').write('moo')
342
self.runbzr('add moo')
330
346
def test_diff_branches(self):
331
347
self.build_tree(['branch1/', 'branch1/file', 'branch2/'])
343
359
self.assertEquals(("=== modified file 'file'\n"
346
362
"@@ -1,1 +1,1 @@\n"
348
364
"+contents of branch1/file\n"
349
365
"\n", ''), output)
366
output = self.run_bzr_captured(['diff', 'branch2', 'branch1'],
368
self.assertEqualDiff(("=== modified file 'file'\n"
373
"+contents of branch1/file\n"
351
377
def test_branch(self):
352
378
"""Branch from one branch to another."""
383
409
file('hello', 'wt').write('quuux')
384
410
# We can't merge when there are in-tree changes
385
self.runbzr('merge ../b', retcode=1)
411
self.runbzr('merge ../b', retcode=3)
386
412
self.runbzr(['commit', '-m', "Like an epidemic of u's"])
387
413
self.runbzr('merge ../b -r last:1..last:1 --merge-type blooof',
389
415
self.runbzr('merge ../b -r last:1..last:1 --merge-type merge3')
390
416
self.runbzr('revert --no-backup')
391
417
self.runbzr('merge ../b -r last:1..last:1 --merge-type weave')
447
473
self.example_branch()
448
self.runbzr('pull', retcode=1)
449
self.runbzr('missing', retcode=1)
474
self.runbzr('pull', retcode=3)
475
self.runbzr('missing', retcode=3)
450
476
self.runbzr('missing .')
451
477
self.runbzr('missing')
452
478
self.runbzr('pull')
453
self.runbzr('pull /', retcode=1)
479
self.runbzr('pull /', retcode=3)
454
480
self.runbzr('pull')
471
497
self.runbzr('commit -m blah3 --unchanged')
473
self.runbzr('pull ../a', retcode=1)
499
self.runbzr('pull ../a', retcode=3)
475
501
self.runbzr('branch b overwriteme')
476
502
os.chdir('overwriteme')
510
536
open('a', 'wb').write('hello\n')
512
538
# Can't supply both
513
bzr('ls --verbose --null', retcode=1)
539
bzr('ls --verbose --null', retcode=3)
516
542
ls_equals('? a\n', '--verbose')
604
630
self.runbzr('init')
605
631
self.runbzr('commit -m unchanged --unchanged')
606
self.runbzr('pull', retcode=1)
607
self.runbzr('merge', retcode=1)
632
self.runbzr('pull', retcode=3)
633
self.runbzr('merge', retcode=3)
608
634
self.runbzr('branch . ../b')
610
636
self.runbzr('pull')
649
675
def test_unknown_command(self):
650
676
"""Handling of unknown command."""
651
677
out, err = self.run_bzr_captured(['fluffy-badger'],
653
679
self.assertEquals(out, '')
654
680
err.index('unknown command')
656
def test_conflicts(self):
657
"""Handling of merge conflicts"""
682
def create_conflicts(self):
683
"""Create a conflicted tree"""
660
686
file('hello', 'wb').write("hi world")
674
700
file('question', 'wb').write("What do you get when you multiply six"
676
702
self.runbzr('commit -m this')
704
def test_remerge(self):
705
"""Remerge command works as expected"""
706
self.create_conflicts()
707
self.runbzr('merge ../other --show-base', retcode=1)
708
conflict_text = file('hello').read()
709
assert '|||||||' in conflict_text
710
assert 'hi world' in conflict_text
711
self.runbzr('remerge', retcode=1)
712
conflict_text = file('hello').read()
713
assert '|||||||' not in conflict_text
714
assert 'hi world' not in conflict_text
715
os.unlink('hello.OTHER')
716
self.runbzr('remerge hello --merge-type weave', retcode=1)
717
assert os.path.exists('hello.OTHER')
718
file_id = self.runbzr('file-id hello')
719
file_id = self.runbzr('file-id hello.THIS', retcode=3)
720
self.runbzr('remerge --merge-type weave', retcode=1)
721
assert os.path.exists('hello.OTHER')
722
assert not os.path.exists('hello.BASE')
723
assert '|||||||' not in conflict_text
724
assert 'hi world' not in conflict_text
725
self.runbzr('remerge . --merge-type weave --show-base', retcode=3)
726
self.runbzr('remerge . --merge-type weave --reprocess', retcode=3)
727
self.runbzr('remerge . --show-base --reprocess', retcode=3)
728
self.runbzr('remerge hello --show-base', retcode=1)
729
self.runbzr('remerge hello --reprocess', retcode=1)
730
self.runbzr('resolve --all')
731
self.runbzr('commit -m done',)
732
self.runbzr('remerge', retcode=3)
735
def test_conflicts(self):
736
"""Handling of merge conflicts"""
737
self.create_conflicts()
677
738
self.runbzr('merge ../other --show-base', retcode=1)
678
739
conflict_text = file('hello').read()
679
740
self.assert_('<<<<<<<' in conflict_text)
694
755
self.runbzr('resolve hello')
695
756
result = self.runbzr('conflicts', backtick=1)
696
757
self.assertEquals(result, "question\n")
697
self.runbzr('commit -m conflicts', retcode=1)
758
self.runbzr('commit -m conflicts', retcode=3)
698
759
self.runbzr('resolve --all')
699
760
result = self.runbzr('conflicts', backtick=1)
700
761
self.runbzr('commit -m conflicts')
744
805
self.example_branch()
746
807
# with no push target, fail
747
self.runbzr('push', retcode=1)
808
self.runbzr('push', retcode=3)
748
809
# with an explicit target work
749
810
self.runbzr('push ../output-branch')
750
811
# with an implicit target work
764
825
self.runbzr('commit --unchanged -m unchanged')
765
826
os.chdir('../my-branch')
766
827
# cannot push now
767
self.runbzr('push', retcode=1)
828
self.runbzr('push', retcode=3)
768
829
# and there are difference
769
830
self.runbzr('missing ../output-branch', retcode=1)
831
self.runbzr('missing --verbose ../output-branch', retcode=1)
770
832
# but we can force a push
771
833
self.runbzr('push --overwrite')
772
834
# nothing missing
773
835
self.runbzr('missing ../output-branch')
775
837
# pushing to a new dir with no parent should fail
776
self.runbzr('push ../missing/new-branch', retcode=1)
838
self.runbzr('push ../missing/new-branch', retcode=3)
777
839
# unless we provide --create-prefix
778
840
self.runbzr('push --create-prefix ../missing/new-branch')
779
841
# nothing missing
845
907
runbzr("help st")
847
909
runbzr("help commands")
848
runbzr("help slartibartfast", 1)
910
runbzr("help slartibartfast", 3)
850
912
out = capture("help ci")
851
913
out.index('aliases: ')
853
915
progress("can't rename unversioned file")
854
runbzr("rename test.txt new-test.txt", 1)
916
runbzr("rename test.txt new-test.txt", 3)
856
918
progress("adding a file")
872
934
progress("more complex renames")
874
runbzr("rename hello.txt sub1", 1)
875
runbzr("rename hello.txt sub1/hello.txt", 1)
876
runbzr("move hello.txt sub1", 1)
936
runbzr("rename hello.txt sub1", 3)
937
runbzr("rename hello.txt sub1/hello.txt", 3)
938
runbzr("move hello.txt sub1", 3)
878
940
runbzr("add sub1")
879
941
runbzr("rename sub1 sub2")
933
995
runbzr('log -v --forward')
934
runbzr('log -m', retcode=1)
996
runbzr('log -m', retcode=3)
935
997
log_out = capture('log -m commit')
936
998
self.assert_("this is my new commit\n and" in log_out)
937
999
self.assert_("rename nested" not in log_out)
1078
1140
branch.commit('add file', rev_id='A')
1079
1141
url = self.get_remote_url('branch/file')
1080
1142
output = self.capture('log %s' % url)
1081
self.assertEqual(7, len(output.split('\n')))
1143
self.assertEqual(8, len(output.split('\n')))