[Checkins] SVN: zope.generations/trunk/ - renamed zope.app.generations to zope.generations
Michael Howitz
mh at gocept.com
Sat Sep 18 05:30:18 EDT 2010
Log message for revision 116553:
- renamed zope.app.generations to zope.generations
- added test for configure.zcml
- minimized dependencies
- removed remaining things needed for browser code
Changed:
U zope.generations/trunk/CHANGES.txt
U zope.generations/trunk/buildout.cfg
U zope.generations/trunk/setup.py
U zope.generations/trunk/src/zope/generations/README.txt
U zope.generations/trunk/src/zope/generations/configure.zcml
U zope.generations/trunk/src/zope/generations/demo/evolve1.py
U zope.generations/trunk/src/zope/generations/demo/evolve2.py
U zope.generations/trunk/src/zope/generations/demo/evolve3.py
U zope.generations/trunk/src/zope/generations/demo/install.py
U zope.generations/trunk/src/zope/generations/demo3/__init__.py
U zope.generations/trunk/src/zope/generations/demo3/install.py
D zope.generations/trunk/src/zope/generations/ftesting.zcml
U zope.generations/trunk/src/zope/generations/generations.py
D zope.generations/trunk/src/zope/generations/testing.py
A zope.generations/trunk/src/zope/generations/tests/
A zope.generations/trunk/src/zope/generations/tests/__init__.py
A zope.generations/trunk/src/zope/generations/tests/test_generations.py
A zope.generations/trunk/src/zope/generations/tests/test_zcml.py
D zope.generations/trunk/src/zope/generations/tests.py
U zope.generations/trunk/src/zope/generations/utility.py
-=-
Modified: zope.generations/trunk/CHANGES.txt
===================================================================
--- zope.generations/trunk/CHANGES.txt 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/CHANGES.txt 2010-09-18 09:30:17 UTC (rev 116553)
@@ -2,67 +2,7 @@
CHANGES
=======
-3.6.1 (unreleased)
+3.7.0 (unreleased)
------------------
-- Nothing changed yet.
-
-
-3.6.0 (2010-09-17)
-------------------
-
-- ``zope.app.generations`` depended on ``zope.app.applicationcontrol`` but
- did not declare it. Modernized dependecy to ``zope.applicationcontrol`` as
- the needed interface has been moved there.
-
-- Using python's ``doctest`` module instead of deprecated
- ``zope.testing.doctest[unit]``.
-
-- Replaced a testing dependency on ``zope.app.securitypolicy`` with one on
- ``zope.securitypolicy``.
-
-
-3.5.1 (2010-01-08)
-------------------
-
-- Depend on new ``zope.processlifetime`` interfaces instead of using
- BBB imports from ``zope.app.appsetup``.
-
-- Fix ftesting.zcml due to ``zope.securitypolicy`` update.
-
-- Fix tests using a newer zope.publisher that requires zope.login.
-
-3.5.0 (2009-04-05)
-------------------
-
-- Moved ``getRootFolder`` utility method from
- ``zope.app.zopeappgenerations`` to ``zope.app.generations.utility``.
-
-- Removed not necessary install dependency on ``zope.app.testing``.
-
-
-3.4.2 (2009-01-27)
-------------------
-
-- Provide more logging output for the various stages and actions of evolving a
- database.
-
-- Fixed bug: A failing last generation would allow starting an app server
- without having evolved to the minimum generation.
-
-- Substitute zope.app.zapi by direct calls to its wrapped apis. See
- bug 219302.
-
-- Corrected author email and home page address.
-
-
-3.4.1 (2007-10-31)
-------------------
-
-- Resolve ``ZopeSecurityPolicy`` deprecation warning.
-
-
-3.4.0 (2007-10-24)
-------------------
-
-- Initial release independent of the main Zope tree.
+- Initial release extracted from `zope.app.generations`.
\ No newline at end of file
Modified: zope.generations/trunk/buildout.cfg
===================================================================
--- zope.generations/trunk/buildout.cfg 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/buildout.cfg 2010-09-18 09:30:17 UTC (rev 116553)
@@ -4,7 +4,7 @@
[test]
recipe = zc.recipe.testrunner
-eggs = zope.app.generations [test]
+eggs = zope.generations [test]
[coverage-test]
recipe = zc.recipe.testrunner
Modified: zope.generations/trunk/setup.py
===================================================================
--- zope.generations/trunk/setup.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/setup.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -16,7 +16,7 @@
# When developing and releasing this package, please follow the documented
# Zope Toolkit policies as described by this documentation.
##############################################################################
-"""Setup for zope.app.generations package
+"""Setup for zope.generations package
$Id$
"""
@@ -26,11 +26,11 @@
def read(*rnames):
return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
-setup(name='zope.app.generations',
- version='3.6.1dev',
+setup(name='zope.generations',
+ version='3.7.0dev',
author='Zope Corporation and Contributors',
author_email='zope-dev at zope.org',
- description='Zope Application Schema Generations',
+ description='Zope application schema generations',
long_description=(
read('README.txt')
+ '\n\n.. contents::\n\n' +
@@ -38,11 +38,11 @@
'Detailed Documentation\n'
'======================\n'
+ '\n\n' +
- read('src', 'zope', 'app', 'generations', 'README.txt')
+ read('src', 'zope', 'generations', 'README.txt')
+ '\n\n' +
read('CHANGES.txt')
),
- keywords = "zope3 zodb schema generation",
+ keywords = "zope zodb schema generation",
classifiers = [
'Development Status :: 5 - Production/Stable',
'Environment :: Web Environment',
@@ -53,26 +53,24 @@
'Operating System :: OS Independent',
'Topic :: Internet :: WWW/HTTP',
'Framework :: Zope3'],
- url='http://pypi.python.org/pypi/zope.app.generations',
+ url='http://pypi.python.org/pypi/zope.generations',
license='ZPL 2.1',
packages=find_packages('src'),
package_dir = {'': 'src'},
- namespace_packages=['zope', 'zope.app'],
+ namespace_packages=['zope'],
extras_require = dict(test=[
- 'zope.app.testing',
- 'zope.app.zcmlfiles',
- 'zope.login',
- 'zope.publisher >= 3.12',
- 'zope.securitypolicy',
+ 'ZODB3',
+ 'zope.app.publication',
+ 'zope.site',
+ 'zope.testing',
]),
- install_requires=['setuptools',
- 'zope.app.renderer',
- 'zope.interface',
- 'zope.app.publication',
- 'ZODB3',
- 'zope.processlifetime',
- 'zope.applicationcontrol',
- ],
+ install_requires=[
+ 'setuptools',
+ 'transaction',
+ 'zope.component',
+ 'zope.interface',
+ 'zope.processlifetime',
+ ],
include_package_data = True,
zip_safe = False,
)
Modified: zope.generations/trunk/src/zope/generations/README.txt
===================================================================
--- zope.generations/trunk/src/zope/generations/README.txt 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/README.txt 2010-09-18 09:30:17 UTC (rev 116553)
@@ -15,7 +15,6 @@
>>> import cgi
>>> from pprint import pprint
>>> from zope.interface import implements
- >>> from zope.app.testing import ztapi
>>> from ZODB.tests.util import DB
>>> db = DB()
@@ -46,8 +45,10 @@
>>> from zope.generations.interfaces import ISchemaManager
>>> from zope.generations.generations import SchemaManager
+ >>> import zope.component
>>> dummy_manager = SchemaManager(minimum_generation=0, generation=0)
- >>> ztapi.provideUtility(ISchemaManager, dummy_manager, name='some.app')
+ >>> zope.component.provideUtility(
+ ... dummy_manager, ISchemaManager, name='some.app')
'some.app' is a unique identifier. You should use a URI or the dotted name
of your package.
@@ -88,7 +89,10 @@
Let's update the schema manager (drop the old one and install a new custom
one):
- >>> ztapi.unprovideUtility(ISchemaManager, name='some.app')
+ >>> from zope.component import globalregistry
+ >>> gsm = globalregistry.getGlobalSiteManager()
+ >>> gsm.unregisterUtility(provided=ISchemaManager, name='some.app')
+ True
>>> class MySchemaManager(object):
... implements(ISchemaManager)
@@ -112,7 +116,7 @@
... transaction.commit()
>>> manager = MySchemaManager()
- >>> ztapi.provideUtility(ISchemaManager, manager, name='some.app')
+ >>> zope.component.provideUtility(manager, ISchemaManager, name='some.app')
We have set `minimum_generation` to 1. That means that our application
will refuse to run with a database older than generation 1. The `generation`
@@ -201,10 +205,10 @@
>>> manager1 = SchemaManager(minimum_generation=0, generation=0)
>>> manager2 = SchemaManager(minimum_generation=0, generation=0)
- >>> ztapi.provideUtility(
- ... ISchemaManager, manager1, name='another.app')
- >>> ztapi.provideUtility(
- ... ISchemaManager, manager2, name='another.app-extension')
+ >>> zope.component.provideUtility(
+ ... manager1, ISchemaManager, name='another.app')
+ >>> zope.component.provideUtility(
+ ... manager2, ISchemaManager, name='another.app-extension')
Notice how the name of the first package is used to create a namespace
for dependent packages. This is not a requirement of the framework,
@@ -226,8 +230,11 @@
schema managers for each that record that they've been run so we can
verify the result:
- >>> ztapi.unprovideUtility(ISchemaManager, name='another.app')
- >>> ztapi.unprovideUtility(ISchemaManager, name='another.app-extension')
+ >>> gsm.unregisterUtility(provided=ISchemaManager, name='another.app')
+ True
+ >>> gsm.unregisterUtility(
+ ... provided=ISchemaManager, name='another.app-extension')
+ True
>>> class FoundationSchemaManager(object):
... implements(ISchemaManager)
@@ -266,10 +273,10 @@
>>> manager1 = FoundationSchemaManager()
>>> manager2 = DependentSchemaManager()
- >>> ztapi.provideUtility(
- ... ISchemaManager, manager1, name='another.app')
- >>> ztapi.provideUtility(
- ... ISchemaManager, manager2, name='another.app-extension')
+ >>> zope.component.provideUtility(
+ ... manager1, ISchemaManager, name='another.app')
+ >>> zope.component.provideUtility(
+ ... manager2, ISchemaManager, name='another.app-extension')
Evolving the database now will always run the 'another.app' evolver
before the 'another.app-extension' evolver:
@@ -297,8 +304,8 @@
Let's define a new schema manager that includes installation:
- >>> ztapi.unprovideUtility(ISchemaManager, name='some.app')
-
+ >>> gsm.unregisterUtility(provided=ISchemaManager, name='some.app')
+ True
>>> from zope.generations.interfaces import IInstallableSchemaManager
>>> class MySchemaManager(object):
... implements(IInstallableSchemaManager)
@@ -329,7 +336,7 @@
... transaction.commit()
>>> manager = MySchemaManager()
- >>> ztapi.provideUtility(ISchemaManager, manager, name='some.app')
+ >>> zope.component.provideUtility(manager, ISchemaManager, name='some.app')
Now, lets open a new database:
Modified: zope.generations/trunk/src/zope/generations/configure.zcml
===================================================================
--- zope.generations/trunk/src/zope/generations/configure.zcml 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/configure.zcml 2010-09-18 09:30:17 UTC (rev 116553)
@@ -2,22 +2,20 @@
<!--
<utility
- name="zope.app"
+ name="zope.app"
provides=".interfaces.ISchemaManager"
factory=".generations.SchemaManager"
>
-
+
Provide an *initial* schema manager for zope.
-
+
We can use a factory here, because the generation is 0.
-
+
When we get to generation 1, we'll have to actually create
a manager instance with the necessary parameters and a package of
evolution scripts.
</utility>
-->
-
- <include package=".browser" />
<!-- Registering documentation with API doc -->
<configure
Modified: zope.generations/trunk/src/zope/generations/demo/evolve1.py
===================================================================
--- zope.generations/trunk/src/zope/generations/demo/evolve1.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/demo/evolve1.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -19,8 +19,8 @@
generation = 1
-import zope.app.generations.demo
+import zope.generations.demo
def evolve(context):
"""Evolver 1"""
- zope.app.generations.demo.evolve(context, generation)
+ zope.generations.demo.evolve(context, generation)
Modified: zope.generations/trunk/src/zope/generations/demo/evolve2.py
===================================================================
--- zope.generations/trunk/src/zope/generations/demo/evolve2.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/demo/evolve2.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -19,8 +19,8 @@
generation = 2
-import zope.app.generations.demo
+import zope.generations.demo
def evolve(context):
"""Evolver 2"""
- zope.app.generations.demo.evolve(context, generation)
+ zope.generations.demo.evolve(context, generation)
Modified: zope.generations/trunk/src/zope/generations/demo/evolve3.py
===================================================================
--- zope.generations/trunk/src/zope/generations/demo/evolve3.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/demo/evolve3.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -19,7 +19,7 @@
generation = 3
-import zope.app.generations.demo
+import zope.generations.demo
def evolve(context):
- zope.app.generations.demo.evolve(context, generation)
+ zope.generations.demo.evolve(context, generation)
Modified: zope.generations/trunk/src/zope/generations/demo/install.py
===================================================================
--- zope.generations/trunk/src/zope/generations/demo/install.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/demo/install.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -19,7 +19,7 @@
generation = 3
-import zope.app.generations.demo
+import zope.generations.demo
def evolve(context):
- zope.app.generations.demo.evolve(context, 'installed')
+ zope.generations.demo.evolve(context, 'installed')
Modified: zope.generations/trunk/src/zope/generations/demo3/__init__.py
===================================================================
--- zope.generations/trunk/src/zope/generations/demo3/__init__.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/demo3/__init__.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -13,5 +13,5 @@
##############################################################################
"""Demo package for evolution scripts (3)"""
-key = 'zope.app.generations.demo-generation'
+key = 'zope.generations.demo-generation'
Modified: zope.generations/trunk/src/zope/generations/demo3/install.py
===================================================================
--- zope.generations/trunk/src/zope/generations/demo3/install.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/demo3/install.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -19,7 +19,7 @@
generation = 3
-import zope.app.generations.demo
+import zope.generations.demo
import zope.nonexistingmodule
Deleted: zope.generations/trunk/src/zope/generations/ftesting.zcml
===================================================================
--- zope.generations/trunk/src/zope/generations/ftesting.zcml 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/ftesting.zcml 2010-09-18 09:30:17 UTC (rev 116553)
@@ -1,32 +0,0 @@
-<configure
- xmlns="http://namespaces.zope.org/zope"
- i18n_domain="zope"
- package="zope.app.generations"
- >
-
- <!-- This file is the equivalent of site.zcml and it is -->
- <!-- used for functional testing setup -->
-
- <include package="zope.securitypolicy" file="meta.zcml" />
-
- <include package="zope.app.zcmlfiles" />
- <include package="zope.app.authentication" />
- <include package="zope.securitypolicy" />
- <include package="zope.login" />
-
- <securityPolicy
- component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
-
- <role id="zope.Manager" title="Site Manager" />
-
- <grantAll role="zope.Manager" />
-
- <principal
- id="zope.globalmgr"
- title="Manager"
- login="globalmgr"
- password="globalmgrpw" />
-
- <grant role="zope.Manager" principal="zope.globalmgr" />
-
-</configure>
Modified: zope.generations/trunk/src/zope/generations/generations.py
===================================================================
--- zope.generations/trunk/src/zope/generations/generations.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/generations.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -28,10 +28,10 @@
from interfaces import ISchemaManager, IInstallableSchemaManager
-logger = logging.getLogger('zope.app.generations')
-generations_key = 'zope.app.generations'
+logger = logging.getLogger('zope.generations')
+old_generations_key = 'zope.app.generations'
+generations_key = 'zope.generations'
-
class SchemaManager(object):
"""Schema manager
@@ -48,7 +48,7 @@
So, if we'll create a SchemaManager:
- >>> manager = SchemaManager(1, 3, 'zope.app.generations.demo')
+ >>> manager = SchemaManager(1, 3, 'zope.generations.demo')
and we'll create a test database and context:
@@ -59,13 +59,14 @@
Then we'll evolve the database from generation 1 to 3:
+ >>> import transaction
>>> manager.evolve(context, 2)
>>> manager.evolve(context, 3)
>>> transaction.commit()
The demo evolvers simply record their data in a root key:
- >>> from zope.app.generations.demo import key
+ >>> from zope.generations.demo import key
>>> conn = db.open()
>>> conn.root()[key]
(2, 3)
@@ -98,12 +99,12 @@
If there is not install script, the manager will do nothing on
an install:
- >>> manager = SchemaManager(1, 3, 'zope.app.generations.demo2')
+ >>> manager = SchemaManager(1, 3, 'zope.generations.demo2')
>>> manager.install(context)
We handle ImportErrors within the script specially, so they get promoted:
- >>> manager = SchemaManager(1, 3, 'zope.app.generations.demo3')
+ >>> manager = SchemaManager(1, 3, 'zope.generations.demo3')
>>> manager.install(context)
Traceback (most recent call last):
ImportError: No module named nonexistingmodule
@@ -191,7 +192,7 @@
We evolve a database using registered application schema managers.
Here's an example (silly) schema manager:
- >>> from zope.app.generations.interfaces import ISchemaManager
+ >>> from zope.generations.interfaces import ISchemaManager
>>> class FauxApp(object):
... zope.interface.implements(ISchemaManager)
...
@@ -211,7 +212,7 @@
logging handler:
>>> from zope.testing import loggingsupport
- >>> loghandler = loggingsupport.InstalledHandler('zope.app.generations')
+ >>> loghandler = loggingsupport.InstalledHandler('zope.generations')
>>> def print_log():
... print loghandler
... loghandler.clear()
@@ -219,16 +220,16 @@
We also need to set up the component system, since we'll be
registering utilities:
- >>> from zope.app.testing.placelesssetup import setUp, tearDown
+ >>> from zope.component.testing import setUp, tearDown
>>> setUp()
Now, we'll create and register some handlers:
- >>> from zope.app.testing import ztapi
+ >>> import zope.component
>>> app1 = FauxApp('app1', 0, 1)
- >>> ztapi.provideUtility(ISchemaManager, app1, name='app1')
+ >>> zope.component.provideUtility(app1, ISchemaManager, name='app1')
>>> app2 = FauxApp('app2', 5, 11)
- >>> ztapi.provideUtility(ISchemaManager, app2, name='app2')
+ >>> zope.component.provideUtility(app2, ISchemaManager, name='app2')
If we create a new database, and evolve it, we'll simply update
the generation data:
@@ -245,7 +246,7 @@
11
>>> print_log()
- zope.app.generations INFO
+ zope.generations INFO
testdb: evolving in mode EVOLVE
But nothing will have been done to the database:
@@ -259,13 +260,13 @@
>>> evolve(db)
>>> print_log()
- zope.app.generations INFO
+ zope.generations INFO
testdb: evolving in mode EVOLVE
- zope.app.generations INFO
+ zope.generations INFO
testdb/app1: currently at generation 1, targetting generation 2
- zope.app.generations DEBUG
+ zope.generations DEBUG
testdb/app1: evolving to generation 2
- zope.app.generations DEBUG
+ zope.generations DEBUG
testdb/app2: up-to-date at generation 11
We'll see that the generation data has updated:
@@ -291,17 +292,17 @@
>>> evolve(db)
>>> print_log()
- zope.app.generations INFO
+ zope.generations INFO
testdb: evolving in mode EVOLVE
- zope.app.generations INFO
+ zope.generations INFO
testdb/app1: currently at generation 2, targetting generation 7
- zope.app.generations DEBUG
+ zope.generations DEBUG
testdb/app1: evolving to generation 3
- zope.app.generations DEBUG
+ zope.generations DEBUG
testdb/app1: evolving to generation 4
- zope.app.generations ERROR
+ zope.generations ERROR
testdb/app1: failed to evolve to generation 4
- zope.app.generations DEBUG
+ zope.generations DEBUG
testdb/app2: up-to-date at generation 11
The database will have been updated for previous generations:
@@ -327,13 +328,13 @@
We'll also get a log entry:
>>> print_log()
- zope.app.generations INFO
+ zope.generations INFO
testdb: evolving in mode EVOLVE
- zope.app.generations INFO
+ zope.generations INFO
testdb/app1: currently at generation 3, targetting generation 7
- zope.app.generations DEBUG
+ zope.generations DEBUG
testdb/app1: evolving to generation 4
- zope.app.generations ERROR
+ zope.generations ERROR
testdb/app1: failed to evolve to generation 4
So far, we've used evolve in its default policy, in which we evolve
@@ -358,9 +359,9 @@
GenerationTooLow: (3, u'app1', 4)
>>> print_log()
- zope.app.generations INFO
+ zope.generations INFO
testdb: evolving in mode EVOLVENOT
- zope.app.generations ERROR
+ zope.generations ERROR
testdb/app1: current generation too low (3 < 4) but mode is EVOLVENOT
We got an error because we aren't at the minimum generation for
@@ -384,13 +385,13 @@
4
>>> print_log()
- zope.app.generations INFO
+ zope.generations INFO
testdb: evolving in mode EVOLVEMINIMUM
- zope.app.generations INFO
+ zope.generations INFO
testdb/app1: currently at generation 3, targetting generation 4
- zope.app.generations DEBUG
+ zope.generations DEBUG
testdb/app1: evolving to generation 4
- zope.app.generations DEBUG
+ zope.generations DEBUG
testdb/app2: up-to-date at generation 11
If we happen to install an app that has a generation that is less
@@ -406,9 +407,9 @@
GenerationTooHigh: (4, u'app1', 2)
>>> print_log()
- zope.app.generations INFO
+ zope.generations INFO
testdb: evolving in mode EVOLVE
- zope.app.generations ERROR
+ zope.generations ERROR
testdb/app1: current generation too high (4 > 2)
We'd better clean up:
@@ -427,7 +428,7 @@
context = Context()
context.connection = conn
root = conn.root()
- generations = root.get(generations_key)
+ generations = root.get(generations_key) #, root.get(old_generations_key))
if generations is None:
generations = root[generations_key] = PersistentDict()
transaction.commit()
Deleted: zope.generations/trunk/src/zope/generations/testing.py
===================================================================
--- zope.generations/trunk/src/zope/generations/testing.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/testing.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -1,26 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2007 Zope Corporation 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.
-#
-##############################################################################
-"""zope.app.generations common test related classes/functions/objects.
-
-$Id$
-"""
-
-__docformat__ = "reStructuredText"
-
-import os
-from zope.app.testing.functional import ZCMLLayer
-
-GenerationsLayer = ZCMLLayer(
- os.path.join(os.path.split(__file__)[0], 'ftesting.zcml'),
- __name__, 'GenerationsLayer', allow_teardown=True)
Property changes on: zope.generations/trunk/src/zope/generations/tests/__init__.py
___________________________________________________________________
Added: svn:keywords
+ Id Rev Date
Added: svn:eol-style
+ native
Copied: zope.generations/trunk/src/zope/generations/tests/test_generations.py (from rev 116549, zope.generations/trunk/src/zope/generations/tests.py)
===================================================================
--- zope.generations/trunk/src/zope/generations/tests/test_generations.py (rev 0)
+++ zope.generations/trunk/src/zope/generations/tests/test_generations.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -0,0 +1,36 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation 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.
+#
+##############################################################################
+"""Schema-generation tests."""
+
+import zope.component.testing
+import doctest
+import unittest
+
+
+def tearDownREADME(test):
+ zope.component.testing.tearDown(test)
+ test.globs['db'].close()
+
+
+def test_suite():
+ return unittest.TestSuite((
+ doctest.DocFileSuite(
+ 'README.txt',
+ setUp=zope.component.testing.setUp,
+ tearDown=tearDownREADME,
+ package='zope.generations',
+ ),
+ doctest.DocTestSuite('zope.generations.generations'),
+ doctest.DocTestSuite('zope.generations.utility'),
+ ))
Copied: zope.generations/trunk/src/zope/generations/tests/test_zcml.py (from rev 116348, zope.dublincore/trunk/src/zope/dublincore/tests/test_zcml.py)
===================================================================
--- zope.generations/trunk/src/zope/generations/tests/test_zcml.py (rev 0)
+++ zope.generations/trunk/src/zope/generations/tests/test_zcml.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -0,0 +1,29 @@
+##############################################################################
+#
+# Copyright (c) 2010 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.
+#
+##############################################################################
+""" Tests that ZCML can be loaded.
+"""
+import unittest
+
+class ZCMLTests(unittest.TestCase):
+
+ from zope.component.testing import setUp
+ from zope.component.testing import tearDown
+
+ def test_loadable(self):
+ # N.B.: this test deliberately avoids any "ftesting" / layers
+ # support: its purpose is to ensure that the package's
+ # ZCML file is loadable *without* loading any other ZCML.
+ from zope.configuration.xmlconfig import file
+ import zope.generations
+ return file('configure.zcml', package=zope.generations)
Deleted: zope.generations/trunk/src/zope/generations/tests.py
===================================================================
--- zope.generations/trunk/src/zope/generations/tests.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/tests.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -1,37 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation 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.
-#
-##############################################################################
-"""Schema-generation tests
-
-$Id$
-"""
-
-from zope.app.testing import placelesssetup
-import doctest
-import unittest
-
-
-def tearDownREADME(test):
- placelesssetup.tearDown(test)
- test.globs['db'].close()
-
-
-def test_suite():
- return unittest.TestSuite((
- doctest.DocFileSuite(
- 'README.txt',
- setUp=placelesssetup.setUp, tearDown=tearDownREADME,
- ),
- doctest.DocTestSuite('zope.app.generations.generations'),
- doctest.DocTestSuite('zope.app.generations.utility'),
- ))
Modified: zope.generations/trunk/src/zope/generations/utility.py
===================================================================
--- zope.generations/trunk/src/zope/generations/utility.py 2010-09-18 08:50:14 UTC (rev 116552)
+++ zope.generations/trunk/src/zope/generations/utility.py 2010-09-18 09:30:17 UTC (rev 116553)
@@ -17,9 +17,7 @@
"""
__docformat__ = "reStructuredText"
-import zope.app.publication.zopepublication
-
def findObjectsMatching(root, condition):
"""Find all objects in the root that match the condition.
@@ -128,37 +126,41 @@
for match in findObjectsMatching(root, interface.providedBy):
yield match
+try:
+ import zope.app.publication.zopepublication
+except:
+ pass
+else:
+ def getRootFolder(context):
+ """Get the root folder of the ZODB.
-def getRootFolder(context):
- """Get the root folder of the ZODB.
+ We need some set up. Create a database:
- We need some set up. Create a database:
+ >>> from ZODB.tests.util import DB
+ >>> from zope.generations.generations import Context
+ >>> db = DB()
+ >>> context = Context()
+ >>> context.connection = db.open()
+ >>> root = context.connection.root()
- >>> from ZODB.tests.util import DB
- >>> from zope.app.generations.generations import Context
- >>> db = DB()
- >>> context = Context()
- >>> context.connection = db.open()
- >>> root = context.connection.root()
+ Add a root folder:
- Add a root folder:
+ >>> from zope.site.folder import rootFolder
+ >>> from zope.app.publication.zopepublication import ZopePublication
+ >>> import transaction
+ >>> root[ZopePublication.root_name] = rootFolder()
+ >>> transaction.commit()
- >>> from zope.site.folder import rootFolder
- >>> from zope.app.publication.zopepublication import ZopePublication
- >>> import transaction
- >>> root[ZopePublication.root_name] = rootFolder()
- >>> transaction.commit()
+ Now we can get the root folder using the function:
- Now we can get the root folder using the function:
+ >>> getRootFolder(context) # doctest: +ELLIPSIS
+ <zope.site.folder.Folder object at ...>
- >>> getRootFolder(context) # doctest: +ELLIPSIS
- <zope.site.folder.Folder object at ...>
+ We'd better clean up:
- We'd better clean up:
+ >>> context.connection.close()
+ >>> db.close()
- >>> context.connection.close()
- >>> db.close()
-
- """
- return context.connection.root().get(
- zope.app.publication.zopepublication.ZopePublication.root_name, None)
+ """
+ return context.connection.root().get(
+ zope.app.publication.zopepublication.ZopePublication.root_name, None)
More information about the checkins
mailing list