[Checkins] SVN: five.grok/trunk/ Merge http://svn.zope.org/five.grok/branches/sylvain-zope213.
Sylvain Viollon
sylvain at infrae.com
Mon Nov 7 10:51:39 UTC 2011
Log message for revision 123298:
Merge http://svn.zope.org/five.grok/branches/sylvain-zope213.
Changed:
U five.grok/trunk/README.txt
U five.grok/trunk/buildout.cfg
U five.grok/trunk/docs/HISTORY.txt
U five.grok/trunk/setup.py
U five.grok/trunk/src/five/grok/README.txt
U five.grok/trunk/src/five/grok/__init__.py
U five.grok/trunk/src/five/grok/absoluteurl.py
U five.grok/trunk/src/five/grok/components.py
U five.grok/trunk/src/five/grok/configure.zcml
U five.grok/trunk/src/five/grok/ftesting.zcml
U five.grok/trunk/src/five/grok/ftests/directoryresource/dirresource.py
U five.grok/trunk/src/five/grok/ftests/form/autofields.py
U five.grok/trunk/src/five/grok/ftests/form/autofields2.py
U five.grok/trunk/src/five/grok/ftests/form/form.py
U five.grok/trunk/src/five/grok/ftests/test_grok_functional.py
U five.grok/trunk/src/five/grok/ftests/view/argument.py
U five.grok/trunk/src/five/grok/ftests/view/association.py
U five.grok/trunk/src/five/grok/ftests/view/file.py
U five.grok/trunk/src/five/grok/ftests/view/index.py
U five.grok/trunk/src/five/grok/ftests/view/layers.py
U five.grok/trunk/src/five/grok/ftests/view/macros.py
U five.grok/trunk/src/five/grok/ftests/view/namespace.py
U five.grok/trunk/src/five/grok/ftests/view/namespace_override.py
D five.grok/trunk/src/five/grok/ftests/view/resource.py
U five.grok/trunk/src/five/grok/ftests/view/view.py
U five.grok/trunk/src/five/grok/ftests/viewlet/manager_render.py
U five.grok/trunk/src/five/grok/ftests/viewlet/manager_template.py
U five.grok/trunk/src/five/grok/ftests/viewlet/security.py
U five.grok/trunk/src/five/grok/ftests/viewlet/simple.py
U five.grok/trunk/src/five/grok/ftests/viewlet/simple2.py
U five.grok/trunk/src/five/grok/meta.py
U five.grok/trunk/src/five/grok/subscribers.py
U five.grok/trunk/src/five/grok/testing.py
U five.grok/trunk/src/five/grok/tests/adapters.py
U five.grok/trunk/src/five/grok/tests/annotation.py
D five.grok/trunk/src/five/grok/tests/doctest.py
U five.grok/trunk/src/five/grok/tests/multiadapter.py
D five.grok/trunk/src/five/grok/tests/resource.py
U five.grok/trunk/src/five/grok/tests/subscribers.py
U five.grok/trunk/src/five/grok/tests/test_all.py
U five.grok/trunk/src/five/grok/tests/utilities.py
-=-
Modified: five.grok/trunk/README.txt
===================================================================
--- five.grok/trunk/README.txt 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/README.txt 2011-11-07 10:51:39 UTC (rev 123298)
@@ -61,19 +61,21 @@
your buildout::
grokcore.annotation = 1.2
- grokcore.component = 1.8
- grokcore.formlib = 1.5
- grokcore.security = 1.4
- grokcore.site = 1.2
- grokcore.view = 1.12.2
- grokcore.viewlet = 1.4.1
- five.localsitemanager = 2.0.3
- martian = 0.11.2
+ grokcore.component = 2.4
+ grokcore.formlib = 1.8
+ grokcore.security = 1.5
+ grokcore.site = 1.5
+ grokcore.view = 2.6.1
+ grokcore.viewlet = 1.9
+ five.localsitemanager = 2.0.5
+ five.formlib = 1.0.4
+ martian = 0.14
-Zope 2.12 is required. If you wish to use a previous version of Zope
-2, look at the version 1.0 of five.grok.
+Zope 2.13 is required. If you wish to use a previous version of Zope
+2, look at five.grok 1.0 for Zope 2.10.x or five.grok 1.2 for Zope 2.12.x.
+
More information
----------------
Modified: five.grok/trunk/buildout.cfg
===================================================================
--- five.grok/trunk/buildout.cfg 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/buildout.cfg 2011-11-07 10:51:39 UTC (rev 123298)
@@ -3,29 +3,34 @@
zope2
instance
test
+ code
extensions = buildout.dumppickedversions
develop = .
-extends = http://download.zope.org/Zope2/index/2.12.7/versions.cfg
+extends = http://download.zope.org/Zope2/index/2.13.10/versions.cfg
versions = versions
[versions]
-plone.recipe.zope2instance = 3.6
+plone.recipe.zope2instance =
grokcore.annotation = 1.2
-grokcore.component = 1.8
-grokcore.formlib = 1.5
-grokcore.security = 1.4
-grokcore.site = 1.2
-grokcore.view = 1.12.2
-grokcore.viewlet = 1.4.1
-five.localsitemanager = 2.0.3
-martian = 0.11.2
-Zope2 = 2.12.7
+grokcore.component = 2.4
+grokcore.formlib = 1.8
+grokcore.security = 1.5
+grokcore.site = 1.5
+grokcore.view = 2.6.1
+grokcore.viewlet = 1.9
+five.localsitemanager = 2.0.5
+five.formlib = 1.0.4
+martian = 0.14
# This is needed in order to set up the mkzopeinstance script
[zope2]
recipe = zc.recipe.egg
eggs = Zope2
+[code]
+recipe = collective.recipe.omelette
+eggs = ${instance:eggs}
+
[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
Modified: five.grok/trunk/docs/HISTORY.txt
===================================================================
--- five.grok/trunk/docs/HISTORY.txt 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/docs/HISTORY.txt 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,13 +1,13 @@
Changelog
=========
-1.2.1 (unreleased)
+1.3.0 (unreleased)
------------------
-- Added missing required dependencies:
- zope.app.pagetemplate and zope.app.container
- [jfroche]
+- Clean up code, update dependencies and tests, this release only
+ works with Zope 2.13. [thefunny42]
+
1.2.0 (2011-01-22)
------------------
Modified: five.grok/trunk/setup.py
===================================================================
--- five.grok/trunk/setup.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/setup.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,7 +1,7 @@
from setuptools import setup, find_packages
import os
-version = '1.2.1dev'
+version = '1.3.0dev'
setup(name='five.grok',
version=version,
@@ -29,17 +29,25 @@
install_requires=[
'setuptools',
'martian',
- 'Zope2>=2.12.3',
+ 'Zope2>=2.13',
'five.formlib',
'five.localsitemanager > 2.0dev',
+ 'grokcore.annotation',
'grokcore.component',
'grokcore.formlib >= 1.4',
+ 'grokcore.security',
+ 'grokcore.site',
'grokcore.view >= 1.12.1',
'grokcore.viewlet >= 1.3',
- 'grokcore.security',
- 'grokcore.site',
- 'grokcore.annotation',
- 'zope.app.pagetemplate',
- 'zope.app.container'
+ 'zope.annotation',
+ 'zope.component',
+ 'zope.container',
+ 'zope.contentprovider',
+ 'zope.formlib',
+ 'zope.interface',
+ 'zope.location',
+ 'zope.pagetemplate',
+ 'zope.publisher',
+ 'zope.traversing',
],
)
Modified: five.grok/trunk/src/five/grok/README.txt
===================================================================
--- five.grok/trunk/src/five/grok/README.txt 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/README.txt 2011-11-07 10:51:39 UTC (rev 123298)
@@ -37,10 +37,7 @@
>>> from zope.component import getUtility
>>> from five.grok.README import *
- >>> from Testing.ZopeTestCase import ZopeLite as Zope2
- >>> from Testing.makerequest import makerequest
- >>> app = Zope2.app()
- >>> app = makerequest(app)
+ >>> app = getRootFolder()
>>> request = app.REQUEST
>>> village = GrokVillage(id='amsterdam')
@@ -199,7 +196,7 @@
We can create a local utility. When a ``CaveWoman`` is added, we can
lookup our utility and use it::
- <<< from zope.app.container.interfaces import IObjectAddedEvent
+ <<< from zope.container.interfaces import IObjectAddedEvent
<<< from zope.component import getUtility
<<< class ICaveInformations(Interface):
Modified: five.grok/trunk/src/five/grok/__init__.py
===================================================================
--- five.grok/trunk/src/five/grok/__init__.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/__init__.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -26,9 +26,6 @@
from five.grok.components import View, ViewletManager
from five.grok.formlib import AutoFields
-# backwards compatibility. Probably not needed by many, but just in case.
-# please start using grokcore.view.View again.
-CodeView = View
# Override the one from grokcore.view so that we get Zope 2 semantics
from five.grok.components import ZopeTwoPageTemplate as PageTemplate
Modified: five.grok/trunk/src/five/grok/absoluteurl.py
===================================================================
--- five.grok/trunk/src/five/grok/absoluteurl.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/absoluteurl.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -18,14 +18,13 @@
from grokcore.view.interfaces import IGrokView
-from Acquisition import aq_parent, aq_inner
+from Acquisition import aq_inner
from zope import component
from grokcore import component as grok
class ViewAbsoluteURL(absoluteurl.AbsoluteURL, grok.MultiAdapter):
-
grok.adapts(IGrokView, IBrowserRequest)
grok.provides(IAbsoluteURL)
Modified: five.grok/trunk/src/five/grok/components.py
===================================================================
--- five.grok/trunk/src/five/grok/components.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/components.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -13,15 +13,13 @@
##############################################################################
import martian
-import martian.util
import os.path
import sys
from zope.annotation.interfaces import IAttributeAnnotatable
-from zope.app.pagetemplate.viewpagetemplatefile import ViewMapper
from zope.location.interfaces import IPossibleSite
-from zope import interface, component
+from zope import interface
from five.formlib import formbase
@@ -30,12 +28,11 @@
from grokcore.formlib.components import default_display_template, \
default_form_template
from grokcore.view.components import PageTemplate
-from grokcore.viewlet.components import Viewlet as BaseViewlet
from grokcore.viewlet.components import ViewletManager as BaseViewletManager
from grokcore.site.components import BaseSite
import grokcore.view
-import grokcore.security
+from Products.Five.browser.pagetemplatefile import ViewMapper
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from Products.Five.browser.pagetemplatefile import getEngine
from Products.Five.browser import resource
@@ -47,7 +44,6 @@
from OFS.SimpleItem import SimpleItem
from OFS.Folder import Folder
-import Acquisition
from AccessControl import getSecurityManager
from Acquisition import aq_get
@@ -151,12 +147,13 @@
# Allow traversal to contained resources from protected code
__allow_access_to_unprotected_subobjects__ = True
-
+
# Allow subdirectories to work with restrictedTraverse() (in Zope >= 2.12.6)
__roles__ = None
-
+
resource_factories = {}
- for type, factory in (resource.DirectoryResource.resource_factories.items()):
+ for type, factory in (
+ resource.DirectoryResource.resource_factories.items()):
if factory is resource.PageTemplateResourceFactory:
continue
resource_factories[type] = factory
@@ -165,7 +162,7 @@
class ZopeTwoDirectoryResourceFactory(resource.DirectoryResourceFactory):
# __name__ is needed if you want to get url's of resources
- def __init__(self, name, path):
+ def __init__(self, name, path, resource_factory=None):
self.__name = name
self.__rsrc = self.factory(path, name)
@@ -185,19 +182,16 @@
class Form(GrokForm, formbase.PageForm, View):
-
martian.baseclass()
template = default_form_template
class AddForm(GrokForm, formbase.AddForm, View):
-
martian.baseclass()
template = default_form_template
class EditForm(GrokForm, formbase.EditForm, View):
-
martian.baseclass()
template = default_form_template
@@ -207,7 +201,6 @@
class DisplayForm(GrokForm, formbase.DisplayForm, View):
-
martian.baseclass()
template = default_display_template
Modified: five.grok/trunk/src/five/grok/configure.zcml
===================================================================
--- five.grok/trunk/src/five/grok/configure.zcml 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/configure.zcml 2011-11-07 10:51:39 UTC (rev 123298)
@@ -5,10 +5,13 @@
xmlns:grok="http://namespaces.zope.org/grok"
i18n_domain="five.grok">
- <include package="Products.Five" />
+ <!-- ZCML of this package fails in Zope 2.13 for strange reason -->
+ <exclude package="zope.contentprovider" />
+ <include package="Products.Five" />
<include package="five.grok" file="meta.zcml" />
+ <include package="five.formlib" />
<include package="five.localsitemanager" />
<include package="grokcore.annotation" />
<include package="grokcore.view" />
@@ -20,16 +23,10 @@
<utility component="grokcore.site.meta.setupUtility" />
<browser:defaultView
- for="grokcore.component.interfaces.IContext"
- name="index"
- />
+ for="grokcore.component.interfaces.IContext"
+ name="index"
+ />
- <permission
- id="zope.View"
- title="View"
- zcml:condition="not-installed kss.core"
- />
-
<includeOverrides file="overrides.zcml" />
</configure>
Modified: five.grok/trunk/src/five/grok/ftesting.zcml
===================================================================
--- five.grok/trunk/src/five/grok/ftesting.zcml 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftesting.zcml 2011-11-07 10:51:39 UTC (rev 123298)
@@ -6,6 +6,5 @@
<!-- And also grok all the ftests /-->
<grok:grok package="five.grok.ftests" />
- <include package="zope.app.rotterdam" />
</configure>
Modified: five.grok/trunk/src/five/grok/ftests/directoryresource/dirresource.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/directoryresource/dirresource.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/directoryresource/dirresource.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -3,7 +3,7 @@
through the dotted name of the module in which the directoryresource is
defined::
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open(
Modified: five.grok/trunk/src/five/grok/ftests/form/autofields.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/form/autofields.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/form/autofields.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.form.autofields import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
Modified: five.grok/trunk/src/five/grok/ftests/form/autofields2.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/form/autofields2.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/form/autofields2.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.form.autofields2 import *
>>> id = getRootFolder()._setObject("montparnasse", House(id='montparnasse'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
Modified: five.grok/trunk/src/five/grok/ftests/form/form.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/form/form.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/form/form.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.form.form import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
Modified: five.grok/trunk/src/five/grok/ftests/test_grok_functional.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/test_grok_functional.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/test_grok_functional.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,37 +1,29 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
import unittest
+import doctest
-from pkg_resources import resource_listdir
-from zope.testing import doctest
-from zope.app.testing.functional import HTTPCaller
-from five.grok.testing import GrokFunctionalLayer
-from Testing.ZopeTestCase.zopedoctest.functional import getRootFolder, sync
from Testing.ZopeTestCase import FunctionalDocTestSuite
-
from Testing.ZopeTestCase import installProduct
+from Testing.ZopeTestCase.zopedoctest.functional import getRootFolder, sync
+from five.grok.testing import FunctionalLayer
+from pkg_resources import resource_listdir
+
installProduct('PageTemplates')
-import Zope2 ; Zope2.startup()
-def http_call(method, path, data=None, **kw):
- """Function to help make RESTful calls.
-
- method - HTTP method to use
- path - testbrowser style path
- data - (body) data to submit
- kw - any request parameters
- """
-
- if path.startswith('http://localhost'):
- path = path[len('http://localhost'):]
- request_string = '%s %s HTTP/1.1\n' % (method, path)
- for key, value in kw.items():
- request_string += '%s: %s\n' % (key, value)
- if data is not None:
- request_string += '\r\n'
- request_string += data
- return HTTPCaller()(request_string, handle_errors=False)
-
-
def suiteFromPackage(name):
files = resource_listdir(__name__, name)
suite = unittest.TestSuite()
@@ -48,14 +40,12 @@
dottedname = 'five.grok.ftests.%s.%s' % (name, filename[:-3])
test = FunctionalDocTestSuite(
dottedname,
- extraglobs=dict(http=HTTPCaller(),
- http_call=http_call,
- getRootFolder=getRootFolder,
+ extraglobs=dict(getRootFolder=getRootFolder,
sync=sync),
optionflags=(doctest.ELLIPSIS+
doctest.NORMALIZE_WHITESPACE+
doctest.REPORT_NDIFF))
- test.layer = GrokFunctionalLayer
+ test.layer = FunctionalLayer
suite.addTest(test)
return suite
@@ -66,6 +56,3 @@
for name in ['directoryresource', 'view', 'viewlet','form', 'site']:
suite.addTest(suiteFromPackage(name))
return suite
-
-if __name__ == '__main__':
- unittest.main(defaultTest='test_suite')
Modified: five.grok/trunk/src/five/grok/ftests/view/argument.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/argument.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/argument.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -3,7 +3,7 @@
>>> from five.grok.ftests.view.argument import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
Modified: five.grok/trunk/src/five/grok/ftests/view/association.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/association.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/association.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.view.association import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@art")
Modified: five.grok/trunk/src/five/grok/ftests/view/file.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/file.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/file.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.view.file import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@painting")
Modified: five.grok/trunk/src/five/grok/ftests/view/index.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/index.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/index.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -6,7 +6,7 @@
The default view name for a model is 'index':
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred")
Modified: five.grok/trunk/src/five/grok/ftests/view/layers.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/layers.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/layers.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.view.layers import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@cavedrawings")
@@ -23,13 +23,16 @@
"""
from five import grok
-from zope.app.rotterdam import rotterdam
class MySkinLayer(grok.IBrowserRequest):
grok.skin('myskin')
+class MyRotterdamLayer(MySkinLayer):
+ grok.skin('Rotterdam')
+
+
class Mammoth(grok.Model):
pass
@@ -48,7 +51,7 @@
class MoreDrawings(grok.View):
- grok.layer(rotterdam)
+ grok.layer(MyRotterdamLayer)
def render(self):
return "Pretty"
Modified: five.grok/trunk/src/five/grok/ftests/view/macros.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/macros.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/macros.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.view.macros import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@painting")
Modified: five.grok/trunk/src/five/grok/ftests/view/namespace.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/namespace.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/namespace.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.view.namespace import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred")
Modified: five.grok/trunk/src/five/grok/ftests/view/namespace_override.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/namespace_override.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/namespace_override.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.view.namespace_override import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred")
Deleted: five.grok/trunk/src/five/grok/ftests/view/resource.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/resource.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/resource.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,115 +0,0 @@
-"""
- >>> from five.grok.ftests.view.resource import *
-
- >>> from Products.Five.testbrowser import Browser
- >>> browser = Browser()
- >>> browser.handleErrors = False
-
- We can access to our CSS file:
-
- >>> browser.open("http://localhost/++resource++five.grok.ftests.view/style.css")
- >>> print browser.contents
- body {
- color: green;
- }
- >>> print browser.headers['content-type']
- text/css; charset=iso-8859-15
-
- And the template file:
-
- >>> browser.open("http://localhost/++resource++five.grok.ftests.view/template.pt")
- >>> print browser.contents
- <tal:test>This template should be considered as a file.</tal:test>
- >>> print browser.headers['content-type']
- text/html; charset=iso-8859-15
-
- Set a content, and ask the view on it. In a view, you should be able
- to get the resource URL:
-
- >>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> browser.open("http://localhost/manfred")
- >>> print browser.contents
- <html>
- <body>
- <h1>Hello I a mammoth!</h1>
- <a href="http://localhost/manfred/++resource++five.grok.ftests.view/style.css">A link to some style for life!</a>
- </body>
- </html>
-
- We can use exists on resource files:
-
- >>> browser.open("http://localhost/manfred/exists")
- >>> print browser.contents
- <html>
- <body>
- <span>Test succeed</span>
- <BLANKLINE>
- </body>
- </html>
- <BLANKLINE>
- >>> browser.open("http://localhost/manfred/existsandtraverse")
- >>> print browser.contents
- <html>
- <body>
- <span>Test succeed</span>
- <BLANKLINE>
- </body>
- </html>
- <BLANKLINE>
-
-
-"""
-from five import grok
-
-class Mammoth(grok.Model):
-
- def __init__(self, id):
- super(Mammoth, self).__init__(id)
- self.id = id # XXX: if you don't have an id, the
- # link will be bad. Maybe this should
- # happens by default.
-
-class Index(grok.View):
- pass
-
-index = grok.PageTemplate("""\
-<html>
-<body>
-<h1>Hello I a mammoth!</h1>
-<a href="#"
- tal:attributes="href view/static/style.css">A link to some style for life!</a>
-</body>
-</html>
-""")
-
-
-class Exists(grok.View):
- pass
-
-exists = grok.PageTemplate("""\
-<html>
-<body>
-<span
- tal:condition="exists: view/static/style.css">Test succeed</span>
-<span
- tal:condition="exists: view/static/nonexistant.css">Test failed</span>
-</body>
-</html>
-""")
-
-
-class ExistsAndTraverse(grok.View):
- pass
-
-existsandtraverse = grok.PageTemplate("""\
-<html>
-<body>
-<span
- tal:condition="exists: context/++resource++five.grok.ftests.view/style.css">Test succeed</span>
-<span
- tal:condition="exists: context/++resource++five.grok.ftests.view/nonexistant.css">Test failed</span>
-</body>
-</html>
-""")
-
-
Modified: five.grok/trunk/src/five/grok/ftests/view/view.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/view/view.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/view/view.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.view.view import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@painting")
Modified: five.grok/trunk/src/five/grok/ftests/viewlet/manager_render.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/viewlet/manager_render.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/viewlet/manager_render.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.viewlet.manager_render import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@painting")
Modified: five.grok/trunk/src/five/grok/ftests/viewlet/manager_template.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/viewlet/manager_template.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/viewlet/manager_template.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.viewlet.manager_template import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@painting")
Modified: five.grok/trunk/src/five/grok/ftests/viewlet/security.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/viewlet/security.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/viewlet/security.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -3,7 +3,7 @@
>>> root = getRootFolder()
>>> id = root._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@painting")
Modified: five.grok/trunk/src/five/grok/ftests/viewlet/simple.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/viewlet/simple.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/viewlet/simple.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.viewlet.simple import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@painting")
Modified: five.grok/trunk/src/five/grok/ftests/viewlet/simple2.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/viewlet/simple2.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/ftests/viewlet/simple2.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -2,7 +2,7 @@
>>> from five.grok.ftests.viewlet.simple2 import *
>>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
- >>> from Products.Five.testbrowser import Browser
+ >>> from Testing.testbrowser import Browser
>>> browser = Browser()
>>> browser.handleErrors = False
>>> browser.open("http://localhost/manfred/@@painting")
Modified: five.grok/trunk/src/five/grok/meta.py
===================================================================
--- five.grok/trunk/src/five/grok/meta.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/meta.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -12,28 +12,21 @@
#
##############################################################################
-import martian
+from five.grok import components, formlib
+from grokcore.view.meta.directoryresource import _get_resource_path
+from zope import interface, component
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
import five.grok
+import grokcore.component
import grokcore.security
import grokcore.view
-import grokcore.component
-import grokcore.site.interfaces
+import martian
-from zope import interface, component
-from zope.app.container.interfaces import INameChooser
-from zope.publisher.interfaces.browser import IDefaultBrowserLayer
-from five.grok import components, formlib
-from grokcore.view.meta.directoryresource import _get_resource_path
-from martian.error import GrokError
-
-from Products.Five.security import protectClass, protectName
+from AccessControl.security import protectClass, protectName
from App.class_init import InitializeClass as initializeClass
-import os.path
-
class FormGrokker(martian.ClassGrokker):
-
martian.component(components.GrokForm)
martian.directive(grokcore.component.context)
martian.priority(800) # Must be run before real formlib grokker.
@@ -104,23 +97,6 @@
return _register_resource(config, resource_path, name, layer)
-class StaticResourcesGrokker(martian.GlobalGrokker):
-
- def grok(self, name, module, module_info, config, **kw):
- # we're only interested in static resources if this module
- # happens to be a package
- if not module_info.isPackage():
- return False
- resource_path = _get_resource_path(module_info, 'static')
-
- if not os.path.exists(resource_path):
- return False
-
- name = module_info.dotted_name
- layer = IDefaultBrowserLayer
- return _register_resource(config, resource_path, name, layer)
-
-
class ViewletSecurityGrokker(martian.ClassGrokker):
martian.component(five.grok.Viewlet)
martian.directive(grokcore.security.require, name='permission')
Modified: five.grok/trunk/src/five/grok/subscribers.py
===================================================================
--- five.grok/trunk/src/five/grok/subscribers.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/subscribers.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -13,7 +13,7 @@
##############################################################################
import grokcore.component
-from zope.app.container.interfaces import IObjectAddedEvent
+from zope.container.interfaces import IObjectAddedEvent
from five.localsitemanager import make_objectmanager_site
from five.grok.components import Site
Modified: five.grok/trunk/src/five/grok/testing.py
===================================================================
--- five.grok/trunk/src/five/grok/testing.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/testing.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -13,12 +13,14 @@
##############################################################################
"""Grok test helpers
"""
-import sys
-import grokcore.component
-from zope.configuration.config import ConfigurationMachine
-from martian import scan
+
+from Testing.ZopeTestCase.layer import ZopeLite
from grokcore.component import zcml
+from zope.component.testlayer import ZCMLFileLayer
+from zope.configuration.config import ConfigurationMachine
+import five.grok
+
def grok(module_name):
config = ConfigurationMachine()
zcml.do_grok('grokcore.component.meta', config)
@@ -32,92 +34,18 @@
zcml.do_grok(module_name, config)
config.execute_actions()
-def grok_component(name, component,
- context=None, module_info=None, templates=None):
- if module_info is None:
- obj_module = getattr(component, '__grok_module__', None)
- if obj_module is None:
- obj_module = getattr(component, '__module__', None)
- module_info = scan.module_info_from_dotted_name(obj_module)
- module = module_info.getModule()
- if context is not None:
- grokcore.component.context.set(module, context)
- if templates is not None:
- module.__grok_templates__ = templates
- config = ConfigurationMachine()
- result = zcml.the_multi_grokker.grok(name, component,
- module_info=module_info,
- config=config)
- config.execute_actions()
- return result
-def warn(message, category=None, stacklevel=1):
- """Intended to replace warnings.warn in tests.
+class Zope2FunctionalLayer(ZCMLFileLayer):
- Modified copy from zope.deprecation.tests to:
+ def setUp(self):
+ super(Zope2FunctionalLayer, self).setUp()
+ ZopeLite.setUp()
- * make the signature identical to warnings.warn
- * to check for *.pyc and *.pyo files.
+ def tearDown(self):
+ ZopeLite.tearDown()
+ super(Zope2FunctionalLayer, self).tearDown()
- When zope.deprecation is fixed, this warn function can be removed again.
- """
- print "From five.grok.testing's warn():"
- frame = sys._getframe(stacklevel)
- path = frame.f_globals['__file__']
- if path.endswith('.pyc') or path.endswith('.pyo'):
- path = path[:-1]
+FunctionalLayer = Zope2FunctionalLayer(five.grok)
- file = open(path)
- lineno = frame.f_lineno
- for i in range(lineno):
- line = file.readline()
-
- print "%s:%s: %s: %s\n %s" % (
- path,
- frame.f_lineno,
- category.__name__,
- message,
- line.strip(),
- )
-
-
-from zope.app.testing.placelesssetup import tearDown as _cleanUp
-def cleanUp():
- '''Cleans up the component architecture.'''
- _cleanUp()
- import Products.Five.zcml as zcml
- zcml._initialized = 0
-
-def setDebugMode(mode):
- '''Allows manual setting of Five's inspection of debug mode
- to allow for ZCML to fail meaningfully.
- '''
- import Products.Five.fiveconfigure as fc
- fc.debug_mode = mode
-
-import five.grok
-def safe_load_site():
- '''Loads entire component architecture (w/ debug mode on).'''
- cleanUp()
- setDebugMode(1)
- import Products.Five.zcml as zcml
- zcml.load_site()
- zcml.load_config('ftesting.zcml', five.grok)
- setDebugMode(0)
-
-class Layer:
-
- def setUp(cls):
- '''Sets up the CA by loading etc/site.zcml.'''
- safe_load_site()
- setUp = classmethod(setUp)
-
- def tearDown(cls):
- '''Cleans up the CA.'''
- cleanUp()
- tearDown = classmethod(tearDown)
-
-GrokFunctionalLayer = Layer
-
Modified: five.grok/trunk/src/five/grok/tests/adapters.py
===================================================================
--- five.grok/trunk/src/five/grok/tests/adapters.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/tests/adapters.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,6 +1,8 @@
-"""Testing that grokcore adapters work under Zope2
+"""
+Testing that grokcore adapters work under Zope2:
- >>> grok.testing.grok(__name__)
+ >>> from five.grok.tests.adapters import *
+ >>> grok.testing.grok('five.grok.tests.adapters')
>>> from OFS.SimpleItem import SimpleItem
>>> item = SimpleItem()
@@ -10,7 +12,7 @@
True
>>> IId.providedBy(adapted)
True
-
+
>>> adapted.id()
'item'
@@ -24,7 +26,7 @@
from OFS.interfaces import ISimpleItem
class IId(Interface):
-
+
def id():
"""Returns the ID of the object"""
Modified: five.grok/trunk/src/five/grok/tests/annotation.py
===================================================================
--- five.grok/trunk/src/five/grok/tests/annotation.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/tests/annotation.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,9 +1,9 @@
"""
- >>> grok.testing.grok(__name__)
- >>> from zope import component
- >>> from zope.annotation.attribute import AttributeAnnotations
- >>> component.provideAdapter(AttributeAnnotations)
+Testing that grokcore annotation work under Zope2:
+ >>> from five.grok.tests.annotation import *
+ >>> grok.testing.grok('five.grok.tests.annotation')
+
We can adapt a model to an annotation interface and obtain a
persistent annotation storage:
Deleted: five.grok/trunk/src/five/grok/tests/doctest.py
===================================================================
--- five.grok/trunk/src/five/grok/tests/doctest.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/tests/doctest.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,43 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-five.grok
-
-$Id$
-"""
-import re
-import os.path
-
-
-def doctestToPython(filenameInput, filenameOutput):
- assert os.path.exists(filenameInput)
- docFileR = open(filenameInput, 'r')
- newLines = []
- originalLines = []
- for line in docFileR.readlines():
- originalLines.append(line)
- if '<<<' in line:
- match = re.match(re.compile('(\s+<<<\s)(.*)'), line)
- if match:
- grokCodeFlag = True
- newLines.append("%s\n" % match.groups()[1])
- elif '...' in line and grokCodeFlag == True:
- match = re.match(re.compile('(\s+\.\.\.\s)(.*)'), line)
- if match:
- newLines.append("%s\n" % match.groups()[1])
- elif '<<<' not in line or '...' not in line: # handle comments
- grokCodeFlag = False
- newLines.append('#%s' % line)
-
- docFileR.close()
-
- docFileW = open(filenameOutput, 'w')
- for newLine in newLines:
- if newLine.strip() != '#':
- docFileW.write('%s' % newLine)
- else:
- docFileW.write('\n')
- docFileW.close()
-
-
-if __name__ == '__main__':
- doctestToPython('../README.txt', '../README.txt.out')
Modified: five.grok/trunk/src/five/grok/tests/multiadapter.py
===================================================================
--- five.grok/trunk/src/five/grok/tests/multiadapter.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/tests/multiadapter.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,10 +1,9 @@
"""
-Testing that grokcore multiadapters work under Zope2
+Testing that grokcore multiadapters work under Zope2:
-__init__():
+ >>> from five.grok.tests.multiadapter import *
+ >>> grok.testing.grok('five.grok.tests.multiadapter')
- >>> grok.testing.grok(__name__)
-
>>> cave = Cave()
>>> fireplace = Fireplace()
Deleted: five.grok/trunk/src/five/grok/tests/resource.py
===================================================================
--- five.grok/trunk/src/five/grok/tests/resource.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/tests/resource.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,18 +0,0 @@
-"""
-It is an error for the 'static' directory to be a python package:
-
- >>> grok.testing.grok('five.grok.tests.all.staticispackage')
- Traceback (most recent call last):
- ...
- GrokError: The 'static' resource directory must not be a python package.
-
-When a package contains a 'static' resource directory, it must not also contain
-a module called 'static.py':
-
- >>> grok.testing.grok('five.grok.tests.all.statichaspy')
- Traceback (most recent call last):
- ...
- GrokError: A package can not contain both a 'static' resource directory and a module named 'static.py'
-"""
-
-from five import grok
Modified: five.grok/trunk/src/five/grok/tests/subscribers.py
===================================================================
--- five.grok/trunk/src/five/grok/tests/subscribers.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/tests/subscribers.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,6 +1,8 @@
-"""Testing that grokcore subscribers work under Zope2
+"""
+Testing that grokcore subscribers work under Zope2:
- >>> grok.testing.grok(__name__)
+ >>> from five.grok.tests.subscribers import *
+ >>> grok.testing.grok('five.grok.tests.subscribers')
You can subscribe to events using the @grok.subscribe decorator:
Modified: five.grok/trunk/src/five/grok/tests/test_all.py
===================================================================
--- five.grok/trunk/src/five/grok/tests/test_all.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/tests/test_all.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,117 +1,35 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
import unittest
-from pkg_resources import resource_listdir
+import doctest
-from zope.testing import doctestunit, doctest
-from zope.component import testing
+from Testing.ZopeTestCase import FunctionalDocTestSuite
+from five.grok.testing import FunctionalLayer
-import Products.Five
-from Products.Five import zcml
-import five.grok
-from five.grok.tests.doctest import doctestToPython
-import os
+options = doctest.ELLIPSIS+doctest.NORMALIZE_WHITESPACE
-from Testing.ZopeTestCase.layer import ZopeLite as ZopeLiteLayer
-def setUp(test=None):
- testing.setUp(test)
- zcml.load_config('meta.zcml', package=Products.Five)
- zcml.load_config('configure.zcml', package=Products.Five)
- zcml.load_config('meta.zcml', package=five.grok)
- zcml.load_config('configure.zcml', package=five.grok)
- zcml.load_config('configure.zcml', package=five.grok.tests)
-
-from five.grok.testing import grok
-from zope import component
-
-
-def setUpWithGrokDoctest(test=None):
- testing.setUp(test)
- testFile = test.globs.get('__file__')
- testFileDirName, testFullFileName = os.path.split(testFile)
- testFileName, testFileExt = os.path.splitext(testFullFileName)
- pythonTestFile = os.path.join(testFileDirName, testFileName + '.py')
- doctestToPython(testFile, pythonTestFile)
- component.eventtesting.setUp()
- #XXX this should be done by the GrokDocFileSuite
- grok('five.grok.README')
- from zope.traversing.adapters import DefaultTraversable
- component.provideAdapter(DefaultTraversable, [None])
-
-
-def tearDownWithGrokDoctest(test=None):
- testing.tearDown(test)
- testFile = test.globs.get('__file__')
- testFileDirName, testFullFileName = os.path.split(testFile)
- testFileName, testFileExt = os.path.splitext(testFullFileName)
- pythonTestFile = os.path.join(testFileDirName, testFileName + '.py')
- os.remove(pythonTestFile)
- pythonPycTestFile = os.path.join(testFileDirName, testFileName + '.pyc')
- if os.path.exists(pythonPycTestFile):
- os.remove(pythonPycTestFile)
-
-
-def suiteFromPackage(name):
- files = resource_listdir(__name__, name)
+def test_suite():
suite = unittest.TestSuite()
- for filename in files:
- if not filename.endswith('.py'):
- continue
- if filename.endswith('_fixture.py'):
- continue
- if filename == '__init__.py':
- continue
- dottedname = 'five.grok.tests.%s.%s' % (name, filename[:-3])
- test = doctest.DocTestSuite(dottedname,
- setUp=setUp,
- tearDown=testing.tearDown,
- optionflags=doctest.ELLIPSIS+
- doctest.NORMALIZE_WHITESPACE)
-
+ for name in ['adapters', 'annotation', 'multiadapter', 'utilities',
+ 'subscribers']:
+ test = FunctionalDocTestSuite(
+ module='five.grok.tests.%s' % name,
+ optionflags=options)
+ test.layer = FunctionalLayer
suite.addTest(test)
return suite
-
-
-def test_suite():
-
- readmeSuite = doctestunit.DocFileSuite(
- 'README.txt', package='five.grok',
- setUp=setUpWithGrokDoctest, tearDown=tearDownWithGrokDoctest,
- optionflags=doctest.ELLIPSIS+
- doctest.NORMALIZE_WHITESPACE)
- readmeSuite.layer = ZopeLiteLayer
-
- return unittest.TestSuite([
-
- # Unit tests for your API
- readmeSuite,
-
- doctestunit.DocTestSuite(
- module='five.grok.tests.adapters',
- setUp=setUp, tearDown=testing.tearDown),
-
- doctestunit.DocTestSuite(
- module='five.grok.tests.annotation',
- setUp=setUp, tearDown=testing.tearDown),
-
- doctestunit.DocTestSuite(
- module='five.grok.tests.multiadapter',
- setUp=setUp, tearDown=testing.tearDown),
-
- doctestunit.DocTestSuite(
- module='five.grok.tests.utilities',
- setUp=setUp, tearDown=testing.tearDown),
-
- doctestunit.DocTestSuite(
- module='five.grok.tests.subscribers',
- setUp=setUp, tearDown=testing.tearDown),
-
- doctestunit.DocTestSuite(
- module='five.grok.tests.resource',
- setUp=setUp, tearDown=testing.tearDown),
- ])
-
-
-if __name__ == '__main__':
- unittest.main(defaultTest='test_suite')
Modified: five.grok/trunk/src/five/grok/tests/utilities.py
===================================================================
--- five.grok/trunk/src/five/grok/tests/utilities.py 2011-11-07 10:40:32 UTC (rev 123297)
+++ five.grok/trunk/src/five/grok/tests/utilities.py 2011-11-07 10:51:39 UTC (rev 123298)
@@ -1,7 +1,10 @@
-"""Testing that grokcore utilities work under Zope2
+"""
- >>> grok.testing.grok(__name__)
+Testing that grokcore utilities work under Zope2:
+ >>> from five.grok.tests.utilities import *
+ >>> grok.testing.grok('five.grok.tests.utilities')
+
>>> from zope import component
>>> club = component.getUtility(IFiveClub, 'five_inch')
>>> IFiveClub.providedBy(club)
More information about the checkins
mailing list