/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_plugins.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-08-29 05:16:58 UTC
  • mfrom: (2762.2.3 plugin-versions)
  • Revision ID: pqm@pqm.ubuntu.com-20070829051658-yvj0n3mvso1v8uz3
(robertc) Show the version of plugins in the output of bzr plugins. (Robert Collins, #125421)

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
import bzrlib.plugins
31
31
import bzrlib.commands
32
32
import bzrlib.help
 
33
from bzrlib.symbol_versioning import zero_ninetyone
33
34
from bzrlib.tests import TestCase, TestCaseInTempDir
34
35
from bzrlib.osutils import pathjoin, abspath
35
36
 
88
89
        finally:
89
90
            # remove the plugin 'plugin'
90
91
            del self.activeattributes[tempattribute]
 
92
            if 'bzrlib.plugins.plugin' in sys.modules:
 
93
                del sys.modules['bzrlib.plugins.plugin']
91
94
            if getattr(bzrlib.plugins, 'plugin', None):
92
95
                del bzrlib.plugins.plugin
93
96
        self.failIf(getattr(bzrlib.plugins, 'plugin', None))
137
140
        finally:
138
141
            # remove the plugin 'plugin'
139
142
            del self.activeattributes[tempattribute]
140
 
            if getattr(bzrlib.plugins, 'plugin', None):
141
 
                del bzrlib.plugins.plugin
142
 
        self.failIf(getattr(bzrlib.plugins, 'plugin', None))
 
143
            if getattr(bzrlib.plugins, 'pluginone', None):
 
144
                del bzrlib.plugins.pluginone
 
145
            if getattr(bzrlib.plugins, 'plugintwo', None):
 
146
                del bzrlib.plugins.plugintwo
 
147
        self.failIf(getattr(bzrlib.plugins, 'pluginone', None))
 
148
        self.failIf(getattr(bzrlib.plugins, 'plugintwo', None))
143
149
 
144
150
    def test_plugins_can_load_from_directory_with_trailing_slash(self):
145
151
        # This test tests that a plugin can load from a directory when the
188
194
        print >> file('plugin.py', 'w'), ""
189
195
        try:
190
196
            bzrlib.plugin.load_from_path(['.'])
191
 
            self.failUnless('plugin' in bzrlib.plugin.all_plugins())
 
197
            all_plugins = self.applyDeprecated(zero_ninetyone,
 
198
                bzrlib.plugin.all_plugins)
 
199
            self.failUnless('plugin' in all_plugins)
192
200
            self.failUnless(getattr(bzrlib.plugins, 'plugin', None))
193
 
            self.assertEqual(bzrlib.plugin.all_plugins()['plugin'],
194
 
                             bzrlib.plugins.plugin)
 
201
            self.assertEqual(all_plugins['plugin'], bzrlib.plugins.plugin)
195
202
        finally:
196
203
            # remove the plugin 'plugin'
197
204
            if 'bzrlib.plugins.plugin' in sys.modules:
201
208
        self.failIf(getattr(bzrlib.plugins, 'plugin', None))
202
209
 
203
210
 
 
211
class TestPlugins(TestCaseInTempDir):
 
212
 
 
213
    def setup_plugin(self, source=""):
 
214
        # This test tests a new plugin appears in bzrlib.plugin.plugins().
 
215
        # check the plugin is not loaded already
 
216
        self.failIf(getattr(bzrlib.plugins, 'plugin', None))
 
217
        # write a plugin that _cannot_ fail to load.
 
218
        print >> file('plugin.py', 'w'), source
 
219
        self.addCleanup(self.teardown_plugin)
 
220
        bzrlib.plugin.load_from_path(['.'])
 
221
    
 
222
    def teardown_plugin(self):
 
223
        # remove the plugin 'plugin'
 
224
        if 'bzrlib.plugins.plugin' in sys.modules:
 
225
            del sys.modules['bzrlib.plugins.plugin']
 
226
        if getattr(bzrlib.plugins, 'plugin', None):
 
227
            del bzrlib.plugins.plugin
 
228
        self.failIf(getattr(bzrlib.plugins, 'plugin', None))
 
229
 
 
230
    def test_plugin_appears_in_plugins(self):
 
231
        self.setup_plugin()
 
232
        self.failUnless('plugin' in bzrlib.plugin.plugins())
 
233
        self.failUnless(getattr(bzrlib.plugins, 'plugin', None))
 
234
        plugins = bzrlib.plugin.plugins()
 
235
        plugin = plugins['plugin']
 
236
        self.assertIsInstance(plugin, bzrlib.plugin.PlugIn)
 
237
        self.assertEqual(bzrlib.plugins.plugin, plugin.module)
 
238
 
 
239
    def test_trivial_plugin_get_path(self):
 
240
        self.setup_plugin()
 
241
        plugins = bzrlib.plugin.plugins()
 
242
        plugin = plugins['plugin']
 
243
        plugin_path = self.test_dir + '/plugin.py'
 
244
        self.assertEqual(plugin_path, plugin.path())
 
245
 
 
246
    def test_no_test_suite_gives_None_for_test_suite(self):
 
247
        self.setup_plugin()
 
248
        plugin = bzrlib.plugin.plugins()['plugin']
 
249
        self.assertEqual(None, plugin.test_suite())
 
250
 
 
251
    def test_test_suite_gives_test_suite_result(self):
 
252
        source = """def test_suite(): return 'foo'"""
 
253
        self.setup_plugin(source)
 
254
        plugin = bzrlib.plugin.plugins()['plugin']
 
255
        self.assertEqual('foo', plugin.test_suite())
 
256
 
 
257
    def test_no_version_info(self):
 
258
        self.setup_plugin()
 
259
        plugin = bzrlib.plugin.plugins()['plugin']
 
260
        self.assertEqual(None, plugin.version_info())
 
261
 
 
262
    def test_with_version_info(self):
 
263
        self.setup_plugin("version_info = (1, 2, 3, 'dev', 4)")
 
264
        plugin = bzrlib.plugin.plugins()['plugin']
 
265
        self.assertEqual((1, 2, 3, 'dev', 4), plugin.version_info())
 
266
 
 
267
    def test_short_version_info_gets_padded(self):
 
268
        # the gtk plugin has version_info = (1,2,3) rather than the 5-tuple.
 
269
        # so we adapt it
 
270
        self.setup_plugin("version_info = (1, 2, 3)")
 
271
        plugin = bzrlib.plugin.plugins()['plugin']
 
272
        self.assertEqual((1, 2, 3, 'final', 0), plugin.version_info())
 
273
 
 
274
    def test_no_version_info___version__(self):
 
275
        self.setup_plugin()
 
276
        plugin = bzrlib.plugin.plugins()['plugin']
 
277
        self.assertEqual("unknown", plugin.__version__)
 
278
 
 
279
    def test___version__with_version_info(self):
 
280
        self.setup_plugin("version_info = (1, 2, 3, 'dev', 4)")
 
281
        plugin = bzrlib.plugin.plugins()['plugin']
 
282
        self.assertEqual("1.2.3dev4", plugin.__version__)
 
283
 
 
284
    def test_final__version__with_version_info(self):
 
285
        self.setup_plugin("version_info = (1, 2, 3, 'final', 4)")
 
286
        plugin = bzrlib.plugin.plugins()['plugin']
 
287
        self.assertEqual("1.2.3", plugin.__version__)
 
288
 
 
289
 
204
290
class TestPluginHelp(TestCaseInTempDir):
205
291
 
206
292
    def split_help_commands(self):