~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_bzrdir.py

Add RepositoryFormats and allow bzrdir.open or create _repository to be used.

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
        # creating a bzr dir should now create an instrumented dir.
44
44
        try:
45
45
            result = bzrdir.BzrDir.create('memory:/')
46
 
            self.assertEqual(result,  'A bzr dir')
 
46
            self.failUnless(isinstance(result, SampleBzrDir))
47
47
        finally:
48
48
            bzrdir.BzrDirFormat.set_default_format(old_format)
49
49
        self.assertEqual(old_format, bzrdir.BzrDirFormat.get_default_format())
50
50
 
51
51
 
 
52
class SampleBzrDir(bzrdir.BzrDir):
 
53
    """A sample BzrDir implementation to allow testing static methods."""
 
54
 
 
55
    def create_repository(self):
 
56
        """See BzrDir.create_repository."""
 
57
        return "A repository"
 
58
 
 
59
 
52
60
class SampleBzrDirFormat(bzrdir.BzrDirFormat):
53
61
    """A sample format
54
62
 
65
73
        t = get_transport(url)
66
74
        t.mkdir('.bzr')
67
75
        t.put('.bzr/branch-format', StringIO(self.get_format_string()))
68
 
        return 'A bzr dir'
 
76
        return SampleBzrDir(t, self)
69
77
 
70
78
    def is_supported(self):
71
79
        return False
121
129
        # now open_downlevel should fail too.
122
130
        self.assertRaises(UnknownFormatError, bzrdir.BzrDir.open_unsupported, url)
123
131
 
 
132
    def test_create_repository(self):
 
133
        format = SampleBzrDirFormat()
 
134
        old_format = bzrdir.BzrDirFormat.get_default_format()
 
135
        bzrdir.BzrDirFormat.set_default_format(format)
 
136
        try:
 
137
            repo = bzrdir.BzrDir.create_repository(self.get_url())
 
138
            self.assertEqual('A repository', repo)
 
139
        finally:
 
140
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
141
        
124
142
 
125
143
class ChrootedTests(TestCaseWithTransport):
126
144
    """A support class that provides readonly urls outside the local namespace.