• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zopefoundation / zope.component / 3829079989

pending completion
3829079989

push

github

Jens Vagelpohl
- prepare release 5.1.0

467 of 489 branches covered (95.5%)

Branch coverage included in aggregate %.

4620 of 4625 relevant lines covered (99.89%)

1.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

99.4
/src/zope/component/tests/test_interface.py
1
##############################################################################
2
#
3
# Copyright (c) 2012 Zope Foundation and Contributors.
4
# All Rights Reserved.
5
#
6
# This software is subject to the provisions of the Zope Public License,
7
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
8
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
9
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
10
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
11
# FOR A PARTICULAR PURPOSE.
12
#
13
##############################################################################
14
"""Tests for z.c.interface
1✔
15
"""
16
import os
1✔
17
import unittest
1✔
18

19

20
DOCSTRINGS_REMOVED = False
1✔
21
if os.environ.get('PYTHONOPTIMIZE') == '2':
1!
22
    DOCSTRINGS_REMOVED = True
×
23

24
# pylint:disable=inherit-non-class,blacklisted-name
25

26
class Test_provideInterface(unittest.TestCase):
1✔
27

28
    from zope.component.testing import setUp, tearDown
1✔
29

30
    def _callFUT(self, *args, **kw):
1✔
31
        from zope.component.interface import provideInterface
1✔
32
        return provideInterface(*args, **kw)
1✔
33

34
    def test_w_interface_not_IInterface(self):
1✔
35
        self.assertRaises(TypeError, self._callFUT, 'xxx', object())
1✔
36

37
    def test_w_iface_type_not_IInterface(self):
1✔
38
        from zope.interface import Interface
1✔
39
        from zope.interface.interface import InterfaceClass
1✔
40
        class IFoo(Interface):
1✔
41
            pass
1✔
42
        IBar = InterfaceClass('IBar')
1✔
43
        self.assertRaises(TypeError, self._callFUT, 'xxx', IFoo, IBar)
1✔
44

45
    def test_w_class(self):
1✔
46
        from zope.interface.interfaces import IInterface
1✔
47
        from zope.component.globalregistry import getGlobalSiteManager
1✔
48
        gsm = getGlobalSiteManager()
1✔
49
        class IBar(IInterface):
1✔
50
            pass
1✔
51
        class Foo(object):
1✔
52
            pass
1✔
53
        self._callFUT('', Foo, IBar)
1✔
54
        self.assertFalse(IBar.providedBy(Foo))
1✔
55
        self.assertEqual(len(list(gsm.getUtilitiesFor(IBar))), 0)
1✔
56

57
    def test_wo_name_w_iface_type(self):
1✔
58
        from zope.interface import Interface
1✔
59
        from zope.interface.interfaces import IInterface
1✔
60
        from zope.component.globalregistry import getGlobalSiteManager
1✔
61
        gsm = getGlobalSiteManager()
1✔
62
        class IFoo(Interface):
1✔
63
            pass
1✔
64
        class IBar(IInterface):
1✔
65
            pass
1✔
66
        self._callFUT('', IFoo, IBar)
1✔
67
        self.assertTrue(IBar.providedBy(IFoo))
1✔
68
        nm = 'zope.component.tests.test_interface.IFoo'
1✔
69
        self.assertTrue(gsm.getUtility(IBar, nm) is IFoo)
1✔
70

71
    def test_w_name_wo_ifact_type(self):
1✔
72
        from zope.interface import Interface
1✔
73
        from zope.interface.interfaces import IInterface
1✔
74
        from zope.component.globalregistry import getGlobalSiteManager
1✔
75
        gsm = getGlobalSiteManager()
1✔
76
        class IFoo(Interface):
1✔
77
            pass
1✔
78
        self._callFUT('foo', IFoo)
1✔
79
        self.assertTrue(IInterface.providedBy(IFoo))
1✔
80
        registered = gsm.getUtility(IInterface, name='foo')
1✔
81
        self.assertIs(registered, IFoo)
1✔
82

83
    def test_register_in_current_site(self):
