[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