/usr/share/pyshared/zope/app/testing/setup.py is in python-zope.app.testing 3.10.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | ##############################################################################
#
# Copyright (c) 2003 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.
#
##############################################################################
"""Setting up an environment for testing context-dependent objects
$Id: setup.py 110724 2010-04-11 00:04:11Z tseaver $
"""
import zope.component
import zope.traversing.api
#------------------------------------------------------------------------
# Annotations
from zope.annotation.attribute import AttributeAnnotations
def setUpAnnotations():
zope.component.provideAdapter(AttributeAnnotations)
#------------------------------------------------------------------------
# Dependencies
from zope.annotation.interfaces import IAttributeAnnotatable
from zope.app.dependable import Dependable
from zope.app.dependable.interfaces import IDependable
def setUpDependable():
zope.component.provideAdapter(Dependable, (IAttributeAnnotatable,),
IDependable)
#------------------------------------------------------------------------
# Traversal
from zope.traversing.interfaces import ITraversable
from zope.container.interfaces import ISimpleReadContainer
from zope.container.traversal import ContainerTraversable
def setUpTraversal():
from zope.traversing.testing import setUp
setUp()
zope.component.provideAdapter(ContainerTraversable,
(ISimpleReadContainer,), ITraversable)
#------------------------------------------------------------------------
# ISiteManager lookup
from zope.site.site import SiteManagerAdapter
from zope.component.interfaces import IComponentLookup
from zope.interface import Interface
def setUpSiteManagerLookup():
zope.component.provideAdapter(SiteManagerAdapter, (Interface,),
IComponentLookup)
#------------------------------------------------------------------------
# Placeful setup
import zope.component.hooks
from zope.app.testing.placelesssetup import setUp as placelessSetUp
from zope.app.testing.placelesssetup import tearDown as placelessTearDown
def placefulSetUp(site=False):
placelessSetUp()
zope.component.hooks.setHooks()
setUpAnnotations()
setUpDependable()
setUpTraversal()
setUpSiteManagerLookup()
if site:
site = rootFolder()
createSiteManager(site, setsite=True)
return site
def placefulTearDown():
placelessTearDown()
zope.component.hooks.resetHooks()
zope.component.hooks.setSite()
#------------------------------------------------------------------------
# Sample Folder Creation
from zope.site.folder import Folder, rootFolder
def buildSampleFolderTree():
# set up a reasonably complex folder structure
#
# ____________ rootFolder ______________________________
# / \ \
# folder1 __________________ folder2 folder3
# | \ | |
# folder1_1 ____ folder1_2 folder2_1 folder3_1
# | \ | |
# folder1_1_1 folder1_1_2 folder1_2_1 folder2_1_1
root = rootFolder()
root[u'folder1'] = Folder()
root[u'folder1'][u'folder1_1'] = Folder()
root[u'folder1'][u'folder1_1'][u'folder1_1_1'] = Folder()
root[u'folder1'][u'folder1_1'][u'folder1_1_2'] = Folder()
root[u'folder1'][u'folder1_2'] = Folder()
root[u'folder1'][u'folder1_2'][u'folder1_2_1'] = Folder()
root[u'folder2'] = Folder()
root[u'folder2'][u'folder2_1'] = Folder()
root[u'folder2'][u'folder2_1'][u'folder2_1_1'] = Folder()
root[u"\N{CYRILLIC SMALL LETTER PE}"
u"\N{CYRILLIC SMALL LETTER A}"
u"\N{CYRILLIC SMALL LETTER PE}"
u"\N{CYRILLIC SMALL LETTER KA}"
u"\N{CYRILLIC SMALL LETTER A}3"] = Folder()
root[u"\N{CYRILLIC SMALL LETTER PE}"
u"\N{CYRILLIC SMALL LETTER A}"
u"\N{CYRILLIC SMALL LETTER PE}"
u"\N{CYRILLIC SMALL LETTER KA}"
u"\N{CYRILLIC SMALL LETTER A}3"][
u"\N{CYRILLIC SMALL LETTER PE}"
u"\N{CYRILLIC SMALL LETTER A}"
u"\N{CYRILLIC SMALL LETTER PE}"
u"\N{CYRILLIC SMALL LETTER KA}"
u"\N{CYRILLIC SMALL LETTER A}3_1"] = Folder()
return root
#------------------------------------------------------------------------
# Sample Folder Creation
from zope.site.site import LocalSiteManager
import zope.component.interfaces
def createSiteManager(folder, setsite=False):
if not zope.component.interfaces.ISite.providedBy(folder):
folder.setSiteManager(LocalSiteManager(folder))
if setsite:
zope.component.hooks.setSite(folder)
return zope.traversing.api.traverse(folder, "++etc++site")
#------------------------------------------------------------------------
# Local Utility Addition
def addUtility(sitemanager, name, iface, utility, suffix=''):
"""Add a utility to a site manager
This helper function is useful for tests that need to set up utilities.
"""
folder_name = (name or (iface.__name__ + 'Utility')) + suffix
default = sitemanager['default']
default[folder_name] = utility
utility = default[folder_name]
sitemanager.registerUtility(utility, iface, name)
return utility
#------------------------------------------------------------------------
# Setup of test text files as modules
import sys
# Evil hack to make pickling work with classes defined in doc tests
class NoCopyDict(dict):
def copy(self):
return self
class FakeModule:
"""A fake module."""
def __init__(self, dict):
self.__dict = dict
def __getattr__(self, name):
try:
return self.__dict[name]
except KeyError:
raise AttributeError(name)
def setUpTestAsModule(test, name=None):
if name is None:
if test.globs.has_key('__name__'):
name = test.globs['__name__']
else:
name = test.globs.name
test.globs['__name__'] = name
test.globs = NoCopyDict(test.globs)
sys.modules[name] = FakeModule(test.globs)
def tearDownTestAsModule(test):
del sys.modules[test.globs['__name__']]
test.globs.clear()
|