1✔
84
        from zope.component._api import getSiteManager
1✔
85
        from zope.component.globalregistry import getGlobalSiteManager
1✔
86
        from zope.interface.registry import Components
1✔
87
        from zope.interface import Interface
1✔
88
        from zope.interface.interfaces import IInterface
1✔
89

90
        class IFoo(Interface):
1✔
91
            pass
1✔
92

93
        site_man = Components()
1✔
94
        def get(_context=None):
1✔
95
            return site_man
1✔
96
        getSiteManager.sethook(get)
1✔
97
        self.addCleanup(getSiteManager.reset)
1✔
98

99
        self._callFUT('foo', IFoo)
1✔
100

101
        self.assertIs(site_man.getUtility(IInterface, name='foo'),
1✔
102
                      IFoo)
103
        self.assertIsNone(
1✔
104
            getGlobalSiteManager().queryUtility(IInterface, name='foo')
105
        )
106

107

108

109
class Test_getInterface(unittest.TestCase):
1✔
110

111
    from zope.component.testing import setUp, tearDown
1✔
112

113
    def _callFUT(self, *args, **kw):
1✔
114
        from zope.component.interface import getInterface
1✔
115
        return getInterface(*args, **kw)
1✔
116

117
    def test_miss(self):
1✔
118
        from zope.interface.interfaces import ComponentLookupError
1✔
119
        self.assertRaises(ComponentLookupError,
1✔
120
                          self._callFUT, object(), 'nonesuch')
121

122
    def test_hit(self):
1✔
123
        from zope.interface import Interface
1✔
124
        from zope.interface.interfaces import IInterface
1✔
125
        from zope.component.globalregistry import getGlobalSiteManager
1✔
126
        gsm = getGlobalSiteManager()
1✔
127
        class IFoo(Interface):
1✔
128
            pass
1✔
129
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
130
        self.assertTrue(self._callFUT(object(), 'foo') is IFoo)
1✔
131

132

133
class Test_queryInterface(unittest.TestCase):
1✔
134

135
    from zope.component.testing import setUp, tearDown
1✔
136

137
    def _callFUT(self, *args, **kw):
1✔
138
        from zope.component.interface import queryInterface
1✔
139
        return queryInterface(*args, **kw)
1✔
140

141
    def test_miss(self):
1✔
142
        _DEFAULT = object()
1✔
143
        self.assertTrue(
1✔
144
            self._callFUT('nonesuch', default=_DEFAULT) is _DEFAULT)
145

146
    def test_hit(self):
1✔
147
        from zope.interface import Interface
1✔
148
        from zope.interface.interfaces import IInterface
1✔
149
        from zope.component.globalregistry import getGlobalSiteManager
1✔
150
        gsm = getGlobalSiteManager()
1✔
151
        class IFoo(Interface):
1✔
152
            pass
1✔
153
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
154
        self.assertTrue(self._callFUT('foo') is IFoo)
1✔
155

156

157
class Test_searchInterface(unittest.TestCase):
1✔
158

159
    from zope.component.testing import setUp, tearDown
1✔
160

161
    def _callFUT(self, *args, **kw):
1✔
162
        from zope.component.interface import searchInterface
1✔
163
        return searchInterface(*args, **kw)
1✔
164

165
    def test_empty(self):
1✔
166
        self.assertEqual(self._callFUT(object()), [])
1✔
167

168
    def test_no_search_string_no_base(self):
1✔
169
        from zope.interface import Interface
1✔
170
        from zope.interface.interfaces import IInterface
1✔
171
        from zope.component.globalregistry import getGlobalSiteManager
1✔
172
        gsm = getGlobalSiteManager()
1✔
173
        class IFoo(Interface):
1✔
174
            pass
1✔
175
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
176
        self.assertEqual(self._callFUT(object()), [IFoo])
1✔
177

178
    def test_w_search_string_no_base(self):
1✔
179
        from zope.interface import Interface
1✔
180
        from zope.interface.interfaces import IInterface
