~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_too_much.py

[merge] bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 
27
27
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
28
28
# Note: Please don't add new tests here, it's too big and bulky.  Instead add
29
 
# them into small suites for the particular function that's tested.
 
29
# them into small suites in bzrlib.tests.blackbox.test_FOO for the particular
 
30
# UI command/aspect that is being tested.
30
31
 
31
32
 
32
33
from cStringIO import StringIO
39
40
from bzrlib.clone import copy_branch
40
41
from bzrlib.errors import BzrCommandError
41
42
from bzrlib.osutils import has_symlinks
42
 
from bzrlib.selftest import TestCaseInTempDir, BzrTestBase
43
 
from bzrlib.selftest.HTTPTestUtil import TestCaseWithWebserver
44
 
 
45
 
 
46
 
class ExternalBase(TestCaseInTempDir):
47
 
 
48
 
    def runbzr(self, args, retcode=0, backtick=False):
49
 
        if isinstance(args, basestring):
50
 
            args = args.split()
51
 
 
52
 
        if backtick:
53
 
            return self.run_bzr_captured(args, retcode=retcode)[0]
54
 
        else:
55
 
            return self.run_bzr_captured(args, retcode=retcode)
56
 
 
 
43
from bzrlib.tests.HTTPTestUtil import TestCaseWithWebserver
 
44
from bzrlib.tests.blackbox import ExternalBase
57
45
 
58
46
class TestCommands(ExternalBase):
59
47
 
170
158
        self.runbzr('commit -m newstuff branch')
171
159
        self.runbzr('commit -m newstuff branch', retcode=3)
172
160
 
173
 
 
174
161
    def test_ignore_patterns(self):
175
162
        from bzrlib.branch import Branch
176
 
        
177
 
        b = Branch.initialize('.')
178
 
        self.assertEquals(list(b.unknowns()), [])
 
163
        Branch.initialize('.')
 
164
        self.assertEquals(self.capture('unknowns'), '')
179
165
 
180
166
        file('foo.tmp', 'wt').write('tmp files are ignored')
181
 
        self.assertEquals(list(b.unknowns()), [])
182
167
        self.assertEquals(self.capture('unknowns'), '')
183
168
 
184
169
        file('foo.c', 'wt').write('int main() {}')
185
 
        self.assertEquals(list(b.unknowns()), ['foo.c'])
186
170
        self.assertEquals(self.capture('unknowns'), 'foo.c\n')
187
171
 
188
172
        self.runbzr(['add', 'foo.c'])
190
174
 
191
175
        # 'ignore' works when creating the .bzignore file
192
176
        file('foo.blah', 'wt').write('blah')
193
 
        self.assertEquals(list(b.unknowns()), ['foo.blah'])
 
177
        self.assertEquals(self.capture('unknowns'), 'foo.blah\n')
194
178
        self.runbzr('ignore *.blah')
195
 
        self.assertEquals(list(b.unknowns()), [])
 
179
        self.assertEquals(self.capture('unknowns'), '')
196
180
        self.assertEquals(file('.bzrignore', 'rU').read(), '*.blah\n')
197
181
 
198
182
        # 'ignore' works when then .bzrignore file already exists
199
183
        file('garh', 'wt').write('garh')
200
 
        self.assertEquals(list(b.unknowns()), ['garh'])
201
184
        self.assertEquals(self.capture('unknowns'), 'garh\n')
202
185
        self.runbzr('ignore garh')
203
 
        self.assertEquals(list(b.unknowns()), [])
 
186
        self.assertEquals(self.capture('unknowns'), '')
204
187
        self.assertEquals(file('.bzrignore', 'rU').read(), '*.blah\ngarh\n')
205
188
 
206
189
    def test_revert(self):
315
298
        self.assertEqual(file('../first.gz/hello', 'rt').read(), 'foo')
316
299
        self.runbzr('export ../first.bz2 -r 1')
317
300
        self.assertEqual(file('../first.bz2/hello', 'rt').read(), 'foo')
 
301
 
 
302
        from tarfile import TarFile
318
303
        self.runbzr('export ../first.tar -r 1')
