~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/blackbox.py

[merge] aaron, various fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
72
72
        self.assert_(os.path.exists('subdir1'))
73
73
        self.assert_(os.path.exists('subdir1/.bzr'))
74
74
 
75
 
        self.runbzr('init subdir2/nothere', retcode=2)
 
75
        self.runbzr('init subdir2/nothere', retcode=3)
76
76
        
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)
80
80
 
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
114
114
 
 
115
    def test_nick_command(self):
 
116
        """bzr nick for viewing, setting nicknames"""
 
117
        os.mkdir('me.dev')
 
118
        os.chdir('me.dev')
 
119
        self.runbzr('init')
 
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')
 
125
 
 
126
 
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)
119
131
 
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")       
126
138
 
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) 
132
144
 
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)
152
164
 
153
165
 
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')
 
343
        os.unlink('moo')
 
344
        self.runbzr('diff')
329
345
 
330
346
    def test_diff_branches(self):
331
347
        self.build_tree(['branch1/', 'branch1/file', 'branch2/'])
341
357
                                        'branch1'],
342
358
                                       retcode=1)
343
359
        self.assertEquals(("=== modified file 'file'\n"
344
 
                           "--- file\n"
345
 
                           "+++ file\n"
 
360
                           "--- file\t\n"
 
361
                           "+++ file\t\n"
346
362
                           "@@ -1,1 +1,1 @@\n"
347
363
                           "-new content\n"
348
364
                           "+contents of branch1/file\n"
349
365
                           "\n", ''), output)
 
366
        output = self.run_bzr_captured(['diff', 'branch2', 'branch1'],
 
367
                                       retcode=1)
 
368
        self.assertEqualDiff(("=== modified file 'file'\n"
 
369
                              "--- file\t\n"
 
370
                              "+++ file\t\n"
 
371
                              "@@ -1,1 +1,1 @@\n"
 
372
                              "-new content\n"
 
373
                              "+contents of branch1/file\n"
 
374
                              "\n", ''), output)
 
375
 
350
376
 
351
377
    def test_branch(self):
352
378
        """Branch from one branch to another."""
382
408
        os.chdir('../a')
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',
388
 
                    retcode=1)
 
414
                    retcode=3)
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')
445
471
        os.chdir('a')
446
472
 
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')
455
481
 
456
482
        os.chdir('..')
470
496
        os.chdir('../b')
471
497
        self.runbzr('commit -m blah3 --unchanged')
472
498
        # no overwrite
473
 
        self.runbzr('pull ../a', retcode=1)
 
499
        self.runbzr('pull ../a', retcode=3)
474
500
        os.chdir('..')
475
501
        self.runbzr('branch b overwriteme')
476
502
        os.chdir('overwriteme')
510
536
        open('a', 'wb').write('hello\n')
511
537
 
512
538
        # Can't supply both
513
 
        bzr('ls --verbose --null', retcode=1)
 
539
        bzr('ls --verbose --null', retcode=3)
514
540
 
515
541
        ls_equals('a\n')
516
542
        ls_equals('?        a\n', '--verbose')
603
629
        os.chdir('a')
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')
609
635
        os.chdir('../b')
610
636
        self.runbzr('pull')
621
647
        os.chdir('../b')
622
648
        self.runbzr('pull')
623
649
        os.chdir('../d')
624
 
        self.runbzr('pull', retcode=1)
 
650
        self.runbzr('pull', retcode=3)
625
651
        self.runbzr('pull ../a --remember')
626
652
        self.runbzr('pull')
627
653
        
649
675
    def test_unknown_command(self):
650
676
        """Handling of unknown command."""
651
677
        out, err = self.run_bzr_captured(['fluffy-badger'],
652
 
                                         retcode=1)
 
678
                                         retcode=3)
653
679
        self.assertEquals(out, '')
654
680
        err.index('unknown command')
655
681
 
656
 
    def test_conflicts(self):
657
 
        """Handling of merge conflicts"""
 
682
    def create_conflicts(self):
 
683
        """Create a conflicted tree"""
658
684
        os.mkdir('base')
659
685
        os.chdir('base')
660
686
        file('hello', 'wb').write("hi world")
674
700
        file('question', 'wb').write("What do you get when you multiply six"
675
701
                                   "times nine?")
676
702
        self.runbzr('commit -m this')
 
703
 
 
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)
 
733
 
 
734
 
 
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()
745
806
 
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')
774
836
        
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")
846
908
        runbzr("help")
847
909
        runbzr("help commands")
848
 
        runbzr("help slartibartfast", 1)
 
910
        runbzr("help slartibartfast", 3)
849
911
 
850
912
        out = capture("help ci")
851
913
        out.index('aliases: ')
852
914
 
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)
855
917
 
856
918
        progress("adding a file")
857
919
 
871
933
 
872
934
        progress("more complex renames")
873
935
        os.mkdir("sub1")
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)
877
939
 
878
940
        runbzr("add sub1")
879
941
        runbzr("rename sub1 sub2")
931
993
        runbzr('log')
932
994
        runbzr('log -v')
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')))
1082
1144
        
1083
1145
 
1084
1146