1✔
181
        from zope.component.globalregistry import getGlobalSiteManager
1✔
182
        gsm = getGlobalSiteManager()
1✔
183
        class IFoo(Interface):
1✔
184
            pass
1✔
185
        class IBar(Interface):
1✔
186
            pass
1✔
187
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
188
        gsm.registerUtility(IBar, IInterface, 'bar')
1✔
189
        self.assertEqual(self._callFUT(object(), 'IFoo'), [IFoo])
1✔
190

191
    def test_no_search_string_w_base(self):
1✔
192
        from zope.interface import Interface
1✔
193
        from zope.interface.interfaces import IInterface
1✔
194
        from zope.component.globalregistry import getGlobalSiteManager
1✔
195
        gsm = getGlobalSiteManager()
1✔
196
        class IBase(Interface):
1✔
197
            pass
1✔
198
        class IFoo(IBase):
1✔
199
            pass
1✔
200
        class IBar(Interface):
1✔
201
            pass
1✔
202
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
203
        gsm.registerUtility(IBar, IInterface, 'bar')
1✔
204
        self.assertEqual(self._callFUT(object(), base=IBase), [IFoo])
1✔
205

206
    def test_hit_in_current_site(self):
1✔
207
        from zope.component._api import getSiteManager
1✔
208
        from zope.component.globalregistry import getGlobalSiteManager
1✔
209
        from zope.interface.registry import Components
1✔
210
        from zope.interface import Interface
1✔
211
        from zope.interface.interfaces import IInterface
1✔
212

213
        class ILocal(Interface):
1✔
214
            pass
1✔
215

216
        class IGlobal(Interface):
1✔
217
            pass
1✔
218

219
        gsm = getGlobalSiteManager()
1✔
220
        site_man = Components(bases=(gsm,))
1✔
221
        def get(_context=None):
1✔
222
            return site_man
1✔
223
        getSiteManager.sethook(get)
1✔
224
        self.addCleanup(getSiteManager.reset)
1✔
225

226

227
        gsm.registerUtility(IGlobal, IInterface, 'foo')
1✔
228
        site_man.registerUtility(ILocal, IInterface, 'bar')
1✔
229

230
        result = self._callFUT(None)
1✔
231
        self.assertEqual(len(result), 2)
1✔
232
        self.assertIn(ILocal, result)
1✔
233
        self.assertIn(IGlobal, result)
1✔
234

235
        getSiteManager.reset()
1✔
236

237
        result = self._callFUT(None)
1✔
238
        self.assertEqual(len(result), 1)
1✔
239
        self.assertIn(IGlobal, result)
1✔
240

241

242
class Test_searchInterfaceIds(unittest.TestCase):
1✔
243

244
    from zope.component.testing import setUp, tearDown
1✔
245

246
    def _callFUT(self, *args, **kw):
1✔
247
        from zope.component.interface import searchInterfaceIds
1✔
248
        return searchInterfaceIds(*args, **kw)
1✔
249

250
    def test_empty(self):
1✔
251
        self.assertEqual(self._callFUT(object()), [])
1✔
252

253
    def test_no_search_string_no_base(self):
1✔
254
        from zope.interface import Interface
1✔
255
        from zope.interface.interfaces import IInterface
1✔
256
        from zope.component.globalregistry import getGlobalSiteManager
1✔
257
        gsm = getGlobalSiteManager()
1✔
258
        class IFoo(Interface):
1✔
259
            pass
1✔
260
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
261
        self.assertEqual(self._callFUT(object()), ['foo'])
1✔
262

263
    def test_w_search_string_no_base(self):
1✔
264
        from zope.interface import Interface
1✔
265
        from zope.interface.interfaces import IInterface
1✔
266
        from zope.component.globalregistry import getGlobalSiteManager
1✔
267
        gsm = getGlobalSiteManager()
1✔
268
        class IFoo(Interface):
1✔
269
            pass
1✔
270
        class IBar(Interface):
1✔
271
            pass
1✔
272
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
273
        gsm.registerUtility(IBar, IInterface, 'bar')