319
304
        self.assert_(os.path.isfile('../first.tar'))
320
 
        from tarfile import TarFile
321
305
        tf = TarFile('../first.tar')
322
306
        self.assert_('first/hello' in tf.getnames(), tf.getnames())
323
307
        self.assertEqual(tf.extractfile('first/hello').read(), 'foo')
329
313
        self.assert_(os.path.isfile('../first.tar.bz2'))
330
314
        self.runbzr('export ../first.tar.tbz2 -r 1')
331
315
        self.assert_(os.path.isfile('../first.tar.tbz2'))
 
316
 
332
317
        from bz2 import BZ2File
333
318
        tf = TarFile('../first.tar.tbz2', 
334
319
                     fileobj=BZ2File('../first.tar.tbz2', 'r'))
338
323
        tf = TarFile('../first2.tar')
339
324
        self.assert_('pizza/hello' in tf.getnames(), tf.getnames())
340
325
 
 
326
        from zipfile import ZipFile
 
327
        self.runbzr('export ../first.zip -r 1')
 
328
        self.failUnlessExists('../first.zip')
 
329
        zf = ZipFile('../first.zip')
 
330
        self.assert_('first/hello' in zf.namelist(), zf.namelist())
 
331
        self.assertEqual(zf.read('first/hello'), 'foo')
 
332
 
 
333
        self.runbzr('export ../first2.zip -r 1 --root pizza')
 
334
        zf = ZipFile('../first2.zip')
 
335
        self.assert_('pizza/hello' in zf.namelist(), zf.namelist())
 
336
        
 
337
        self.runbzr('export ../first-zip --format=zip -r 1')
 
338
        zf = ZipFile('../first-zip')
 
339
        self.assert_('first-zip/hello' in zf.namelist(), zf.namelist())
 
340
 
341
341
    def test_diff(self):
342
342
        self.example_branch()
343
343
        file('hello', 'wt').write('hello world!')
352
352
        self.runbzr('diff')
353
353
 
354
354
    def test_diff_branches(self):
355
 
        self.build_tree(['branch1/', 'branch1/file', 'branch2/'])
 
355
        self.build_tree(['branch1/', 'branch1/file', 'branch2/'], line_endings='binary')
356
356
        branch = Branch.initialize('branch1')
357
 
        branch.add(['file'])
 
357
        branch.working_tree().add(['file'])
358
358
        branch.working_tree().commit('add file')
359
359
        copy_branch(branch, 'branch2')
360
 
        print >> open('branch2/file', 'w'), 'new content'
 
360
        print >> open('branch2/file', 'wb'), 'new content'
361
361
        branch2 = Branch.open('branch2')
362
362
        branch2.working_tree().commit('update file')
363
363
        # should open branch1 and diff against branch2, 
529
529
        self.runbzr('pull ../b')
530
530
        self.runbzr('pull ../b')
531
531
 
 
532
    def test_inventory(self):
 
533
        bzr = self.runbzr
 
534
        def output_equals(value, *args):
 
535
            out = self.runbzr(['inventory'] + list(args), backtick=True)
 
536
            self.assertEquals(out, value)
 
537
 
 
538
        bzr('init')
 
539
        open('a', 'wb').write('hello\n')
 
540
        os.mkdir('b')
 
541
 
 
542
        bzr('add a b')
 
543
        bzr('commit -m add')
 
544
 
 
545
        output_equals('a\n', '--kind', 'file')
 
546
        output_equals('b\n', '--kind', 'directory')        
 
547
 
532
548
    def test_ls(self):
533
549
        """Test the abilities of 'bzr ls'"""
534
550
        bzr = self.runbzr
721
737
        results = sorted(out.rstrip('\n').split('\n'))
722
738
        self.assertEquals([''], results)
723
739
 
 
740
    def test_add_in_unversioned(self):
 
741
        """Try to add a file in an unversioned directory.
 
742
 
 
743
        "bzr add" should add the parent(s) as necessary.
 
744
        """
 
745
        from bzrlib.branch import Branch
 
746
        Branch.initialize('.')
 
