From b06b260b83bfc2f40105c6e730f5e7e8eccd61d9 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Wed, 21 Oct 2009 18:55:34 +0000 Subject: - Fix bug encountered during "scan" (when ```` directive is used in ZCML) introduced in 1.1a7. Symptom: ``AttributeError: object has no attribute __provides__`` raised at startup time. --- repoze/bfg/tests/test_zcml.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'repoze/bfg/tests') diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index 282c27472..d6eb80c44 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -2544,6 +2544,48 @@ class TestExcludeFunction(unittest.TestCase): self.assertEqual(self._callFUT('.foo'), True) self.assertEqual(self._callFUT('foo'), False) +class TestGetMembersFunction(unittest.TestCase): + def _callFUT(self, object, predicate=None): + from repoze.bfg.zcml import getmembers + return getmembers(object, predicate) + + def test_with_attribute_error(self): + class Dummy: + @property + def raises(self): + raise AttributeError('raises') + ob = Dummy() + result = self._callFUT(ob, None) + result.sort() + self.assertEqual(result, + [('__doc__', None), + ('__module__', 'repoze.bfg.tests.test_zcml')] + ) + + def test_without_attribute_error(self): + class Dummy: + def doesntraise(self): + pass + ob = Dummy() + result = self._callFUT(ob, None) + result.sort() + self.assertEqual(result, + [('__doc__', None), + ('__module__', 'repoze.bfg.tests.test_zcml'), + ('doesntraise', ob.doesntraise)] + ) + + def test_predicate(self): + class Dummy: + def doesntraise(self): + pass + ob = Dummy() + def predicate(testing): + return getattr(testing, '__name__', None) == 'doesntraise' + result = self._callFUT(ob, predicate) + result.sort() + self.assertEqual(result,[('doesntraise', ob.doesntraise)]) + class DummyModule: __path__ = "foo" __name__ = "dummy" -- cgit v1.2.3