1✔
274
        self.assertEqual(self._callFUT(object(), 'IFoo'), ['foo'])
1✔
275

276
    def test_no_search_string_w_base(self):
1✔
277
        from zope.interface import Interface
1✔
278
        from zope.interface.interfaces import IInterface
1✔
279
        from zope.component.globalregistry import getGlobalSiteManager
1✔
280
        gsm = getGlobalSiteManager()
1✔
281
        class IBase(Interface):
1✔
282
            pass
1✔
283
        class IFoo(IBase):
1✔
284
            pass
1✔
285
        class IBar(Interface):
1✔
286
            pass
1✔
287
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
288
        gsm.registerUtility(IBar, IInterface, 'bar')
1✔
289
        self.assertEqual(self._callFUT(object(), base=IBase), ['foo'])
1✔
290

291

292
class Test_searchInterfaceUtilities(unittest.TestCase):
1✔
293

294
    from zope.component.testing import setUp, tearDown
1✔
295

296
    def _callFUT(self, *args, **kw):
1✔
297
        from zope.component.interface import searchInterfaceUtilities
1✔
298
        return searchInterfaceUtilities(*args, **kw)
1✔
299

300
    def test_empty(self):
1✔
301
        self.assertEqual(self._callFUT(object()), [])
1✔
302

303
    def test_no_search_string_no_base(self):
1✔
304
        from zope.interface import Interface
1✔
305
        from zope.interface.interfaces import IInterface
1✔
306
        from zope.component.globalregistry import getGlobalSiteManager
1✔
307
        gsm = getGlobalSiteManager()
1✔
308
        class IFoo(Interface):
1✔
309
            pass
1✔
310
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
311
        self.assertEqual(self._callFUT(object()), [('foo', IFoo)])
1✔
312

313
    def test_w_search_string_no_base(self):
1✔
314
        from zope.interface import Interface
1✔
315
        from zope.interface.interfaces import IInterface
1✔
316
        from zope.component.globalregistry import getGlobalSiteManager
1✔
317
        gsm = getGlobalSiteManager()
1✔
318
        class IFoo(Interface):
1✔
319
            pass
1✔
320
        class IBar(Interface):
1✔
321
            pass
1✔
322
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
323
        gsm.registerUtility(IBar, IInterface, 'bar')
1✔
324
        self.assertEqual(self._callFUT(object(), 'IFoo'), [('foo', IFoo)])
1✔
325

326
    def test_no_search_string_w_base(self):
1✔
327
        from zope.interface import Interface
1✔
328
        from zope.interface.interfaces import IInterface
1✔
329
        from zope.component.globalregistry import getGlobalSiteManager
1✔
330
        gsm = getGlobalSiteManager()
1✔
331
        class IBase(Interface):
1✔
332
            pass
1✔
333
        class IFoo(IBase):
1✔
334
            pass
1✔
335
        class IBar(Interface):
1✔
336
            pass
1✔
337
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
338
        gsm.registerUtility(IBar, IInterface, 'bar')
1✔
339
        self.assertEqual(self._callFUT(object(), base=IBase), [('foo', IFoo)])
1✔
340

341
    def test_no_search_string_w_base_is_same(self):
1✔
342
        from zope.interface import Interface
1✔
343
        from zope.interface.interfaces import IInterface
1✔
344
        from zope.component.globalregistry import getGlobalSiteManager
1✔
345
        gsm = getGlobalSiteManager()
1✔
346
        class IFoo(Interface):
1✔
347
            pass
1✔
348
        class IBar(Interface):
1✔
349
            pass
1✔
350
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
351
        gsm.registerUtility(IBar, IInterface, 'bar')
1✔
352
        self.assertEqual(self._callFUT(object(), base=IFoo), [('foo', IFoo)])
1✔
353

354

355
@unittest.skipIf(DOCSTRINGS_REMOVED,
1✔
356
                 'Skipping tests, docstrings are optimized away')
357
class Test_getInterfaceAllDocs(unittest.TestCase):
1✔
358

