[Checkins]
SVN: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/
Move a test from Grok to grokcore.component that really
belongs there.
Philipp von Weitershausen
philikon at philikon.de
Sun May 4 10:24:58 EDT 2008
Log message for revision 86371:
Move a test from Grok to grokcore.component that really belongs there.
Changed:
A grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/grok_component.txt
U grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/test_grok.py
-=-
Copied: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/grok_component.txt (from rev 86333, grok/branches/jw-philipp-using-ndir-directives/src/grok/ftests/grok_component.txt)
===================================================================
--- grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/grok_component.txt (rev 0)
+++ grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/grok_component.txt 2008-05-04 14:24:58 UTC (rev 86371)
@@ -0,0 +1,42 @@
+Test grok_component() in an ordinary doctest.
+
+We already have tests for grok_component(), but these were placed
+inside a module. We will now test grok_component() in a pure doctest
+context. This used to demonstrate an error in martian when dealing
+with the __builtin__ module (fixed in martian 0.9.2).
+
+grokcore.component.testing.grok_component() can be used to grok individual
+components within a doctest, such as adapters. It sets up just enough
+context for some grokking to work, though more complicated grokkers
+which need module context (such as view grokkers) might not work.
+
+This defines the object we want to provide an adapter for::
+
+ >>> class Bar(object):
+ ... pass
+
+This is the interface that we want to adapt to::
+
+ >>> from zope.interface import Interface
+ >>> class IFoo(Interface):
+ ... pass
+
+This is the adapter itself::
+
+ >>> import grokcore.component as grok
+ >>> class MyAdapter(grok.Adapter):
+ ... grok.provides(IFoo)
+ ... grok.context(Bar)
+
+Now we will register the adapter using grok_component()::
+
+ >>> from grokcore.component.testing import grok, grok_component
+ >>> grok('grokcore.component.meta')
+ >>> grok_component('MyAdapter', MyAdapter)
+ True
+
+The adapter should now be available::
+
+ >>> adapted = IFoo(Bar())
+ >>> isinstance(adapted, MyAdapter)
+ True
Modified: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/test_grok.py
===================================================================
--- grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/test_grok.py 2008-05-04 14:16:54 UTC (rev 86370)
+++ grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/tests/test_grok.py 2008-05-04 14:24:58 UTC (rev 86371)
@@ -48,6 +48,13 @@
for name in ['adapter', 'directive', 'grokker', 'testsetup',
'utility', 'view', 'event']:
suite.addTest(suiteFromPackage(name))
+
+ # this test cannot follow the normal testing pattern, as the
+ # bug it tests for is only exposed in the context of a doctest
+ grok_component = doctest.DocFileSuite('grok_component.txt',
+ setUp=setUpZope,
+ tearDown=cleanUpZope)
+ suite.addTest(grok_component)
return suite
if __name__ == '__main__':
More information about the Checkins
mailing list