/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 breezy/tests/test_registry.py

  • Committer: Jelmer Vernooij
  • Date: 2018-07-08 14:45:27 UTC
  • mto: This revision was merged to the branch mainline in revision 7036.
  • Revision ID: jelmer@jelmer.uk-20180708144527-codhlvdcdg9y0nji
Fix a bunch of merge tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006, 2008-2012, 2016 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
19
19
import os
20
20
import sys
21
21
 
22
 
from bzrlib import (
23
 
    errors,
 
22
from breezy import (
 
23
    branch,
24
24
    osutils,
25
25
    registry,
26
26
    tests,
27
27
    )
28
28
 
 
29
from ..sixish import viewitems
 
30
 
29
31
 
30
32
class TestRegistry(tests.TestCase):
31
33
 
39
41
        a_registry = registry.Registry()
40
42
        self.register_stuff(a_registry)
41
43
 
42
 
        self.failUnless(a_registry.default_key is None)
 
44
        self.assertTrue(a_registry.default_key is None)
43
45
 
44
46
        # test get() (self.default_key is None)
45
47
        self.assertRaises(KeyError, a_registry.get)
49
51
 
50
52
        # test _set_default_key
51
53
        a_registry.default_key = 'five'
52
 
        self.failUnless(a_registry.default_key == 'five')
 
54
        self.assertTrue(a_registry.default_key == 'five')
53
55
        self.assertEqual(5, a_registry.get())
54
56
        self.assertEqual(5, a_registry.get(None))
55
57
        # If they ask for a specific entry, they should get KeyError
64
66
        a_registry = registry.Registry()
65
67
        self.register_stuff(a_registry)
66
68
 
67
 
        self.failUnless('one' in a_registry)
 
69
        self.assertTrue('one' in a_registry)
68
70
        a_registry.remove('one')
69
 
        self.failIf('one' in a_registry)
 
71
        self.assertFalse('one' in a_registry)
70
72
        self.assertRaises(KeyError, a_registry.get, 'one')
71
73
 
72
74
        a_registry.register('one', 'one')
201
203
        self.assertEqual('//baz/qux', suffix)
202
204
        self.assertIs(sftp_object, found_object)
203
205
 
 
206
    def test_registry_alias(self):
 
207
        a_registry = registry.Registry()
 
208
        a_registry.register('one', 1, info='string info')
 
209
        a_registry.register_alias('two', 'one')
 
210
        a_registry.register_alias('three', 'one', info='own info')
 
211
        self.assertEqual(a_registry.get('one'), a_registry.get('two'))
 
212
        self.assertEqual(a_registry.get_help('one'), a_registry.get_help('two'))
 
213
        self.assertEqual(a_registry.get_info('one'), a_registry.get_info('two'))
 
214
        self.assertEqual('own info', a_registry.get_info('three'))
 
215
        self.assertEqual({'two': 'one', 'three': 'one'}, a_registry.aliases())
 
216
        self.assertEqual({'one': ['three', 'two']},
 
217
                         {k: sorted(v) for (k, v) in viewitems(a_registry.alias_map())})
 
218
 
 
219
    def test_registry_alias_exists(self):
 
220
        a_registry = registry.Registry()
 
221
        a_registry.register('one', 1, info='string info')
 
222
        a_registry.register('two', 2)
 
223
        self.assertRaises(KeyError, a_registry.register_alias, 'one', 'one')
 
224
 
 
225
    def test_registry_alias_targetmissing(self):
 
226
        a_registry = registry.Registry()
 
227
        self.assertRaises(KeyError, a_registry.register_alias, 'one', 'two')
 
228
 
204
229
 
205
230
class TestRegistryIter(tests.TestCase):
206
231
    """Test registry iteration behaviors.
215
240
        # We create a registry with "official" objects and "hidden"
216
241
        # objects. The later represent the side effects that led to bug #277048
217
242
        # and #430510
218
 
        self.registry =  registry.Registry()
 
243
        _registry = registry.Registry()
219
244
 
220
245
        def register_more():
221
 
            self.registry.register('hidden', None)
 
246
           _registry.register('hidden', None)
222
247
 
 
248
        # Avoid closing over self by binding local variable
 
249
        self.registry = _registry
223
250
        self.registry.register('passive', None)
224
251
        self.registry.register('active', register_more)
225
252
        self.registry.register('passive-too', None)
229
256
            def get_obj(inner_self):
230
257
                # Surprise ! Getting a registered object (think lazy loaded
231
258
                # module) register yet another object !
232
 
                self.registry.register('more hidden', None)
 
259
                _registry.register('more hidden', None)
233
260
                return inner_self._obj
234
261
 
235
262
        self.registry.register('hacky', None)
270
297
        """
271
298
        os.mkdir('tmp')
272
299
        plugin_name = 'bzr_plugin_a_%s' % (osutils.rand_chars(4),)
273
 
        open('tmp/'+plugin_name+'.py', 'wb').write(contents)
 
300
        with open('tmp/'+plugin_name+'.py', 'wb') as f: f.write(contents)
274
301
        return plugin_name
275
302
 
276
303
    def create_simple_plugin(self):
286
313
            '\n\n'
287
314
        )
288
315
 
 
316
    def test_lazy_import_registry_foo(self):
 
317
        a_registry = registry.Registry()
 
318
        a_registry.register_lazy('foo', 'breezy.branch', 'Branch')
 
319
        a_registry.register_lazy('bar', 'breezy.branch', 'Branch.hooks')
 
320
        self.assertEqual(branch.Branch, a_registry.get('foo'))
 
321
        self.assertEqual(branch.Branch.hooks, a_registry.get('bar'))
 
322
 
289
323
    def test_lazy_import_registry(self):
290
324
        plugin_name = self.create_simple_plugin()
291
325
        a_registry = registry.Registry()
297
331
        self.assertEqual(['function', 'klass', 'module', 'obj'],
298
332
                         sorted(a_registry.keys()))
299
333
        # The plugin should not be loaded until we grab the first object
300
 
        self.failIf(plugin_name in sys.modules)
 
334
        self.assertFalse(plugin_name in sys.modules)
301
335
 
302
336
        # By default the plugin won't be in the search path
303
337
        self.assertRaises(ImportError, a_registry.get, 'obj')
304
338
 
305
 
        plugin_path = os.getcwd() + '/tmp'
 
339
        plugin_path = self.test_dir + '/tmp'
306
340
        sys.path.append(plugin_path)
307
341
        try:
308
342
            obj = a_registry.get('obj')
309
343
            self.assertEqual('foo', obj)
310
 
            self.failUnless(plugin_name in sys.modules)
 
344
            self.assertTrue(plugin_name in sys.modules)
311
345
 
312
346
            # Now grab another object
313
347
            func = a_registry.get('function')
331
365
        finally:
332
366
            sys.path.remove(plugin_path)
333
367
 
 
368
    def test_lazy_import_get_module(self):
 
369
        a_registry = registry.Registry()
 
370
        a_registry.register_lazy('obj', "breezy.tests.test_registry",
 
371
            'object1')
 
372
        self.assertEqual("breezy.tests.test_registry",
 
373
            a_registry._get_module("obj"))
 
374
 
 
375
    def test_normal_get_module(self):
 
376
        class AThing(object):
 
377
            """Something"""
 
378
        a_registry = registry.Registry()
 
379
        a_registry.register("obj", AThing())
 
380
        self.assertEqual("breezy.tests.test_registry",
 
381
            a_registry._get_module("obj"))