359
    def _callFUT(self, *args, **kw):
1✔
360
        from zope.component.interface import getInterfaceAllDocs
1✔
361
        return getInterfaceAllDocs(*args, **kw)
1✔
362

363
    def test_w_class(self):
1✔
364
        class Foo(object):
1✔
365
            """DOCSTRING"""
366
            bar = None
1✔
367
            def baz(self):
1✔
368
                """BAZ"""
369
        self.assertEqual(self._callFUT(Foo),
1✔
370
                         'zope.component.tests.test_interface.foo\n' +
371
                         'docstring')
372

373
    def test_w_interface_no_members(self):
1✔
374
        from zope.interface import Interface
1✔
375
        class IFoo(Interface):
1✔
376
            """DOCSTRING"""
377
        self.assertEqual(self._callFUT(IFoo),
1✔
378
                         'zope.component.tests.test_interface.ifoo\n' +
379
                         'docstring')
380

381
    def test_w_interface_w_members(self):
1✔
382
        from zope.interface import Attribute
1✔
383
        from zope.interface import Interface
1✔
384
        class IFoo(Interface):
1✔
385
            """DOCSTRING"""
386
            bar = Attribute('bar', 'Do bar')
1✔
387
            def baz(self):
1✔
388
                """BAZ"""
389
        self.assertEqual(self._callFUT(IFoo),
1✔
390
                         'zope.component.tests.test_interface.ifoo\n' +
391
                         'docstring\n' +
392
                         'do bar\n' +
393
                         'baz')
394

395

396
class Test_nameToInterface(unittest.TestCase):
1✔
397

398
    from zope.component.testing import setUp, tearDown
1✔
399

400
    def _callFUT(self, *args, **kw):
1✔
401
        from zope.component.interface import nameToInterface
1✔
402
        return nameToInterface(*args, **kw)
1✔
403

404
    def test_w_None(self):
1✔
405
        self.assertTrue(self._callFUT(object(), 'None') is None)
1✔
406

407
    def test_miss(self):
1✔
408
        from zope.interface.interfaces import ComponentLookupError
1✔
409
        self.assertRaises(ComponentLookupError,
1✔
410
                          self._callFUT, object(), 'nonesuch')
411

412
    def test_hit(self):
1✔
413
        from zope.interface import Interface
1✔
414
        from zope.interface.interfaces import IInterface
1✔
415
        from zope.component.globalregistry import getGlobalSiteManager
1✔
416
        gsm = getGlobalSiteManager()
1✔
417
        class IFoo(Interface):
1✔
418
            pass
1✔
419
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
420
        found = self._callFUT(object(), 'foo')
1✔
421
        self.assertTrue(found is IFoo)
1✔
422

423

424
class Test_interfaceToName(unittest.TestCase):
1✔
425

426
    from zope.component.testing import setUp, tearDown
1✔
427

428
    def _callFUT(self, *args, **kw):
1✔
429
        from zope.component.interface import interfaceToName
1✔
430
        return interfaceToName(*args, **kw)
1✔
431

432
    def test_w_None(self):
1✔
433
        self.assertEqual(self._callFUT(object(), None), 'None')
1✔
434

435
    def test_w_unregistered(self):
1✔
436
        from zope.interface import Interface
1✔
437
        class IFoo(Interface):
1✔
438
            pass
1✔
439
        self.assertEqual(self._callFUT(object(), IFoo),
1✔
440
                         'zope.component.tests.test_interface.IFoo')
441

442
    def test_w_registered(self):
1✔
443
        from zope.interface import Interface
1✔
444
        from zope.interface.interfaces import IInterface
1✔
445
        from zope.component.globalregistry import getGlobalSiteManager
1✔
446
        gsm = getGlobalSiteManager()
1✔
447
        class IFoo(Interface):
1✔
448
            pass
1✔
449
        gsm.registerUtility(IFoo, IInterface, 'foo')
1✔
450
        self.assertEqual(self._callFUT(object(), IFoo),
1✔
451
                         'zope.component.tests.test_interface.IFoo')
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc