[Checkins] SVN: zope.pytest/branches/jj-jw-functional-doctests/ start experimenting with functional doctests

Jan-Wijbrand Kolman janwijbrand at gmail.com
Sun Mar 13 19:15:41 EDT 2011


Log message for revision 120894:
  start experimenting with functional doctests

Changed:
  A   zope.pytest/branches/jj-jw-functional-doctests/
  U   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/setup.py
  U   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/tests/test_browser.py
  A   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/
  D   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg3/
  A   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/
  U   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/app.py
  U   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/ftesting.zcml
  A   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/conftest.py
  D   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_app.py
  D   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_browser.py
  D   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_foo.py
  A   zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_something.txt

-=-
Modified: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/setup.py
===================================================================
--- zope.pytest/trunk/src/zope/pytest/setup.py	2011-03-08 21:06:19 UTC (rev 120813)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/setup.py	2011-03-13 23:15:41 UTC (rev 120894)
@@ -35,7 +35,7 @@
     The `request` parameter is expected to be a py.test
     :class:`FuncargRequest` (not an HTTP request or similar) which is
     generated by py.test while running tests.
-    
+
     The :attr:`handle_errors` attribute of the returned application is
     set to ``False`` so that errors are handled by the server.
 
@@ -45,7 +45,7 @@
     normally be done using :func:`configure` or :func:`setup_config`.
 
     .. seealso:: `pytest_funcarg__`_ docs on pytest.org.
-    
+
     .. _pytest_funcarg__: http://pytest.org/funcargs.html
     """
     db = setup_db()
@@ -73,11 +73,11 @@
 
     return wsgi_app
 
-def configure(request, module, zcml):
+def configure(request, module, zcml, global_setup=False):
     """Configure the environment.
 
     Performs a ZCML-driven configuration.
-    
+
     The `request` parameter
       is expected to be a py.test
       :class:`FuncargRequest` (not an HTTP request or similar) which is
@@ -101,18 +101,19 @@
     It adds cached setup and teardown code to be run before and after
     your session. That means the configuration setup and teardown will
     happen only once for a complete test run.
-    
+
     .. seealso:: `pytest_funcarg__`_ docs on pytest.org.
-    
+
     .. _pytest_funcarg__: http://pytest.org/funcargs.html
 
     """
+
     def setup_function():
         return setup_config(module, zcml)
-
+    scope = global_setup and 'session' or 'function'
     return request.cached_setup(setup=setup_function,
                                 teardown=teardown_config,
-                                scope='session')
+                                scope=scope)
 
 def setup_config(package, zcml_file):
     """Setup a configuration.
@@ -134,6 +135,7 @@
 
     Returns the resulting ZCML_ configuration.
     """
+    cleanUp()
     zcml_file = os.path.join(os.path.dirname(package.__file__),
                              zcml_file)
 
@@ -162,7 +164,7 @@
     You normally have to configure the Zope Component Architechture
     using :func:`setup_config` or (preferably) :func:`configure`
     before you call this function.
-    
+
     Returns a ZODB DB.
     """
     name = 'main'
@@ -206,7 +208,7 @@
     `connection`
       is a (normally open) ZODB_ DB connection as returned by
       :func:`setup_connection`.
