[Zope-Checkins] SVN: Zope/trunk/lib/python/App/ App.version_txt: avoid possible import cycle by deferring import of Zope2.

Tres Seaver tseaver at palladion.com
Mon Jan 5 11:40:13 EST 2009


Log message for revision 94537:
  App.version_txt:  avoid possible import cycle by deferring import of Zope2.
  
  o Also, weak "without_version_txt" test to use non-existing filename, rather
    than the (existing) Zope2 directory.
  
  

Changed:
  U   Zope/trunk/lib/python/App/tests/test_version_txt.py
  U   Zope/trunk/lib/python/App/version_txt.py

-=-
Modified: Zope/trunk/lib/python/App/tests/test_version_txt.py
===================================================================
--- Zope/trunk/lib/python/App/tests/test_version_txt.py	2009-01-05 14:52:15 UTC (rev 94536)
+++ Zope/trunk/lib/python/App/tests/test_version_txt.py	2009-01-05 16:40:13 UTC (rev 94537)
@@ -36,7 +36,7 @@
         version_txt._version_string = None
         version_txt._zope_version = None
 
-    def writeVersion(self, s):
+    def _writeVersion(self, s):
         import os
         import tempfile
         from App import version_txt 
@@ -46,19 +46,20 @@
         os.close(f)
 
     def test_without_version_txt(self):
+        import os
         from App import version_txt
-        from App.version_txt import getZopeVersion
-        version_txt._filename = ''
-        self.assertEqual(getZopeVersion(), (-1, -1, -1, '', -1))
+        version_txt._filename = 'NONESUCHFILESHOULDEXIST'
+        self.failIf(os.path.exists(version_txt._get_filename()))
+        self.assertEqual(version_txt.getZopeVersion(), (-1, -1, -1, '', -1))
 
     def test_with_version_txt_final(self):
         from App.version_txt import getZopeVersion
-        self.writeVersion("Zope 2.6.1 (source release, python 2.1, linux2)")
+        self._writeVersion("Zope 2.6.1 (source release, python 2.1, linux2)")
         self.assertEqual(getZopeVersion(), (2, 6, 1, '', -1))
 
     def test_with_version_txt_beta(self):
         from App.version_txt import getZopeVersion
-        self.writeVersion("Zope 2.6.1b2 (source release, python 2.1, linux2)")
+        self._writeVersion("Zope 2.6.1b2 (source release, python 2.1, linux2)")
         self.assertEqual(getZopeVersion(), (2, 6, 1, 'b', 2))
 
 

Modified: Zope/trunk/lib/python/App/version_txt.py
===================================================================
--- Zope/trunk/lib/python/App/version_txt.py	2009-01-05 14:52:15 UTC (rev 94536)
+++ Zope/trunk/lib/python/App/version_txt.py	2009-01-05 16:40:13 UTC (rev 94537)
@@ -17,9 +17,8 @@
 import os
 import re
 import sys
-import Zope2
 
-_location = os.path.dirname(Zope2.__file__)
+_location = None
 _filename = 'version.txt'
 
 _version_file = None
@@ -27,8 +26,12 @@
 _zope_version = None
 
 def _get_filename():
+    global _location
     if _version_file is not None:
         return _version_file
+    if _location is None:
+        import Zope2
+        _location = os.path.dirname(Zope2.__file__)
     return os.path.join(_location, _filename)
 
 def _prep_version_data():



More information about the Zope-Checkins mailing list