SVN: zope.testing/trunk/ Fix #251759: Test runner descended into directories that aren't Python

Christian Theune <[email protected]>
Newsgroups gmane.comp.web.zope.zope3.cvs
Message-ID <20090704102350.F2BC2941BD__37699.1503326737$1246703041$gmane$org@cvs.zope.org>
Log message for revision 101495:
  Fix #251759: Test runner descended into directories that aren't Python
  packages.
  

Changed:
  U   zope.testing/trunk/CHANGES.txt
  U   zope.testing/trunk/src/zope/testing/testrunner/find.py
  U   zope.testing/trunk/src/zope/testing/testrunner/testrunner-edge-cases.txt
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/foo/
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/foo/__init__.py
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/foo/bar/
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/foo/bar/__init__.py
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/foo/bar/tests.py
  A   zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/test.py

-=-
Modified: zope.testing/trunk/CHANGES.txt
===================================================================
--- zope.testing/trunk/CHANGES.txt	2009-07-04 10:23:22 UTC (rev 101494)
+++ zope.testing/trunk/CHANGES.txt	2009-07-04 10:23:50 UTC (rev 101495)
@@ -4,6 +4,9 @@
 3.7.7 (unreleased)
 ==================
 
+- Fix #251759: Test runner descended into directories that aren't Python
+  packages.
+
 - Code cleanups.
 
 

Modified: zope.testing/trunk/src/zope/testing/testrunner/find.py
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/find.py	2009-07-04 10:23:22 UTC (rev 101494)
+++ zope.testing/trunk/src/zope/testing/testrunner/find.py	2009-07-04 10:23:50 UTC (rev 101495)
@@ -204,7 +204,10 @@
     for (p, package) in test_dirs(options, {}):
         for dirname, dirs, files in walk_with_symlinks(options, p):
             if dirname != p and not contains_init_py(options, files):
-                continue    # not a plausible test directory
+                # This is not a plausible test directory. Avoid descending
+                # further.
+                del dirs[:]
+                continue
             root2ext = {}
             dirs[:] = filter(identifier, dirs)
             d = os.path.split(dirname)[1]

Modified: zope.testing/trunk/src/zope/testing/testrunner/testrunner-edge-cases.txt
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/testrunner-edge-cases.txt	2009-07-04 10:23:22 UTC (rev 101494)
+++ zope.testing/trunk/src/zope/testing/testrunner/testrunner-edge-cases.txt	2009-07-04 10:23:50 UTC (rev 101495)
@@ -50,9 +50,28 @@
     Total: 405 tests, 0 failures, 0 errors in N.NNN seconds.
     False
 
+Bug #251759: The test runner's protection against descending into non-package
+directories was ineffective, e.g. picking up tests from eggs that were stored
+close by:
+
+    >>> directory_with_tests = os.path.join(this_directory, 'testrunner-ex-251759')
+
+    >>> defaults = [
+    ...     '--test-path', directory_with_tests,
+    ...     ]
+    >>> testrunner.run_internal(defaults)
+    Total: 0 tests, 0 failures, 0 errors in 0.000 seconds.
+    False
+
+
 Debugging Edge Cases
 --------------------
 
+    >>> directory_with_tests = os.path.join(this_directory, 'testrunner-ex')
+    >>> defaults = [
+    ...     '--test-path', directory_with_tests,
+    ...     '--tests-pattern', '^sampletestsf?$',
+    ...     ]
     >>> class Input:
     ...     def __init__(self, src):
     ...         self.lines = src.split('\n')
@@ -483,3 +502,4 @@
             option.
     <BLANKLINE>
     True
+


Property changes on: zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/foo/__init__.py
___________________________________________________________________
Added: svn:eol-style
   + native


Property changes on: zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/foo/bar/__init__.py
___________________________________________________________________
Added: svn:eol-style
   + native


Property changes on: zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/foo/bar/tests.py
___________________________________________________________________
Added: svn:eol-style
   + native


Property changes on: zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex-251759/eggs/foo.bar-1.2-py2.5.egg/test.py
___________________________________________________________________
Added: svn:eol-style
   + native
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.