[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - store debug mode behavior in 'use_dir_mtime' property instead of hardcoding 'win32' in several places
Yvo Schubbe
y.2011 at wcm-solutions.de
Mon Feb 7 04:31:56 EST 2011
Log message for revision 120174:
- store debug mode behavior in 'use_dir_mtime' property instead of hardcoding 'win32' in several places
- adjusted tests
Changed:
U Products.CMFCore/trunk/Products/CMFCore/DirectoryView.py
U Products.CMFCore/trunk/Products/CMFCore/tests/base/testcase.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_DirectoryView.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_FSSecurity.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/DirectoryView.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/DirectoryView.py 2011-02-07 09:30:44 UTC (rev 120173)
+++ Products.CMFCore/trunk/Products/CMFCore/DirectoryView.py 2011-02-07 09:31:56 UTC (rev 120174)
@@ -104,6 +104,7 @@
class DirectoryInformation:
data = None
+ use_dir_mtime = True
_v_last_read = 0
_v_last_filelist = [] # Only used on Win32
@@ -112,6 +113,7 @@
self._reg_key = reg_key
self.ignore = base_ignore + tuple(ignore)
if platform == 'win32':
+ self.use_dir_mtime = False
self._walker = _walker(self.ignore)
subdirs = []
for entry in _filtered_listdir(self._filepath, ignore=self.ignore):
@@ -160,7 +162,7 @@
filelist = []
try:
mtime = os.stat(self._filepath).st_mtime
- if platform == 'win32':
+ if not self.use_dir_mtime:
# some Windows directories don't change mtime
# when a file is added to or deleted from them :-(
# So keep a list of files as well, and see if that
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/base/testcase.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/base/testcase.py 2011-02-07 09:30:44 UTC (rev 120173)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/base/testcase.py 2011-02-07 09:31:56 UTC (rev 120174)
@@ -166,11 +166,12 @@
# Base class for FSDV test, creates a fake skin
# copy that can be edited.
- def _writeFile(self, filename, stuff):
+ def _writeFile(self, filename, stuff, use_dir_mtime=False):
# write some stuff to a file on disk
# make sure the file's modification time has changed
# also make sure the skin folder mod time has changed
- dir_mtime = stat(self.skin_path_name).st_mtime
+ if use_dir_mtime:
+ dir_mtime = stat(self.skin_path_name).st_mtime
thePath = join(self.skin_path_name, filename)
try:
mtime1 = stat(thePath).st_mtime
@@ -182,21 +183,19 @@
f.write(stuff)
f.close()
mtime2 = stat(thePath).st_mtime
- self._addedOrRemoved(dir_mtime)
+ if use_dir_mtime:
+ self._addedOrRemoved(dir_mtime)
- def _deleteFile(self, filename):
- dir_mtime = stat(self.skin_path_name).st_mtime
+ def _deleteFile(self, filename, use_dir_mtime=False):
+ if use_dir_mtime:
+ dir_mtime = stat(self.skin_path_name).st_mtime
remove(join(self.skin_path_name, filename))
- self._addedOrRemoved(dir_mtime)
+ if use_dir_mtime:
+ self._addedOrRemoved(dir_mtime)
def _addedOrRemoved(self, old_mtime):
# Called after adding/removing a file from self.skin_path_name.
- if sys.platform == 'win32':
- # Windows doesn't reliably update directory mod times, so
- # DirectoryView has an expensive workaround. The
- # workaround does not rely on directory mod times.
- return
limit = time.time() + 60 # If it takes 60 seconds, give up.
new_mtime = stat(self.skin_path_name).st_mtime
while new_mtime == old_mtime:
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_DirectoryView.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_DirectoryView.py 2011-02-07 09:30:44 UTC (rev 120173)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_DirectoryView.py 2011-02-07 09:31:56 UTC (rev 120174)
@@ -233,6 +233,8 @@
class DebugModeTests(WritableFSDVTest):
def setUp( self ):
+ from Products.CMFCore.DirectoryView import _dirreg
+
WritableFSDVTest.setUp(self)
self.saved_cfg_debug_mode = getConfiguration().debug_mode
getConfiguration().debug_mode = True
@@ -252,6 +254,10 @@
# add a new folder
mkdir(self.test3path)
+ info = _dirreg.getDirectoryInfo(self.ob.fake_skin._dirpath)
+ info.reload()
+ self.use_dir_mtime = info.use_dir_mtime
+
def tearDown(self):
getConfiguration().debug_mode = self.saved_cfg_debug_mode
WritableFSDVTest.tearDown(self)
@@ -284,13 +290,15 @@
self.failIf(hasattr(self.ob.fake_skin,'test2'))
# add method back to the fake skin folder
- self._writeFile(self.test2path, "return 'test2.2'")
+ self._writeFile(self.test2path, "return 'test2.2'",
+ self.use_dir_mtime)
# check
self.assertEqual(self.ob.fake_skin.test2(),'test2.2')
# edit method
- self._writeFile(self.test2path, "return 'test2.3'")
+ self._writeFile(self.test2path, "return 'test2.3'",
+ self.use_dir_mtime)
# check
self.assertEqual(self.ob.fake_skin.test2(),'test2.3')
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_FSSecurity.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_FSSecurity.py 2011-02-07 09:30:44 UTC (rev 120173)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_FSSecurity.py 2011-02-07 09:31:56 UTC (rev 120174)
@@ -118,8 +118,12 @@
class DebugModeTests(WritableFSDVTest, MetadataChecker):
def setUp(self):
+ from Products.CMFCore.DirectoryView import _dirreg
+
WritableFSDVTest.setUp(self)
self._registerDirectory(self)
+ info = _dirreg.getDirectoryInfo(self.ob.fake_skin._dirpath)
+ self.use_dir_mtime = info.use_dir_mtime
self.saved_cfg_debug_mode = getConfiguration().debug_mode
getConfiguration().debug_mode = True
@@ -133,7 +137,8 @@
self._checkSettings(self.ob.fake_skin.test5, 'View', 1, [])
# add
self._writeFile('test5.py.metadata',
- '[security]\nView = 1:Manager')
+ '[security]\nView = 1:Manager',
+ self.use_dir_mtime)
# test
self._checkSettings(self.ob.fake_skin.test5, 'View', 1, ['Manager'])
@@ -143,7 +148,7 @@
self._checkSettings(self.ob.fake_skin.test4,
'View', 1, ['Manager', 'Owner'])
# delete
- self._deleteFile('test4.py.metadata')
+ self._deleteFile('test4.py.metadata', self.use_dir_mtime)
# test
self._checkSettings(self.ob.fake_skin.test4, 'View', 1, [])
@@ -154,7 +159,8 @@
'View', 1, ['Manager', 'Owner'])
# edit
self._writeFile('test4.py.metadata',
- '[security]\nView = 1:Manager')
+ '[security]\nView = 1:Manager',
+ self.use_dir_mtime)
# test
self._checkSettings(self.ob.fake_skin.test4, 'View', 1, ['Manager'])
@@ -164,16 +170,18 @@
self._checkSettings(self.ob.fake_skin.test4,
'View', 1, ['Manager', 'Owner'])
# delete
- self._deleteFile('test4.py.metadata')
+ self._deleteFile('test4.py.metadata', self.use_dir_mtime)
self._checkSettings(self.ob.fake_skin.test4, 'View', 1, [])
# add back
self._writeFile('test4.py.metadata',
- '[security]\nView = 0:Manager,Anonymous')
+ '[security]\nView = 0:Manager,Anonymous',
+ self.use_dir_mtime)
self._checkSettings(self.ob.fake_skin.test4,
'View', 0, ['Manager', 'Anonymous'])
# edit
self._writeFile('test4.py.metadata',
- '[security]\nView = 1:Manager')
+ '[security]\nView = 1:Manager',
+ self.use_dir_mtime)
# test
self._checkSettings(self.ob.fake_skin.test4, 'View', 1, ['Manager'])
More information about the checkins
mailing list