~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_registry.py

Merge bzr.dev, update to use new hooks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006, 2008-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
21
21
 
22
22
from bzrlib import (
23
23
    branch,
24
 
    errors,
25
24
    osutils,
26
25
    registry,
27
26
    tests,
40
39
        a_registry = registry.Registry()
41
40
        self.register_stuff(a_registry)
42
41
 
43
 
        self.failUnless(a_registry.default_key is None)
 
42
        self.assertTrue(a_registry.default_key is None)
44
43
 
45
44
        # test get() (self.default_key is None)
46
45
        self.assertRaises(KeyError, a_registry.get)
50
49
 
51
50
        # test _set_default_key
52
51
        a_registry.default_key = 'five'
53
 
        self.failUnless(a_registry.default_key == 'five')
 
52
        self.assertTrue(a_registry.default_key == 'five')
54
53
        self.assertEqual(5, a_registry.get())
55
54
        self.assertEqual(5, a_registry.get(None))
56
55
        # If they ask for a specific entry, they should get KeyError
65
64
        a_registry = registry.Registry()
66
65
        self.register_stuff(a_registry)
67
66
 
68
 
        self.failUnless('one' in a_registry)
 
67
        self.assertTrue('one' in a_registry)
69
68
        a_registry.remove('one')
70
 
        self.failIf('one' in a_registry)
 
69
        self.assertFalse('one' in a_registry)
71
70
        self.assertRaises(KeyError, a_registry.get, 'one')
72
71
 
73
72
        a_registry.register('one', 'one')
216
215
        # We create a registry with "official" objects and "hidden"
217
216
        # objects. The later represent the side effects that led to bug #277048
218
217
        # and #430510
219
 
        self.registry =  registry.Registry()
 
218
        _registry = registry.Registry()
220
219
 
221
220
        def register_more():
222
 
            self.registry.register('hidden', None)
 
221
           _registry.register('hidden', None)
223
222
 
 
223
        # Avoid closing over self by binding local variable
 
224
        self.registry = _registry
224
225
        self.registry.register('passive', None)
225
226
        self.registry.register('active', register_more)
226
227
        self.registry.register('passive-too', None)
230
231
            def get_obj(inner_self):
231
232
                # Surprise ! Getting a registered object (think lazy loaded
232
233
                # module) register yet another object !
233
 
                self.registry.register('more hidden', None)
 
234
                _registry.register('more hidden', None)
234
235
                return inner_self._obj
235
236
 
236
237
        self.registry.register('hacky', None)
305
306
        self.assertEqual(['function', 'klass', 'module', 'obj'],
306
307
                         sorted(a_registry.keys()))
307
308
        # The plugin should not be loaded until we grab the first object
308
 
        self.failIf(plugin_name in sys.modules)
 
309
        self.assertFalse(plugin_name in sys.modules)
309
310
 
310
311
        # By default the plugin won't be in the search path
311
312
        self.assertRaises(ImportError, a_registry.get, 'obj')
315
316
        try:
316
317
            obj = a_registry.get('obj')
317
318
            self.assertEqual('foo', obj)
318
 
            self.failUnless(plugin_name in sys.modules)
 
319
            self.assertTrue(plugin_name in sys.modules)
319
320
 
320
321
            # Now grab another object
321
322
            func = a_registry.get('function')
339
340
        finally:
340
341
            sys.path.remove(plugin_path)
341
342
 
 
343
    def test_lazy_import_get_module(self):
 
344
        a_registry = registry.Registry()
 
345
        a_registry.register_lazy('obj', "bzrlib.tests.test_registry",
 
346
            'object1')
 
347
        self.assertEquals("bzrlib.tests.test_registry",
 
348
            a_registry._get_module("obj"))
 
349
 
 
350
    def test_normal_get_module(self):
 
351
        class AThing(object):
 
352
            """Something"""
 
353
        a_registry = registry.Registry()
 
354
        a_registry.register("obj", AThing())
 
355
        self.assertEquals("bzrlib.tests.test_registry",
 
356
            a_registry._get_module("obj"))