/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_selftest.py

Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 
16
16
"""Tests for the test framework."""
17
17
 
 
18
import cStringIO
18
19
import os
19
20
from StringIO import StringIO
20
21
import sys
34
35
                          TestSuite,
35
36
                          TextTestRunner,
36
37
                          )
 
38
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
37
39
from bzrlib.tests.TestUtil import _load_module_by_name
38
40
import bzrlib.errors as errors
39
41
from bzrlib import symbol_versioning
40
42
from bzrlib.symbol_versioning import zero_ten, zero_eleven
41
43
from bzrlib.trace import note
 
44
from bzrlib.transport.memory import MemoryServer, MemoryTransport
42
45
from bzrlib.version import _get_bzr_source_tree
43
46
 
44
47
 
60
63
        """Test logs are captured when a test fails."""
61
64
        self.log('a test message')
62
65
        self._log_file.flush()
63
 
        self.assertContainsRe(self._get_log(), 'a test message\n')
 
66
        self.assertContainsRe(self._get_log(keep_log_file=True),
 
67
                              'a test message\n')
64
68
 
65
69
 
66
70
class TestTreeShape(TestCaseInTempDir):
474
478
        self.assertRaises(AssertionError, self.assertIsDirectory, 'not_here', t)
475
479
 
476
480
 
 
481
class TestTestCaseTransports(TestCaseWithTransport):
 
482
 
 
483
    def setUp(self):
 
484
        super(TestTestCaseTransports, self).setUp()
 
485
        self.transport_server = MemoryServer
 
486
 
 
487
    def test_make_bzrdir_preserves_transport(self):
 
488
        t = self.get_transport()
 
489
        result_bzrdir = self.make_bzrdir('subdir')
 
490
        self.assertIsInstance(result_bzrdir.transport, 
 
491
                              MemoryTransport)
 
492
        # should not be on disk, should only be in memory
 
493
        self.failIfExists('subdir')
 
494
 
 
495
 
477
496
class TestChrootedTest(ChrootedTestCase):
478
497
 
479
498
    def test_root_is_root(self):
732
751
            revision_id = workingtree.get_parent_ids()[0]
733
752
            self.assertEndsWith(output_string.rstrip(), revision_id)
734
753
 
 
754
    def test_success_log_deleted(self):
 
755
        """Successful tests have their log deleted"""
 
756
 
 
757
        class LogTester(TestCase):
 
758
 
 
759
            def test_success(self):
 
760
                self.log('this will be removed\n')
 
761
 
 
762
        sio = cStringIO.StringIO()
 
763
        runner = TextTestRunner(stream=sio)
 
764
        test = LogTester('test_success')
 
765
        result = self.run_test_runner(runner, test)
 
766
 
 
767
        log = test._get_log()
 
768
        self.assertEqual("DELETED log file to reduce memory footprint", log)
 
769
        self.assertEqual('', test._log_contents)
 
770
        self.assertIs(None, test._log_file_name)
 
771
 
 
772
    def test_fail_log_kept(self):
 
773
        """Failed tests have their log kept"""
 
774
 
 
775
        class LogTester(TestCase):
 
776
 
 
777
            def test_fail(self):
 
778
                self.log('this will be kept\n')
 
779
                self.fail('this test fails')
 
780
 
 
781
        sio = cStringIO.StringIO()
 
782
        runner = TextTestRunner(stream=sio)
 
783
        test = LogTester('test_fail')
 
784
        result = self.run_test_runner(runner, test)
 
785
 
 
786
        text = sio.getvalue()
 
787
        self.assertContainsRe(text, 'this will be kept')
 
788
        self.assertContainsRe(text, 'this test fails')
 
789
 
 
790
        log = test._get_log()
 
791
        self.assertContainsRe(log, 'this will be kept')
 
792
        self.assertEqual(log, test._log_contents)
 
793
 
 
794
    def test_error_log_kept(self):
 
795
        """Tests with errors have their log kept"""
 
796
 
 
797
        class LogTester(TestCase):
 
798
 
 
799
            def test_error(self):
 
800
                self.log('this will be kept\n')
 
801
                raise ValueError('random exception raised')
 
802
 
 
803
        sio = cStringIO.StringIO()
 
804
        runner = TextTestRunner(stream=sio)
 
805
        test = LogTester('test_error')
 
806
        result = self.run_test_runner(runner, test)
 
807
 
 
808
        text = sio.getvalue()
 
809
        self.assertContainsRe(text, 'this will be kept')
 
810
        self.assertContainsRe(text, 'random exception raised')
 
811
 
 
812
        log = test._get_log()
 
813
        self.assertContainsRe(log, 'this will be kept')
 
814
        self.assertEqual(log, test._log_contents)
 
815
 
735
816
 
736
817
class TestTestCase(TestCase):
737
818
    """Tests that test the core bzrlib TestCase."""
903
984
        self.assertIsInstance(bzrlib.bzrdir.BzrDir.open('b')._format,
904
985
                              bzrlib.bzrdir.BzrDirFormat6)
905
986
 
 
987
    def test_make_branch_and_mutable_tree(self):
 
988
        # we should be able to get a new branch and a mutable tree from
 
989
        # TestCaseWithTransport
 
990
        tree = self.make_branch_and_memory_tree('a')
 
991
        self.assertIsInstance(tree, bzrlib.memorytree.MemoryTree)
 
992
 
 
993
 
 
994
class TestSFTPMakeBranchAndTree(TestCaseWithSFTPServer):
 
995
 
 
996
    def test_make_tree_for_sftp_branch(self):
 
997
        """Transports backed by local directories create local trees."""
 
998
 
 
999
        tree = self.make_branch_and_tree('t1')
 
1000
        base = tree.bzrdir.root_transport.base
 
1001
        self.failIf(base.startswith('sftp'),
 
1002
                'base %r is on sftp but should be local' % base)
 
1003
        self.assertEquals(tree.bzrdir.root_transport,
 
1004
                tree.branch.bzrdir.root_transport)
 
1005
        self.assertEquals(tree.bzrdir.root_transport,
 
1006
                tree.branch.repository.bzrdir.root_transport)
 
1007
 
906
1008
 
907
1009
class TestSelftest(TestCase):
908
1010
    """Tests of bzrlib.tests.selftest."""