Skip to content

Commit

Permalink
Merge pull request #178 from zopefoundation/support-tempstorage-in-zo…
Browse files Browse the repository at this point in the history
…pe-conf

Keep supporting tempstorage in zope.conf, closes #150.
  • Loading branch information
Michael Howitz committed Sep 15, 2017
2 parents 68c739b + 95f01aa commit 53a68bb
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 19 deletions.
31 changes: 12 additions & 19 deletions src/OFS/tests/testAppInitializer.py
Expand Up @@ -12,15 +12,14 @@
#
##############################################################################

import io
import os
import shutil
import tempfile
import unittest

from App.config import getConfiguration, setConfiguration
from OFS.Application import Application, AppInitializer
import ZConfig
import Zope2.Startup
from Zope2.Startup.options import ZopeWSGIOptions

TEMPNAME = tempfile.mktemp()
TEMPPRODUCTS = os.path.join(TEMPNAME, "Products")
Expand All @@ -36,20 +35,14 @@
</zodb_db>
"""


def getSchema():
startup = os.path.dirname(os.path.realpath(Zope2.Startup.__file__))
schemafile = os.path.join(startup, 'wsgischema.xml')
return ZConfig.loadSchema(schemafile)
original_config = None


def getApp():
from App.ZApplication import ZApplicationWrapper
DB = getConfiguration().dbtab.getDatabase('/')
return ZApplicationWrapper(DB, 'Application', Application)()

original_config = None


class TestInitialization(unittest.TestCase):
""" Test the application initializer object """
Expand All @@ -58,16 +51,13 @@ def setUp(self):
global original_config
if original_config is None:
original_config = getConfiguration()
self.schema = getSchema()
os.makedirs(TEMPNAME)
os.makedirs(TEMPPRODUCTS)

def tearDown(self):
import App.config
del self.schema
App.config.setConfiguration(original_config)
os.rmdir(TEMPPRODUCTS)
os.rmdir(TEMPNAME)
shutil.rmtree(TEMPNAME)
import Products
Products.__path__ = [d for d in Products.__path__
if os.path.exists(d)]
Expand All @@ -76,11 +66,14 @@ def configure(self, text):
# We have to create a directory of our own since the existence
# of the directory is checked. This handles this in a
# platform-independent way.
schema = self.schema
sio = io.StringIO(text.replace(u"<<INSTANCE_HOME>>", TEMPNAME))
conf, handler = ZConfig.loadConfigFile(schema, sio)
self.assertEqual(conf.instancehome, TEMPNAME)
setConfiguration(conf)
config_path = os.path.join(TEMPNAME, 'zope.conf')
with open(config_path, 'w') as fd:
fd.write(text.replace(u"<<INSTANCE_HOME>>", TEMPNAME))

options = ZopeWSGIOptions(config_path)()
config = options.configroot
self.assertEqual(config.instancehome, TEMPNAME)
setConfiguration(config)

def getOne(self):
app = getApp()
Expand Down
1 change: 1 addition & 0 deletions src/Zope2/Startup/wsgischema.xml
Expand Up @@ -5,6 +5,7 @@
<!-- type definitions -->

<import package="ZODB"/>
<import package="tempstorage" condition="tempstorage"/>

<sectiontype name="environment"
datatype=".environment"
Expand Down

0 comments on commit 53a68bb

Please sign in to comment.