[Zope3-checkins] SVN: Zope3/trunk/src/zope/app/server/ Fix
collector #683: Globally installed "zope" package breaks
mkzopeinstance
Philipp von Weitershausen
philikon at philikon.de
Fri Aug 11 17:32:25 EDT 2006
Log message for revision 69412:
Fix collector #683: Globally installed "zope" package breaks mkzopeinstance
Changed:
U Zope3/trunk/src/zope/app/server/mkzopeinstance.py
U Zope3/trunk/src/zope/app/server/tests/test_mkzopeinstance.py
-=-
Modified: Zope3/trunk/src/zope/app/server/mkzopeinstance.py
===================================================================
--- Zope3/trunk/src/zope/app/server/mkzopeinstance.py 2006-08-11 17:19:59 UTC (rev 69411)
+++ Zope3/trunk/src/zope/app/server/mkzopeinstance.py 2006-08-11 21:32:24 UTC (rev 69412)
@@ -26,14 +26,11 @@
import os
import shutil
import sys
+from xml.sax.saxutils import quoteattr as xml_quoteattr
-from xml.sax.saxutils import quoteattr as xml_quoteattr
-
-import zope
-
+import zope.app.server
from zope.app.authentication import password
from zope.app.applicationcontrol import zopeversion
-import zope.app.server
def main(argv=None, from_checkout=False):
"""Top-level script function to create a new Zope instance."""
@@ -210,7 +207,7 @@
# TODO we should be able to compute the script
script = os.path.abspath(sys.argv[0])
zope_home = os.path.dirname(os.path.dirname(script))
- zope_init = os.path.abspath(zope.__file__)
+ zope_init = os.path.dirname(os.path.abspath(zope.app.__file__))
software_home = os.path.dirname(os.path.dirname(zope_init))
self.replacements = [
("<<USERNAME>>", options.username),
Modified: Zope3/trunk/src/zope/app/server/tests/test_mkzopeinstance.py
===================================================================
--- Zope3/trunk/src/zope/app/server/tests/test_mkzopeinstance.py 2006-08-11 17:19:59 UTC (rev 69411)
+++ Zope3/trunk/src/zope/app/server/tests/test_mkzopeinstance.py 2006-08-11 21:32:24 UTC (rev 69412)
@@ -354,7 +354,39 @@
self.failUnless(app.all_input_consumed())
self.failUnless(os.path.exists(os.path.join(self.instance, "etc")))
+ def test_zope_namespace_package_doesnt_affect_software_home(self):
+ # Make sure that a zope namespace package in a different
+ # location won't affect SOFTWARE_HOME
+ # let's mess with zope's __file__
+ import zope
+ old_path = zope.__file__
+ zope.__file__ = os.path.join(
+ *'and now for something completely different'.split())
+
+ # place a test file into the skeleton dir that'll be expanded
+ # to SOFTWARE_HOME by mkzopeinstance
+ f = file(os.path.join(self.skeleton, 'test.in'), 'w')
+ f.write('<<SOFTWARE_HOME>>')
+ f.close()
+
+ # run mkzopeinstance
+ options = self.createOptions()
+ options.destination = self.instance
+ app = ControlledInputApplication(options, [])
+ rc = app.process()
+
+ # check for the expected output: mkzopeinstance should take
+ # zope.app as an anchor for determining SOFTWARE_HOME
+ import zope.app
+ expected = os.path.dirname(os.path.dirname(
+ os.path.dirname(zope.app.__file__)))
+ self.assertEqual(file(os.path.join(self.instance, 'test')).read(),
+ expected)
+
+ # cleanup the fake 'zope' module
+ zope.__file__ = old_path
+
class ControlledInputApplication(mkzopeinstance.Application):
def __init__(self, options, input_lines):
More information about the Zope3-Checkins
mailing list