-    
+
     Aborts any running transaction and closes the connection.
     """
     transaction.abort()

Modified: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/tests/test_browser.py
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/tests/test_browser.py	2011-03-08 21:06:19 UTC (rev 120813)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/tests/test_browser.py	2011-03-13 23:15:41 UTC (rev 120894)
@@ -21,6 +21,14 @@
     rendered_view = view()
     assert view() == u'Hello from SampleAppView!'
 
+    from zope.interface import Interface
+    from zope.component import provideUtility, getUtility
+
+    the_something = object()
+    provideUtility(the_something, provides=Interface, name='something here')
+
+    s = getUtility(Interface, name='something here')
+
 def test_browser(config, apps):
     zope_app, wsgi_app = apps
     http_request = Request.blank('http://localhost/test/index.html')
@@ -28,6 +36,12 @@
     assert response.body == 'Hello from SampleAppView!'
     assert response.status == "200 Ok"
 
+    from zope.interface import Interface
+    from zope.component.interface import ComponentLookupError
+    from zope.component import getUtility
+    with pytest.raises(ComponentLookupError):
+        getUtility(Interface, name='something here')
+
 @pytest.mark.xfail("sys.version_info < (2,6)")
 def test_infrae_browser(config, apps):
     # Late import. This import will fail with Python < 2.6

Modified: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/app.py
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/app.py	2011-03-08 21:06:19 UTC (rev 120813)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/app.py	2011-03-13 23:15:41 UTC (rev 120894)
@@ -1,5 +1,5 @@
 from zope.interface import implements
-from mypkg3.interfaces import ISampleApp, IFoo
+from mypkg4.interfaces import ISampleApp, IFoo
 
 class SampleApp(object):
     implements(ISampleApp)

Modified: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/ftesting.zcml
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/ftesting.zcml	2011-03-08 21:06:19 UTC (rev 120813)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/ftesting.zcml	2011-03-13 23:15:41 UTC (rev 120894)
@@ -1,7 +1,7 @@
 <configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser"
-   package="mypkg3"
+   package="mypkg4"
    >
 
   <!-- This file is the equivalent of site.zcml and it is -->
@@ -16,7 +16,7 @@
   <include package="zope.app.wsgi" />
   <include package="zope.app.zcmlfiles" />
 
-  <include package="mypkg3" file="configure.zcml" />
+  <include package="mypkg4" file="configure.zcml" />
 
   <securityPolicy
       component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy" />

Added: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/conftest.py
===================================================================
--- zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/conftest.py	                        (rev 0)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/conftest.py	2011-03-13 23:15:41 UTC (rev 120894)
@@ -0,0 +1,14 @@
+import pytest
+from zope.pytest import configure, create_app
+from mypkg4.app import SampleApp
+
+def pytest_funcarg__apps(request):
+    app = SampleApp()
+    return app, create_app(request, app)
+
+def pytest_funcarg__config(request):
+    return configure(request, mypkg4, 'ftesting.zcml')
+
+def pytest_runtest_setup(item):
+    pytest.set_trace()
+

Deleted: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_app.py
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/tests/test_app.py	2011-03-08 21:06:19 UTC (rev 120813)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_app.py	2011-03-13 23:15:41 UTC (rev 120894)
@@ -1,16 +0,0 @@
-from zope.interface.verify import verifyClass, verifyObject
-from mypkg3.app import SampleApp
-from mypkg3.interfaces import ISampleApp
-
-def test_app_create():
-    # Assure we can create instances of `SampleApp`
-    app = SampleApp()
-    assert app is not None
-
-def test_app_class_iface():
-    # Assure the class implements the declared interface
-    assert verifyClass(ISampleApp, SampleApp)
-
-def test_app_instance_iface():
-    # Assure instances of the class provide the declared interface
-    assert verifyObject(ISampleApp, SampleApp())

Deleted: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_browser.py
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/tests/test_browser.py	2011-03-08 21:06:19 UTC (rev 120813)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_browser.py	2011-03-13 23:15:41 UTC (rev 120894)
@@ -1,39 +0,0 @@
-import pytest
-import mypkg3
-from webob import Request
-from zope.component import getMultiAdapter
-from zope.publisher.browser import TestRequest
-from zope.pytest import configure, create_app
-from mypkg3.app import SampleApp
-
-
-def pytest_funcarg__apps(request):
-    app = SampleApp()
-    return app, create_app(request, app)
-
-def pytest_funcarg__config(request):
-    return configure(request, mypkg3, 'ftesting.zcml')
-
-def test_view_sampleapp(config, apps):
-    zope_app, wsgi_app = apps
-    view = getMultiAdapter(
-        (zope_app, TestRequest()), name="index.html")
-    rendered_view = view()
-    assert view() == u'Hello from SampleAppView!'
-
-def test_browser(config, apps):
-    zope_app, wsgi_app = apps
-    http_request = Request.blank('http://localhost/test/index.html')
-    response = http_request.get_response(wsgi_app)
-    assert response.body == 'Hello from SampleAppView!'
-    assert response.status == "200 Ok"
-
- at pytest.mark.xfail("sys.version_info < (2,6)")
-def test_infrae_browser(config, apps):
-    # Late import. This import will fail with Python < 2.6
-    from infrae.testbrowser.browser import Browser
-    zope_app, wsgi_app = apps
-    browser = Browser(wsgi_app)
-    browser.open('http://localhost/test/index.html')
-    assert browser.contents == 'Hello from SampleAppView!'
-    assert browser.status == '200 Ok'

Deleted: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_foo.py
===================================================================
--- zope.pytest/trunk/src/zope/pytest/tests/sample_fixtures/browser/mypkg3/tests/test_foo.py	2011-03-08 21:06:19 UTC (rev 120813)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_foo.py	2011-03-13 23:15:41 UTC (rev 120894)
@@ -1,15 +0,0 @@
-import mypkg3
-from zope.component import queryUtility
-from mypkg3.interfaces import IFoo
-from zope.pytest import configure
-
-def pytest_funcarg__config(request):
-    return configure(request, mypkg3, 'ftesting.zcml')
-
-def test_get_utility(config):
-    util = queryUtility(IFoo, name='foo utility', default=None)
-    assert util is not None
-
-def test_dofoo_utility(config):
-    util = queryUtility(IFoo, name='foo utility', default=None)
-    assert util().do_foo() == 'Foo!'

Added: zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_something.txt
===================================================================
--- zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_something.txt	                        (rev 0)
+++ zope.pytest/branches/jj-jw-functional-doctests/src/zope/pytest/tests/sample_fixtures/functionaldoctest/mypkg4/tests/test_something.txt	2011-03-13 23:15:41 UTC (rev 120894)
@@ -0,0 +1,4 @@
+
+	>>> 1 + 1
+	3
+



More information about the checkins mailing list