25
from bzrlib import osutils
27
33
from bzrlib.progress import _BaseProgressBar
28
34
from bzrlib.tests import (
38
TestCaseWithMemoryTransport,
32
39
TestCaseWithTransport,
44
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
37
45
from bzrlib.tests.TestUtil import _load_module_by_name
38
46
import bzrlib.errors as errors
39
47
from bzrlib import symbol_versioning
40
48
from bzrlib.symbol_versioning import zero_ten, zero_eleven
41
49
from bzrlib.trace import note
50
from bzrlib.transport.memory import MemoryServer, MemoryTransport
42
51
from bzrlib.version import _get_bzr_source_tree
420
430
self.assertEqual(tests[1].transport_server, server1)
421
431
self.assertEqual(tests[1].transport_readonly_server, server2)
434
class TestTestCaseInTempDir(TestCaseInTempDir):
436
def test_home_is_not_working(self):
437
self.assertNotEqual(self.test_dir, self.test_home_dir)
438
cwd = osutils.getcwd()
439
self.assertEqual(self.test_dir, cwd)
440
self.assertEqual(self.test_home_dir, os.environ['HOME'])
443
class TestTestCaseWithMemoryTransport(TestCaseWithMemoryTransport):
445
def test_home_is_non_existant_dir_under_root(self):
446
"""The test_home_dir for TestCaseWithMemoryTransport is missing.
448
This is because TestCaseWithMemoryTransport is for tests that do not
449
need any disk resources: they should be hooked into bzrlib in such a
450
way that no global settings are being changed by the test (only a
451
few tests should need to do that), and having a missing dir as home is
452
an effective way to ensure that this is the case.
454
self.assertEqual(self.TEST_ROOT + "/MemoryTransportMissingHomeDir",
456
self.assertEqual(self.test_home_dir, os.environ['HOME'])
458
def test_cwd_is_TEST_ROOT(self):
459
self.assertEqual(self.test_dir, self.TEST_ROOT)
460
cwd = osutils.getcwd()
461
self.assertEqual(self.test_dir, cwd)
463
def test_make_branch_and_memory_tree(self):
464
"""In TestCaseWithMemoryTransport we should not make the branch on disk.
466
This is hard to comprehensively robustly test, so we settle for making
467
a branch and checking no directory was created at its relpath.
469
tree = self.make_branch_and_memory_tree('dir')
470
self.failIfExists('dir')
471
self.assertIsInstance(tree, memorytree.MemoryTree)
473
def test_make_branch_and_memory_tree_with_format(self):
474
"""make_branch_and_memory_tree should accept a format option."""
475
format = bzrdir.BzrDirMetaFormat1()
476
format.repository_format = repository.RepositoryFormat7()
477
tree = self.make_branch_and_memory_tree('dir', format=format)
478
self.failIfExists('dir')
479
self.assertIsInstance(tree, memorytree.MemoryTree)
480
self.assertEqual(format.repository_format.__class__,
481
tree.branch.repository._format.__class__)
423
484
class TestTestCaseWithTransport(TestCaseWithTransport):
424
485
"""Tests for the convenience functions TestCaseWithTransport introduces."""
464
525
self.assertRaises(AssertionError, self.assertIsDirectory, 'not_here', t)
528
class TestTestCaseTransports(TestCaseWithTransport):
531
super(TestTestCaseTransports, self).setUp()
532
self.transport_server = MemoryServer
534
def test_make_bzrdir_preserves_transport(self):
535
t = self.get_transport()
536
result_bzrdir = self.make_bzrdir('subdir')
537
self.assertIsInstance(result_bzrdir.transport,
539
# should not be on disk, should only be in memory
540
self.failIfExists('subdir')
467
543
class TestChrootedTest(ChrootedTestCase):
469
545
def test_root_is_root(self):
719
795
output_string = output.getvalue()
720
796
self.assertContainsRe(output_string, "--date [0-9.]+")
721
797
if workingtree is not None:
722
revision_id = workingtree.last_revision()
798
revision_id = workingtree.get_parent_ids()[0]
723
799
self.assertEndsWith(output_string.rstrip(), revision_id)
801
def test_success_log_deleted(self):
802
"""Successful tests have their log deleted"""
804
class LogTester(TestCase):
806
def test_success(self):
807
self.log('this will be removed\n')
809
sio = cStringIO.StringIO()
810
runner = TextTestRunner(stream=sio)
811
test = LogTester('test_success')
812
result = self.run_test_runner(runner, test)
814
log = test._get_log()
815
self.assertEqual("DELETED log file to reduce memory footprint", log)
816
self.assertEqual('', test._log_contents)
817
self.assertIs(None, test._log_file_name)
819
def test_fail_log_kept(self):
820
"""Failed tests have their log kept"""
822
class LogTester(TestCase):
825
self.log('this will be kept\n')
826
self.fail('this test fails')
828
sio = cStringIO.StringIO()
829
runner = TextTestRunner(stream=sio)
830
test = LogTester('test_fail')
831
result = self.run_test_runner(runner, test)
833
text = sio.getvalue()
834
self.assertContainsRe(text, 'this will be kept')
835
self.assertContainsRe(text, 'this test fails')
837
log = test._get_log()
838
self.assertContainsRe(log, 'this will be kept')
839
self.assertEqual(log, test._log_contents)
841
def test_error_log_kept(self):
842
"""Tests with errors have their log kept"""
844
class LogTester(TestCase):
846
def test_error(self):
847
self.log('this will be kept\n')
848
raise ValueError('random exception raised')
850
sio = cStringIO.StringIO()
851
runner = TextTestRunner(stream=sio)
852
test = LogTester('test_error')
853
result = self.run_test_runner(runner, test)
855
text = sio.getvalue()
856
self.assertContainsRe(text, 'this will be kept')
857
self.assertContainsRe(text, 'random exception raised')
859
log = test._get_log()
860
self.assertContainsRe(log, 'this will be kept')
861
self.assertEqual(log, test._log_contents)
726
864
class TestTestCase(TestCase):
727
865
"""Tests that test the core bzrlib TestCase."""
893
1031
self.assertIsInstance(bzrlib.bzrdir.BzrDir.open('b')._format,
894
1032
bzrlib.bzrdir.BzrDirFormat6)
1034
def test_make_branch_and_memory_tree(self):
1035
# we should be able to get a new branch and a mutable tree from
1036
# TestCaseWithTransport
1037
tree = self.make_branch_and_memory_tree('a')
1038
self.assertIsInstance(tree, bzrlib.memorytree.MemoryTree)
1041
class TestSFTPMakeBranchAndTree(TestCaseWithSFTPServer):
1043
def test_make_tree_for_sftp_branch(self):
1044
"""Transports backed by local directories create local trees."""
1046
tree = self.make_branch_and_tree('t1')
1047
base = tree.bzrdir.root_transport.base
1048
self.failIf(base.startswith('sftp'),
1049
'base %r is on sftp but should be local' % base)
1050
self.assertEquals(tree.bzrdir.root_transport,
1051
tree.branch.bzrdir.root_transport)
1052
self.assertEquals(tree.bzrdir.root_transport,
1053
tree.branch.repository.bzrdir.root_transport)
897
1056
class TestSelftest(TestCase):
898
1057
"""Tests of bzrlib.tests.selftest."""