[Checkins] SVN: zope.testing/branches/Zope-3.3/src/zope/testing/testrunner Ported to windows bug fixes from trunk. Both were related to the fact

Jim Fulton jim at zope.com
Fri Aug 18 15:34:47 EDT 2006


Log message for revision 69670:
  Ported to windows bug fixes from trunk.  Both were related to the fact
  that windows drive letters can be lower case and that wasn't taken
  into account.
  

Changed:
  A   zope.testing/branches/Zope-3.3/src/zope/testing/testrunner-coverage-win32.txt
  U   zope.testing/branches/Zope-3.3/src/zope/testing/testrunner.py

-=-
Copied: zope.testing/branches/Zope-3.3/src/zope/testing/testrunner-coverage-win32.txt (from rev 69364, zope.testing/trunk/src/zope/testing/testrunner-coverage-win32.txt)

Modified: zope.testing/branches/Zope-3.3/src/zope/testing/testrunner.py
===================================================================
--- zope.testing/branches/Zope-3.3/src/zope/testing/testrunner.py	2006-08-18 19:24:08 UTC (rev 69669)
+++ zope.testing/branches/Zope-3.3/src/zope/testing/testrunner.py	2006-08-18 19:34:47 UTC (rev 69670)
@@ -48,7 +48,7 @@
 class TestIgnore:
 
     def __init__(self, options):
-        self._test_dirs = [os.path.abspath(d[0]) + os.path.sep
+        self._test_dirs = [self._filenameFormat(d[0]) + os.path.sep
                            for d in test_dirs(options, {})]
         self._ignore = {}
         self._ignored = self._ignore.get
@@ -57,7 +57,7 @@
         # Special case: Modules generated from text files; i.e. doctests
         if modulename == '<string>':
             return True
-        filename = os.path.abspath(filename)
+        filename = self._filenameFormat(filename)
         ignore = self._ignored(filename)
         if ignore is None:
             ignore = True
@@ -68,7 +68,22 @@
                         break
             self._ignore[filename] = ignore
         return ignore
+    
+    def _filenameFormat(self, filename):
+        return os.path.abspath(filename)
 
+if sys.platform == 'win32':
+    #on win32 drive name can be passed with different case to `names`
+    #that lets e.g. the coverage profiler skip complete files
+    #_filenameFormat will make sure that all drive and filenames get lowercased
+    #albeit trace coverage has still problems with lowercase drive letters
+    #when determining the dotted module name
+    OldTestIgnore = TestIgnore
+    
+    class TestIgnore(OldTestIgnore):
+        def _filenameFormat(self, filename):
+            return os.path.normcase(os.path.abspath(filename))
+
 class TestTrace(trace.Trace):
     """Simple tracer.
 
@@ -1764,7 +1779,7 @@
                     r'exceptions.\1Error:'),
 
         (re.compile('^> [^\n]+->None$', re.M), '> ...->None'),
-        (re.compile("'[A-Z]:\\\\"), "'"), # hopefully, we'll make Windows happy
+        (re.compile("'[A-Za-z]:\\\\"), "'"), # hopefully, we'll make Windows happy
         (re.compile(r'\\\\'), '/'), # more Windows happiness
         (re.compile(r'\\'), '/'), # even more Windows happiness
        (re.compile('/r'), '\\\\r'), # undo damage from previous
@@ -1826,7 +1841,15 @@
         checker=checker),
         doctest.DocTestSuite()
         ]
-
+    
+    if sys.platform == 'win32':
+        suites.append(
+            doctest.DocFileSuite(
+            'testrunner-coverage-win32.txt',
+            setUp=setUp, tearDown=tearDown,
+            optionflags=doctest.ELLIPSIS+doctest.NORMALIZE_WHITESPACE,
+            checker=checker))
+    
     # Python <= 2.4.1 had a bug that prevented hotshot from running in
     # non-optimize mode
     if sys.version_info[:3] > (2,4,1) or not __debug__:



More information about the Checkins mailing list