Hello community,
here is the log from the commit of package python-zope.testrunner for
openSUSE:Factory checked in at 2020-08-01 12:28:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-zope.testrunner (Old)
and /work/SRC/openSUSE:Factory/.python-zope.testrunner.new.3592 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-zope.testrunner"
Sat Aug 1 12:28:43 2020 rev:13 rq:822035 version:5.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-zope.testrunner/python-zope.testrunner.changes
2019-11-22 10:20:13.817348467 +0100
+++
/work/SRC/openSUSE:Factory/.python-zope.testrunner.new.3592/python-zope.testrunner.changes
2020-08-01 12:28:59.598334087 +0200
@@ -1,0 +2,9 @@
+Tue Jul 21 08:53:11 UTC 2020 - Marketa Calabkova <[email protected]>
+
+- Update to 5.2
+ * Add support for Python 3.8.
+ * When a layer is run in a subprocess, read its stderr in a thread to avoid
+ a deadlock if its stderr output (containing failing and erroring test IDs)
+ overflows the capacity of a pipe
+
+-------------------------------------------------------------------
Old:
----
zope.testrunner-5.1.tar.gz
New:
----
zope.testrunner-5.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-zope.testrunner.spec ++++++
--- /var/tmp/diff_new_pack.ymqfrW/_old 2020-08-01 12:29:02.870337150 +0200
+++ /var/tmp/diff_new_pack.ymqfrW/_new 2020-08-01 12:29:02.874337154 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-zope.testrunner
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,7 @@
%bcond_with test
%endif
Name: python-zope.testrunner
-Version: 5.1
+Version: 5.2
Release: 0
Summary: Zope testrunner script
License: ZPL-2.1
++++++ zope.testrunner-5.1.tar.gz -> zope.testrunner-5.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.testrunner-5.1/.travis.yml
new/zope.testrunner-5.2/.travis.yml
--- old/zope.testrunner-5.1/.travis.yml 2019-10-19 11:47:21.000000000 +0200
+++ new/zope.testrunner-5.2/.travis.yml 2020-06-29 10:33:31.000000000 +0200
@@ -3,22 +3,10 @@
- 2.7
- 3.5
- 3.6
+ - 3.7
+ - 3.8
- pypy
- pypy3
-matrix:
- include:
- - python: "3.7"
- dist: xenial
- env: SUBUNIT=true
- - python: "3.7"
- dist: xenial
- env: SUBUNIT=false
- - python: "3.8-dev"
- dist: xenial
- env: SUBUNIT=true
- - python: "3.8-dev"
- dist: xenial
- env: SUBUNIT=false
env:
- SUBUNIT=true
- SUBUNIT=false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.testrunner-5.1/CHANGES.rst
new/zope.testrunner-5.2/CHANGES.rst
--- old/zope.testrunner-5.1/CHANGES.rst 2019-10-19 11:47:21.000000000 +0200
+++ new/zope.testrunner-5.2/CHANGES.rst 2020-06-29 10:33:31.000000000 +0200
@@ -2,6 +2,17 @@
zope.testrunner Changelog
===========================
+5.2 (2020-06-29)
+================
+
+- Add support for Python 3.8.
+
+- When a layer is run in a subprocess, read its stderr in a thread to avoid
+ a deadlock if its stderr output (containing failing and erroring test IDs)
+ overflows the capacity of a pipe (`#105
+ <https://github.com/zopefoundation/zope.testrunner/issues/105>`_).
+
+
5.1 (2019-10-19)
================
@@ -25,6 +36,7 @@
- Drop support for Python 3.4.
+
4.9.2 (2018-11-24)
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.testrunner-5.1/PKG-INFO
new/zope.testrunner-5.2/PKG-INFO
--- old/zope.testrunner-5.1/PKG-INFO 2019-10-19 11:47:21.000000000 +0200
+++ new/zope.testrunner-5.2/PKG-INFO 2020-06-29 10:33:32.112758000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: zope.testrunner
-Version: 5.1
+Version: 5.2
Summary: Zope testrunner script.
Home-page: https://github.com/zopefoundation/zope.testrunner
Author: Zope Foundation and Contributors
@@ -186,6 +186,17 @@
zope.testrunner Changelog
===========================
+ 5.2 (2020-06-29)
+ ================
+
+ - Add support for Python 3.8.
+
+ - When a layer is run in a subprocess, read its stderr in a thread to
avoid
+ a deadlock if its stderr output (containing failing and erroring
test IDs)
+ overflows the capacity of a pipe (`#105
+ <https://github.com/zopefoundation/zope.testrunner/issues/105>`_).
+
+
5.1 (2019-10-19)
================
@@ -209,6 +220,7 @@
- Drop support for Python 3.4.
+
4.9.2 (2018-11-24)
==================
@@ -608,11 +620,12 @@
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*
-Provides-Extra: test
-Provides-Extra: subunit
Provides-Extra: docs
+Provides-Extra: subunit
+Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.testrunner-5.1/appveyor.yml
new/zope.testrunner-5.2/appveyor.yml
--- old/zope.testrunner-5.1/appveyor.yml 2019-10-19 11:47:21.000000000
+0200
+++ new/zope.testrunner-5.2/appveyor.yml 2020-06-29 10:33:31.000000000
+0200
@@ -11,6 +11,8 @@
- python: 36-x64
- python: 37
- python: 37-x64
+ - python: 38
+ - python: 38-x64
- { python: 27, SUBUNIT: 1 }
- { python: 27-x64, SUBUNIT: 1 }
- { python: 35, SUBUNIT: 1 }
@@ -19,6 +21,8 @@
- { python: 36-x64, SUBUNIT: 1 }
- { python: 37, SUBUNIT: 1 }
- { python: 37-x64, SUBUNIT: 1 }
+ - { python: 38, SUBUNIT: 1 }
+ - { python: 38-x64, SUBUNIT: 1 }
install:
- "SET PATH=C:\\Python%PYTHON%;c:\\Python%PYTHON%\\scripts;%PATH%"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.testrunner-5.1/setup.py
new/zope.testrunner-5.2/setup.py
--- old/zope.testrunner-5.1/setup.py 2019-10-19 11:47:21.000000000 +0200
+++ new/zope.testrunner-5.2/setup.py 2020-06-29 10:33:31.000000000 +0200
@@ -21,7 +21,7 @@
from setuptools import setup
from setuptools.command.test import test
-version = '5.1'
+version = '5.2'
INSTALL_REQUIRES = [
'setuptools',
@@ -152,8 +152,9 @@
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
- 'Programming Language :: Python :: Implementation :: CPython',
- 'Programming Language :: Python :: Implementation :: PyPy',
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Software Development :: Testing",
],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.testrunner-5.1/src/zope/testrunner/runner.py
new/zope.testrunner-5.2/src/zope/testrunner/runner.py
--- old/zope.testrunner-5.1/src/zope/testrunner/runner.py 2019-10-19
11:47:21.000000000 +0200
+++ new/zope.testrunner-5.2/src/zope/testrunner/runner.py 2020-06-29
10:33:31.000000000 +0200
@@ -539,6 +539,17 @@
stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd,
close_fds=not sys.platform.startswith('win'))
+ def reader_thread(f, buf):
+ buf.append(f.read())
+
+ # Start reading stderr in a thread. This means we don't hang if the
+ # subprocess writes more to stderr than the pipe capacity.
+ stderr_buf = []
+ stderr_thread = threading.Thread(
+ target=reader_thread, args=(child.stderr, stderr_buf))
+ stderr_thread.daemon = True
+ stderr_thread.start()
+
while True:
try:
while True:
@@ -564,8 +575,9 @@
else:
break
- # Now stderr should be ready to read the whole thing.
- errlines = child.stderr.read().splitlines()
+ # Now we should be able to finish reading stderr.
+ stderr_thread.join()
+ errlines = stderr_buf[0].splitlines()
erriter = iter(errlines)
nfail = nerr = 0
for line in erriter:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.testrunner-5.1/src/zope/testrunner/tests/testrunner-ex/sampletests_many.py
new/zope.testrunner-5.2/src/zope/testrunner/tests/testrunner-ex/sampletests_many.py
---
old/zope.testrunner-5.1/src/zope/testrunner/tests/testrunner-ex/sampletests_many.py
1970-01-01 01:00:00.000000000 +0100
+++
new/zope.testrunner-5.2/src/zope/testrunner/tests/testrunner-ex/sampletests_many.py
2020-06-29 10:33:31.000000000 +0200
@@ -0,0 +1,75 @@
+##############################################################################
+#
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""A large number of sample tests."""
+
+import unittest
+
+
+class Layer1:
+ """A layer that can't be torn down."""
+
+ @classmethod
+ def setUp(self):
+ pass
+
+ @classmethod
+ def tearDown(self):
+ raise NotImplementedError
+
+
+class Layer2:
+
+ @classmethod
+ def setUp(self):
+ pass
+
+ @classmethod
+ def tearDown(self):
+ pass
+
+
+class TestNoTeardown(unittest.TestCase):
+
+ layer = Layer1
+
+ def test_something(self):
+ pass
+
+
+def make_TestMany():
+ attrs = {'layer': Layer2}
+ # Add enough failing test methods to make the concatenation of all their
+ # test IDs (formatted as "test_foo (sampletests_many.TestMany)")
+ # overflow the capacity of a pipe. This is system-dependent, but on
+ # Linux since 2.6.11 it defaults to 65536 bytes, so will overflow by the
+ # time we've written 874 of these test IDs. If the pipe capacity is
+ # much larger than that, then this test might be ineffective.
+ for i in range(1000):
+ attrs['test_some_very_long_test_name_with_padding_%03d' % i] = (
+ lambda self: self.fail())
+ return type('TestMany', (unittest.TestCase,), attrs)
+
+
+TestMany = make_TestMany()
+
+
+def test_suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestNoTeardown))
+ suite.addTest(unittest.makeSuite(TestMany))
+ return suite
+
+
+if __name__ == '__main__':
+ unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.testrunner-5.1/src/zope/testrunner/tests/testrunner-layers-ntd.rst
new/zope.testrunner-5.2/src/zope/testrunner/tests/testrunner-layers-ntd.rst
--- old/zope.testrunner-5.1/src/zope/testrunner/tests/testrunner-layers-ntd.rst
2019-10-19 11:47:21.000000000 +0200
+++ new/zope.testrunner-5.2/src/zope/testrunner/tests/testrunner-layers-ntd.rst
2020-06-29 10:33:31.000000000 +0200
@@ -268,4 +268,26 @@
>>> sys.stderr = real_stderr
+When a layer is run in a subprocess, the test IDs of any failures and errors it
+generates are passed to the parent process via the child's stderr. The parent
+reads these IDs in parallel with reading other output from the child, so this
+works even if there are enough failures to overflow the capacity of the stderr
+pipe.
+ >>> argv = [testrunner_script, '--tests-pattern', '^sampletests_many$']
+ >>> testrunner.run_internal(defaults, argv)
+ Running sampletests_many.Layer1 tests:
+ Set up sampletests_many.Layer1 in N.NNN seconds.
+ Ran 1 tests with 0 failures, 0 errors and 0 skipped in N.NNN seconds.
+ Running sampletests_many.Layer2 tests:
+ Tear down sampletests_many.Layer1 ... not supported
+ Running in a subprocess.
+ Set up sampletests_many.Layer2 in N.NNN seconds.
+ <BLANKLINE>
+ <BLANKLINE>
+ Failure in test test_some_very_long_test_name_with_padding_000
(sampletests_many.TestMany)
+ ...
+ Ran 1000 tests with 1000 failures, 0 errors and 0 skipped in N.NNN
seconds.
+ Tear down sampletests_many.Layer2 in N.NNN seconds.
+ Total: 1001 tests, 1000 failures, 0 errors and 0 skipped in N.NNN seconds.
+ True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.testrunner-5.1/src/zope.testrunner.egg-info/PKG-INFO
new/zope.testrunner-5.2/src/zope.testrunner.egg-info/PKG-INFO
--- old/zope.testrunner-5.1/src/zope.testrunner.egg-info/PKG-INFO
2019-10-19 11:47:21.000000000 +0200
+++ new/zope.testrunner-5.2/src/zope.testrunner.egg-info/PKG-INFO
2020-06-29 10:33:31.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: zope.testrunner
-Version: 5.1
+Version: 5.2
Summary: Zope testrunner script.
Home-page: https://github.com/zopefoundation/zope.testrunner
Author: Zope Foundation and Contributors
@@ -186,6 +186,17 @@
zope.testrunner Changelog
===========================
+ 5.2 (2020-06-29)
+ ================
+
+ - Add support for Python 3.8.
+
+ - When a layer is run in a subprocess, read its stderr in a thread to
avoid
+ a deadlock if its stderr output (containing failing and erroring
test IDs)
+ overflows the capacity of a pipe (`#105
+ <https://github.com/zopefoundation/zope.testrunner/issues/105>`_).
+
+
5.1 (2019-10-19)
================
@@ -209,6 +220,7 @@
- Drop support for Python 3.4.
+
4.9.2 (2018-11-24)
==================
@@ -608,11 +620,12 @@
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*
-Provides-Extra: test
-Provides-Extra: subunit
Provides-Extra: docs
+Provides-Extra: subunit
+Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.testrunner-5.1/src/zope.testrunner.egg-info/SOURCES.txt
new/zope.testrunner-5.2/src/zope.testrunner.egg-info/SOURCES.txt
--- old/zope.testrunner-5.1/src/zope.testrunner.egg-info/SOURCES.txt
2019-10-19 11:47:21.000000000 +0200
+++ new/zope.testrunner-5.2/src/zope.testrunner.egg-info/SOURCES.txt
2020-06-29 10:33:31.000000000 +0200
@@ -141,6 +141,7 @@
src/zope/testrunner/tests/testrunner-ex/samplelayers.py
src/zope/testrunner/tests/testrunner-ex/sampletests.rst
src/zope/testrunner/tests/testrunner-ex/sampletests_buffering.py
+src/zope/testrunner/tests/testrunner-ex/sampletests_many.py
src/zope/testrunner/tests/testrunner-ex/sampletestsf.py
src/zope/testrunner/tests/testrunner-ex/sampletestsl.rst
src/zope/testrunner/tests/testrunner-ex/unicode.py