SVN: zope.testing/trunk/ - fix test failure on Python 2.4 because of slight difference in the way

Benji York <[email protected]>
Newsgroups gmane.comp.web.zope.zope3.cvs
Message-ID <[email protected]>
Log message for revision 99151:
  - fix test failure on Python 2.4 because of slight difference in the way
    coverage is reported (__init__ files with only a single comment line are now
    not reported)
  - fixed bug that caused the test runner to hang when running subprocesses (as a
    result Python 2.3 is no longer supported).
  - there is apparently a bug in Python 2.6 (related to
    http://bugs.python.org/issue1303673) that causes the profile tests to fail.
  - tests pass on Python 2.5
  - added explanitory notes to buildout.cfg about how to run the tests with
    multiple versions of Python
  - set trunk version to 3.7.2dev
  

Changed:
  U   zope.testing/trunk/CHANGES.txt
  U   zope.testing/trunk/buildout.cfg
  U   zope.testing/trunk/setup.py
  U   zope.testing/trunk/src/zope/testing/testrunner/runner.py
  U   zope.testing/trunk/src/zope/testing/testrunner/testrunner-coverage.txt
  U   zope.testing/trunk/src/zope/testing/testrunner/tests.py

-=-
Modified: zope.testing/trunk/CHANGES.txt
===================================================================
--- zope.testing/trunk/CHANGES.txt	2009-04-13 14:39:02 UTC (rev 99150)
+++ zope.testing/trunk/CHANGES.txt	2009-04-13 15:43:40 UTC (rev 99151)
@@ -1,12 +1,27 @@
 zope.testing Changelog
 **********************
 
+3.7.2 (2008-10-17)
+==================
+
+- fix test failure on Python 2.4 because of slight difference in the way
+  coverage is reported (__init__ files with only a single comment line are now
+  not reported)
+- fixed bug that caused the test runner to hang when running subprocesses (as a
+  result Python 2.3 is no longer supported).
+- there is apparently a bug in Python 2.6 (related to
+  http://bugs.python.org/issue1303673) that causes the profile tests to fail.
+- added explanitory notes to buildout.cfg about how to run the tests with
+  multiple versions of Python
+
+
 3.7.1 (2008-10-17)
 ==================
 
 - The setupstack temporary-directory support now properly handles
   read-only files by making them writable before removing them.
 
+
 3.7.0 (2008-09-22)
 ==================
 

Modified: zope.testing/trunk/buildout.cfg
===================================================================
--- zope.testing/trunk/buildout.cfg	2009-04-13 14:39:02 UTC (rev 99150)
+++ zope.testing/trunk/buildout.cfg	2009-04-13 15:43:40 UTC (rev 99151)
@@ -6,17 +6,29 @@
 recipe = zc.recipe.testrunner
 eggs = zope.testing
 
-[test23]
-python = python23
-recipe = zc.recipe.testrunner
-eggs = zope.testing
 
+# The [test2X] sections below are to make testing with various Python versions
+# easier.  You'll need entries in your default.cfg that point to the location
+# that your various versions of Python are installed.  Like so:
+#
+# [python2.4]
+# executable = /usr/local/bin/python2.4
+#
+# And then run "bin/buildout install test24 test25 test26" to build the
+# version-specific test scripts.  Once that's done you ran run "bin/test24"
+# (etc.).
+
 [test24]
-python = python24
+python = python2.4
 recipe = zc.recipe.testrunner
 eggs = zope.testing
 
 [test25]
-python = python25
+python = python2.5
 recipe = zc.recipe.testrunner
 eggs = zope.testing
+
+[test26]
+python = python2.6
+recipe = zc.recipe.testrunner
+eggs = zope.testing

Modified: zope.testing/trunk/setup.py
===================================================================
--- zope.testing/trunk/setup.py	2009-04-13 14:39:02 UTC (rev 99150)
+++ zope.testing/trunk/setup.py	2009-04-13 15:43:40 UTC (rev 99151)
@@ -79,7 +79,7 @@
 
 setup(
     name='zope.testing',
-    version='3.8.0dev',
+    version='3.7.2dev',
     url='http://pypi.python.org/pypi/zope.testing',
     license='ZPL 2.1',
     description='Zope testing framework, including the testrunner script.',

Modified: zope.testing/trunk/src/zope/testing/testrunner/runner.py
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/runner.py	2009-04-13 14:39:02 UTC (rev 99150)
+++ zope.testing/trunk/src/zope/testing/testrunner/runner.py	2009-04-13 15:43:40 UTC (rev 99151)
@@ -16,6 +16,12 @@
 $Id: __init__.py 86232 2008-05-03 15:09:33Z ctheune $
 """
 
+# unfortunately there is a zope.testing.testrunner.subprocess module that we
+# need to avoid; also, we want to support Python 2.4, which doesn't have
+# # from __future__ import absolute_import, so we use a hack instead
+import imp
+subprocess = imp.load_module('subprocess', *imp.find_module('subprocess'))
+
 import cStringIO
 import gc
 import glob
@@ -400,47 +406,30 @@
         for feature in features:
             feature.layer_setup(layer)
 
-        subin, subout, suberr = os.popen3(args)
-        while True:
-            try:
-                for line in subout:
-                    result.stdout.append(line)
-            except IOError, e:
-                if e.errno == errno.EINTR:
-                    # If the reading the subprocess input is interruped (as
-                    # be caused by recieving SIGCHLD), then retry.
-                    continue
-                options.output.error(
-                    "Error reading subprocess output for %s" % layer_name)
-                options.output.info(str(e))
-            else:
-                break
+        child = subprocess.Popen(args, shell=False, stdin=subprocess.PIPE,
+            stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
+        subout, suberr = child.communicate()
 
-        # The subprocess may have spewed any number of things to stderr, so
-        # we'll keep looking until we find the information we're looking for.
-        whole_suberr = ''
-        while True:
-            line = suberr.readline()
-            whole_suberr += line
-            if not line:
-                raise SubprocessError(
-                    'No subprocess summary found', repr(whole_suberr))
-
+        erriter = iter(suberr.splitlines())
+        for line in erriter:
             try:
                 result.num_ran, nfail, nerr = map(int, line.strip().split())
-                break
-            except KeyboardInterrupt:
-                raise
-            except:
+            except ValueError:
                 continue
+            else:
+                break
 
         while nfail > 0:
             nfail -= 1
-            failures.append((suberr.readline().strip(), None))
+            failures.append((erriter.next().strip(), None))
         while nerr > 0:
             nerr -= 1
-            errors.append((suberr.readline().strip(), None))
+            errors.append((erriter.next().strip(), None))
 
+
+#        result.stdout.extend(subout.splitlines())
+        result.stdout.append(subout)
+
     finally:
         result.done = True
 

Modified: zope.testing/trunk/src/zope/testing/testrunner/testrunner-coverage.txt
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/testrunner-coverage.txt	2009-04-13 14:39:02 UTC (rev 99150)
+++ zope.testing/trunk/src/zope/testing/testrunner/testrunner-coverage.txt	2009-04-13 15:43:40 UTC (rev 99151)
@@ -52,31 +52,7 @@
     Tearing down left over layers:
       Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
     lines   cov%   module   (path)
-        1   100%   sample1.__init__   (testrunner-ex/sample1/__init__.py)
-        1   100%   sample1.sample11.__init__   (testrunner-ex/sample1/sample11/__init__.py)
-       74    86%   sample1.sample11.sampletests   (testrunner-ex/sample1/sample11/sampletests.py)
-        1   100%   sample1.sample13.__init__   (testrunner-ex/sample1/sample13/__init__.py)
-       48   100%   sample1.sample13.sampletests   (testrunner-ex/sample1/sample13/sampletests.py)
-        1   100%   sample1.sampletests.__init__   (testrunner-ex/sample1/sampletests/__init__.py)
-       48   100%   sample1.sampletests.test1   (testrunner-ex/sample1/sampletests/test1.py)
-       74   100%   sample1.sampletests.test11   (testrunner-ex/sample1/sampletests/test11.py)
-       74   100%   sample1.sampletests.test111   (testrunner-ex/sample1/sampletests/test111.py)
-       74   100%   sample1.sampletests.test112   (testrunner-ex/sample1/sampletests/test112.py)
-       74   100%   sample1.sampletests.test12   (testrunner-ex/sample1/sampletests/test12.py)
-       74   100%   sample1.sampletests.test121   (testrunner-ex/sample1/sampletests/test121.py)
-       74   100%   sample1.sampletests.test122   (testrunner-ex/sample1/sampletests/test122.py)
-       48   100%   sample1.sampletests.test_one   (testrunner-ex/sample1/sampletests/test_one.py)
-       48   100%   sample1.sampletestsf   (testrunner-ex/sample1/sampletestsf.py)
-        1   100%   sample2.__init__   (testrunner-ex/sample2/__init__.py)
-        1   100%   sample2.sample21.__init__   (testrunner-ex/sample2/sample21/__init__.py)
-       48   100%   sample2.sample21.sampletests   (testrunner-ex/sample2/sample21/sampletests.py)
-        1   100%   sample2.sampletests.__init__   (testrunner-ex/sample2/sampletests/__init__.py)
-       48   100%   sample2.sampletests.test_1   (testrunner-ex/sample2/sampletests/test_1.py)
-       48   100%   sample2.sampletests.testone   (testrunner-ex/sample2/sampletests/testone.py)
-        1   100%   sample3.__init__   (testrunner-ex/sample3/__init__.py)
-       48   100%   sample3.sampletests   (testrunner-ex/sample3/sampletests.py)
-       84    85%   samplelayers   (testrunner-ex/samplelayers.py)
-        1   100%   sampletests.__init__   (testrunner-ex/sampletests/__init__.py)
+    ...
        48   100%   sampletests.test1   (testrunner-ex/sampletests/test1.py)
        74   100%   sampletests.test11   (testrunner-ex/sampletests/test11.py)
        74   100%   sampletests.test111   (testrunner-ex/sampletests/test111.py)

Modified: zope.testing/trunk/src/zope/testing/testrunner/tests.py
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/tests.py	2009-04-13 14:39:02 UTC (rev 99150)
+++ zope.testing/trunk/src/zope/testing/testrunner/tests.py	2009-04-13 15:43:40 UTC (rev 99151)
@@ -108,7 +108,8 @@
         optionflags=doctest.ELLIPSIS+doctest.NORMALIZE_WHITESPACE,
         checker=checker),
         doctest.DocTestSuite('zope.testing.testrunner'),
-        doctest.DocTestSuite('zope.testing.testrunner.coverage'),
+        doctest.DocTestSuite('zope.testing.testrunner.coverage',
+            optionflags=doctest.ELLIPSIS+doctest.NORMALIZE_WHITESPACE),
         doctest.DocTestSuite('zope.testing.testrunner.options'),
         doctest.DocTestSuite('zope.testing.testrunner.find'),
         ]
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.