747
        self.build_tree(['inertiatic/', 'inertiatic/esp'])
 
748
        self.assertEquals(self.capture('unknowns'), 'inertiatic\n')
 
749
        self.run_bzr('add', 'inertiatic/esp')
 
750
        self.assertEquals(self.capture('unknowns'), '')
 
751
 
 
752
        # Multiple unversioned parents
 
753
        self.build_tree(['veil/', 'veil/cerpin/', 'veil/cerpin/taxt'])
 
754
        self.assertEquals(self.capture('unknowns'), 'veil\n')
 
755
        self.run_bzr('add', 'veil/cerpin/taxt')
 
756
        self.assertEquals(self.capture('unknowns'), '')
 
757
 
 
758
        # Check whacky paths work
 
759
        self.build_tree(['cicatriz/', 'cicatriz/esp'])
 
760
        self.assertEquals(self.capture('unknowns'), 'cicatriz\n')
 
761
        self.run_bzr('add', 'inertiatic/../cicatriz/esp')
 
762
        self.assertEquals(self.capture('unknowns'), '')
 
763
 
 
764
    def test_add_in_versioned(self):
 
765
        """Try to add a file in a versioned directory.
 
766
 
 
767
        "bzr add" should do this happily.
 
768
        """
 
769
        from bzrlib.branch import Branch
 
770
        Branch.initialize('.')
 
771
        self.build_tree(['inertiatic/', 'inertiatic/esp'])
 
772
        self.assertEquals(self.capture('unknowns'), 'inertiatic\n')
 
773
        self.run_bzr('add', '--no-recurse', 'inertiatic')
 
774
        self.assertEquals(self.capture('unknowns'), 'inertiatic'+os.sep+'esp\n')
 
775
        self.run_bzr('add', 'inertiatic/esp')
 
776
        self.assertEquals(self.capture('unknowns'), '')
 
777
 
 
778
    def test_subdir_add(self):
 
779
        """Add in subdirectory should add only things from there down"""
 
780
        from bzrlib.branch import Branch
 
781
        
 
782
        eq = self.assertEqual
 
783
        ass = self.assert_
 
784
        chdir = os.chdir
 
785
        
 
786
        b = Branch.initialize('.')
 
787
        t = b.working_tree()
 
788
        self.build_tree(['src/', 'README'])
 
789
        
 
790
        eq(sorted(t.unknowns()),
 
791
           ['README', 'src'])
 
792
        
 
793
        self.run_bzr('add', 'src')
 
794
        
 
795
        self.build_tree(['src/foo.c'])
 
796
        
 
797
        chdir('src')
 
798
        self.run_bzr('add')
 
799
        
 
800
        self.assertEquals(self.capture('unknowns'), 'README\n')
 
801
        eq(len(t.read_working_inventory()), 3)
 
802
                
 
803
        chdir('..')
 
804
        self.run_bzr('add')
 
805
        self.assertEquals(self.capture('unknowns'), '')
 
806
        self.run_bzr('check')
 
807
 
724
808
    def test_unknown_command(self):
725
809
        """Handling of unknown command."""
726
810
        out, err = self.run_bzr_captured(['fluffy-badger'],
1235
1319
    def test_log(self):
1236
1320
        self.build_tree(['branch/', 'branch/file'])
1237
1321
        branch = Branch.initialize('branch')
1238
 
        branch.add(['file'])
 
1322
        branch.working_tree().add(['file'])
1239
1323
        branch.working_tree().commit('add file', rev_id='A')
1240
1324
        url = self.get_remote_url('branch/file')
1241
1325
        output = self.capture('log %s' % url)
1242
1326
        self.assertEqual(8, len(output.split('\n')))
1243
1327
        
1244
 
 
1245
 
 
1246
 
 
 
1328
    def test_check(self):
 
1329
        self.build_tree(['branch/', 'branch/file'])
 
1330
        branch = Branch.initialize('branch')
 
1331
        branch.working_tree().add(['file'])
 
1332
        branch.working_tree().commit('add file', rev_id='A')
 
1333
        url = self.get_remote_url('branch/')
 
1334
        self.run_bzr('check', url)