Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-zope.testrunner for
openSUSE:Factory checked in at 2026-09-01 15:48:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-zope.testrunner (Old)
and /work/SRC/openSUSE:Factory/.python-zope.testrunner.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-zope.testrunner"
Tue Sep 1 15:48:39 2026 rev:32 rq:1374982 version:8.3
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-zope.testrunner/python-zope.testrunner.changes
2026-03-30 18:34:48.791872638 +0200
+++
/work/SRC/openSUSE:Factory/.python-zope.testrunner.new.1265/python-zope.testrunner.changes
2026-09-01 15:50:18.909856105 +0200
@@ -1,0 +2,12 @@
+Mon Aug 31 21:56:41 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 8.3:
+ * Move package metadata from setup.py to pyproject.toml.
+ * Add support for Python 3.15: Restore the pre-3.15 behavior of
+ reporting a doctest as a single test even if it contains
+ multiple examples. Python 3.15 changed doctest.DocTestCase
+ to report each example as a separate subtest
+ (python/cpython#108885), which broke zope.testrunner's
+ failure reporting.
+
+-------------------------------------------------------------------
Old:
----
zope_testrunner-8.2.tar.gz
New:
----
zope_testrunner-8.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-zope.testrunner.spec ++++++
--- /var/tmp/diff_new_pack.iiW7hk/_old 2026-09-01 15:50:19.618880841 +0200
+++ /var/tmp/diff_new_pack.iiW7hk/_new 2026-09-01 15:50:19.619880876 +0200
@@ -31,7 +31,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-zope.testrunner%{psuffix}
-Version: 8.2
+Version: 8.3
Release: 0
Summary: Zope testrunner script
License: ZPL-2.1
++++++ zope_testrunner-8.2.tar.gz -> zope_testrunner-8.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/.pre-commit-config.yaml
new/zope_testrunner-8.3/.pre-commit-config.yaml
--- old/zope_testrunner-8.2/.pre-commit-config.yaml 2026-01-23
08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/.pre-commit-config.yaml 2026-07-30
08:30:28.000000000 +0200
@@ -1,9 +1,9 @@
-# Generated from:
-# https://github.com/zopefoundation/meta/tree/master/config/pure-python
+# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
+# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
minimum_pre_commit_version: '3.6'
repos:
- repo: https://github.com/pycqa/isort
- rev: "7.0.0"
+ rev: "8.0.1"
hooks:
- id: isort
- repo: https://github.com/hhatto/autopep8
@@ -12,7 +12,7 @@
- id: autopep8
args: [--in-place, --aggressive, --aggressive]
- repo: https://github.com/asottile/pyupgrade
- rev: v3.21.0
+ rev: v3.21.2
hooks:
- id: pyupgrade
args: [--py310-plus]
@@ -20,6 +20,7 @@
rev: 0.4.3
hooks:
- id: teyit
+ language_version: python3.13
exclude: tests/testrunner-ex/sample2/badsyntax\.py
- repo: https://github.com/PyCQA/flake8
rev: "7.3.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/.readthedocs.yaml
new/zope_testrunner-8.3/.readthedocs.yaml
--- old/zope_testrunner-8.2/.readthedocs.yaml 2026-01-23 08:27:52.000000000
+0100
+++ new/zope_testrunner-8.3/.readthedocs.yaml 2026-07-30 08:30:28.000000000
+0200
@@ -1,5 +1,5 @@
-# Generated from:
-# https://github.com/zopefoundation/meta/tree/master/config/pure-python
+# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
+# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/CHANGES.rst
new/zope_testrunner-8.3/CHANGES.rst
--- old/zope_testrunner-8.2/CHANGES.rst 2026-01-23 08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/CHANGES.rst 2026-07-30 08:30:28.000000000 +0200
@@ -2,6 +2,18 @@
zope.testrunner Changelog
===========================
+8.3 (2026-07-30)
+================
+
+- Move package metadata from setup.py to pyproject.toml.
+
+- Add support for Python 3.15: Restore the pre-3.15 behavior of reporting a
+ doctest as a single test even if it contains multiple examples. Python 3.15
+ changed ``doctest.DocTestCase`` to report each example as a separate subtest
+ (`python/cpython#108885 <https://github.com/python/cpython/issues/108885>`_),
+ which broke zope.testrunner's failure reporting.
+
+
8.2 (2026-01-23)
================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/CONTRIBUTING.md
new/zope_testrunner-8.3/CONTRIBUTING.md
--- old/zope_testrunner-8.2/CONTRIBUTING.md 2026-01-23 08:27:52.000000000
+0100
+++ new/zope_testrunner-8.3/CONTRIBUTING.md 2026-07-30 08:30:28.000000000
+0200
@@ -1,6 +1,6 @@
<!--
-Generated from:
-https://github.com/zopefoundation/meta/tree/master/config/pure-python
+Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
+https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
-->
# Contributing to zopefoundation projects
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/MANIFEST.in
new/zope_testrunner-8.3/MANIFEST.in
--- old/zope_testrunner-8.2/MANIFEST.in 2026-01-23 08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/MANIFEST.in 2026-07-30 08:30:28.000000000 +0200
@@ -1,5 +1,5 @@
-# Generated from:
-# https://github.com/zopefoundation/meta/tree/master/config/pure-python
+# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
+# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
include *.md
include *.rst
include *.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/PKG-INFO
new/zope_testrunner-8.3/PKG-INFO
--- old/zope_testrunner-8.2/PKG-INFO 2026-01-23 08:27:53.879819000 +0100
+++ new/zope_testrunner-8.3/PKG-INFO 2026-07-30 08:30:53.669272400 +0200
@@ -1,16 +1,17 @@
Metadata-Version: 2.4
Name: zope.testrunner
-Version: 8.2
+Version: 8.3
Summary: Zope testrunner script.
-Home-page: https://github.com/zopefoundation/zope.testrunner
-Author: Zope Foundation and Contributors
-Author-email: [email protected]
-License: ZPL-2.1
+Author-email: Zope Foundation and contributors <[email protected]>
+Maintainer-email: Plone Foundation and contributors <[email protected]>
+License-Expression: ZPL-2.1
+Project-URL: Source, https://github.com/zopefoundation/zope.testrunner
+Project-URL: Issues, https://github.com/zopefoundation/zope.testrunner/issues
+Project-URL: Changelog,
https://github.com/zopefoundation/zope.testrunner/blob/master/CHANGES.rst
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Framework :: Zope :: 3
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Zope Public License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
@@ -36,18 +37,7 @@
Provides-Extra: docs
Requires-Dist: Sphinx; extra == "docs"
Requires-Dist: sphinxcontrib-programoutput; extra == "docs"
-Dynamic: author
-Dynamic: author-email
-Dynamic: classifier
-Dynamic: description
-Dynamic: description-content-type
-Dynamic: home-page
-Dynamic: license
Dynamic: license-file
-Dynamic: provides-extra
-Dynamic: requires-dist
-Dynamic: requires-python
-Dynamic: summary
=================
zope.testrunner
@@ -77,7 +67,6 @@
Detailed documentation is hosted at https://zopetestrunner.readthedocs.io
-
=======================
Using zope.testrunner
=======================
@@ -225,11 +214,22 @@
.. _zc.recipe.testrunner: https://pypi.python.org/pypi/zc.recipe.testrunner
.. _subunit: https://pypi.python.org/pypi/python-subunit
-
===========================
zope.testrunner Changelog
===========================
+8.3 (2026-07-30)
+================
+
+- Move package metadata from setup.py to pyproject.toml.
+
+- Add support for Python 3.15: Restore the pre-3.15 behavior of reporting a
+ doctest as a single test even if it contains multiple examples. Python 3.15
+ changed ``doctest.DocTestCase`` to report each example as a separate subtest
+ (`python/cpython#108885 <https://github.com/python/cpython/issues/108885>`_),
+ which broke zope.testrunner's failure reporting.
+
+
8.2 (2026-01-23)
================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/pyproject.toml
new/zope_testrunner-8.3/pyproject.toml
--- old/zope_testrunner-8.2/pyproject.toml 2026-01-23 08:27:52.000000000
+0100
+++ new/zope_testrunner-8.3/pyproject.toml 2026-07-30 08:30:28.000000000
+0200
@@ -1,14 +1,67 @@
-#
-# Generated from:
-# https://github.com/zopefoundation/meta/tree/master/config/pure-python
-
+# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
+# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
[build-system]
requires = [
- "setuptools >= 78.1.1,< 81",
+ "setuptools >= 78.1.1,< 82",
"wheel",
]
build-backend = "setuptools.build_meta"
+[project]
+name = "zope.testrunner"
+version = "8.3"
+description = "Zope testrunner script."
+license = "ZPL-2.1"
+classifiers = [
+ "Development Status :: 5 - Production/Stable",
+ "Environment :: Console",
+ "Framework :: Zope :: 3",
+ "Intended Audience :: Developers",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+ "Topic :: Software Development :: Testing",
+]
+dynamic = ["readme"]
+requires-python = ">=3.10"
+authors = [
+ {name = "Zope Foundation and contributors",email = "[email protected]"},
+]
+maintainers = [
+ {name = "Plone Foundation and contributors",email = "[email protected]"},
+]
+dependencies = [
+ "zope.exceptions",
+ "zope.interface",
+]
+
+[project.scripts]
+zope-testrunner = "zope.testrunner:run"
+
+[project.optional-dependencies]
+test = ["zope.testing"]
+subunit = [
+ "python-subunit >= 1.4.3",
+ "testtools >= 0.9.30",
+]
+docs = [
+ "Sphinx",
+ "sphinxcontrib-programoutput",
+]
+
+[project.urls]
+Source = "https://github.com/zopefoundation/zope.testrunner"
+Issues = "https://github.com/zopefoundation/zope.testrunner/issues"
+Changelog =
"https://github.com/zopefoundation/zope.testrunner/blob/master/CHANGES.rst"
+
[tool.coverage.run]
branch = true
source = ["zope.testrunner"]
@@ -31,3 +84,10 @@
[tool.coverage.html]
directory = "parts/htmlcov"
+
+[tool.setuptools.dynamic]
+readme = {file = ["README.rst", "docs/getting-started.rst", "CHANGES.rst"]}
+
+[tool.zest-releaser]
+create-wheel = false
+upload-pypi = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/setup.py
new/zope_testrunner-8.3/setup.py
--- old/zope_testrunner-8.2/setup.py 2026-01-23 08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/setup.py 2026-07-30 08:30:28.000000000 +0200
@@ -16,84 +16,9 @@
# When developing and releasing this package, please follow the documented
# Zope Toolkit policies as described by this documentation.
##############################################################################
-import os
from setuptools import setup
-version = '8.2'
-
-INSTALL_REQUIRES = [
- 'zope.exceptions',
- 'zope.interface',
-]
-
-TESTS_REQUIRE = [
- 'zope.testing',
-]
-
-EXTRAS_REQUIRE = {
- 'test': TESTS_REQUIRE,
- 'subunit': [
- 'python-subunit >= 1.4.3',
- 'testtools >= 0.9.30',
- ],
- 'docs': [
- 'Sphinx',
- 'sphinxcontrib-programoutput',
- ],
-}
-
-
-def read(*names):
- with open(os.path.join(*names)) as f:
- return f.read()
-
-
-long_description = (
- read('README.rst')
- + '\n\n' +
- read("docs", 'getting-started.rst')
- + '\n\n' +
- read('CHANGES.rst')
-)
-
-setup(
- name='zope.testrunner',
- version=version,
- url='https://github.com/zopefoundation/zope.testrunner',
- license='ZPL-2.1',
- description='Zope testrunner script.',
- long_description=long_description,
- long_description_content_type='text/x-rst',
- author='Zope Foundation and Contributors',
- author_email='[email protected]',
- classifiers=[
- "Development Status :: 5 - Production/Stable",
- "Environment :: Console",
- "Framework :: Zope :: 3",
- "Intended Audience :: Developers",
- "License :: OSI Approved :: Zope Public License",
- "Operating System :: OS Independent",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- "Programming Language :: Python :: 3.13",
- "Programming Language :: Python :: 3.14",
- "Programming Language :: Python :: Implementation :: CPython",
- "Programming Language :: Python :: Implementation :: PyPy",
- "Topic :: Software Development :: Libraries :: Python Modules",
- "Topic :: Software Development :: Testing",
- ],
- python_requires='>=3.10',
- install_requires=INSTALL_REQUIRES,
- extras_require=EXTRAS_REQUIRE,
- entry_points={
- 'console_scripts':
- ['zope-testrunner = zope.testrunner:run'],
- },
- include_package_data=True,
- zip_safe=False,
-)
+# See pyproject.toml for package metadata
+setup()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/src/zope/testrunner/_doctest.py
new/zope_testrunner-8.3/src/zope/testrunner/_doctest.py
--- old/zope_testrunner-8.2/src/zope/testrunner/_doctest.py 2026-01-23
08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/src/zope/testrunner/_doctest.py 2026-07-30
08:30:28.000000000 +0200
@@ -15,7 +15,9 @@
"""
import doctest
+import io
import sys
+import unittest
import zope.testrunner.feature
from zope.testrunner.exceptions import DocTestFailureException
@@ -58,3 +60,37 @@
# Use a special exception for the test runner.
doctest.DocTestCase.failureException = DocTestFailureException
+
+
+if sys.version_info >= (3, 15):
+ # Python 3.15 changed ``doctest.DocTestCase.runTest`` to report each
+ # example as a separate subtest of the enclosing unittest result
+ # (python/cpython#108885). These reports happen while the doctest
+ # machinery has ``sys.stdout`` redirected to its internal buffer, so
+ # zope.testrunner's immediate failure output would be swallowed by that
+ # buffer and corrupt the output of the following examples. Restore the
+ # pre-3.15 behavior of raising a single failure for the whole doctest
+ # after ``sys.stdout`` has been restored.
+ def _runTest(self):
+ test = self._dt_test
+ optionflags = self._dt_optionflags
+
+ if not (optionflags & doctest.REPORTING_FLAGS):
+ # The option flags don't include any reporting flags,
+ # so add the default reporting flags
+ optionflags |= doctest._unittest_reportflags
+
+ runner = doctest.DocTestRunner(optionflags=optionflags,
+ checker=self._dt_checker,
+ verbose=False)
+ out = io.StringIO()
+ runner.DIVIDER = "-" * 70
+ results = runner.run(test, out=out.write, clear_globs=False)
+ if results.skipped == results.attempted:
+ raise unittest.SkipTest("all examples were skipped")
+
+ if results.failed:
+ raise self.failureException(
+ self.format_failure(out.getvalue().rstrip('\n')))
+
+ doctest.DocTestCase.runTest = _runTest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope_testrunner-8.2/src/zope/testrunner/tests/testrunner-errors.rst
new/zope_testrunner-8.3/src/zope/testrunner/tests/testrunner-errors.rst
--- old/zope_testrunner-8.2/src/zope/testrunner/tests/testrunner-errors.rst
2026-01-23 08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/src/zope/testrunner/tests/testrunner-errors.rst
2026-07-30 08:30:28.000000000 +0200
@@ -826,7 +826,7 @@
Traceback (most recent call last):
File "testrunner-ex/sample2/sample21/sampletests_i.py", line 15, in ?
import zope.testrunner.huh # noqa: F401
- ModuleNotFoundError: No module named 'zope.testrunner.huh'
+ ModuleNotFoundError: No module named 'zope.testrunner.huh'...
<BLANKLINE>
<BLANKLINE>
Module: sample2.sample23.sampletests_i
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope_testrunner-8.2/src/zope/testrunner/tests/testrunner-subunit-v2.rst
new/zope_testrunner-8.3/src/zope/testrunner/tests/testrunner-subunit-v2.rst
--- old/zope_testrunner-8.2/src/zope/testrunner/tests/testrunner-subunit-v2.rst
2026-01-23 08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/src/zope/testrunner/tests/testrunner-subunit-v2.rst
2026-07-30 08:30:28.000000000 +0200
@@ -449,7 +449,7 @@
Traceback (most recent call last):
File
"/home/benji/workspace/all-the-trunks/zope.testrunner/src/zope/testrunner/testrunner-ex/sample2/sample21/sampletests_i.py",
line 16, in <module>
import zope.testrunner.huh # noqa: F401...
- ModuleNotFoundError: No module named 'zope.testrunner.huh'
+ ModuleNotFoundError: No module named 'zope.testrunner.huh'...
<BLANKLINE>
id=sample2.sample21.sampletests_i status=fail tags=(zope:import_error)
id=sample2.sample23.sampletests_i status=inprogress
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope_testrunner-8.2/src/zope/testrunner/tests/testrunner-subunit.rst
new/zope_testrunner-8.3/src/zope/testrunner/tests/testrunner-subunit.rst
--- old/zope_testrunner-8.2/src/zope/testrunner/tests/testrunner-subunit.rst
2026-01-23 08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/src/zope/testrunner/tests/testrunner-subunit.rst
2026-07-30 08:30:28.000000000 +0200
@@ -477,7 +477,7 @@
Traceback (most recent call last):
File
"/home/benji/workspace/all-the-trunks/zope.testrunner/src/zope/testrunner/testrunner-ex/sample2/sample21/sampletests_i.py",
line 16, in <module>
import zope.testrunner.huh # noqa: F401...
- ModuleNotFoundError: No module named 'zope.testrunner.huh'
+ ModuleNotFoundError: No module named 'zope.testrunner.huh'...
]
test: sample2.sample23.sampletests_i
tags: zope:import_error
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope_testrunner-8.2/src/zope.testrunner.egg-info/PKG-INFO
new/zope_testrunner-8.3/src/zope.testrunner.egg-info/PKG-INFO
--- old/zope_testrunner-8.2/src/zope.testrunner.egg-info/PKG-INFO
2026-01-23 08:27:53.000000000 +0100
+++ new/zope_testrunner-8.3/src/zope.testrunner.egg-info/PKG-INFO
2026-07-30 08:30:53.000000000 +0200
@@ -1,16 +1,17 @@
Metadata-Version: 2.4
Name: zope.testrunner
-Version: 8.2
+Version: 8.3
Summary: Zope testrunner script.
-Home-page: https://github.com/zopefoundation/zope.testrunner
-Author: Zope Foundation and Contributors
-Author-email: [email protected]
-License: ZPL-2.1
+Author-email: Zope Foundation and contributors <[email protected]>
+Maintainer-email: Plone Foundation and contributors <[email protected]>
+License-Expression: ZPL-2.1
+Project-URL: Source, https://github.com/zopefoundation/zope.testrunner
+Project-URL: Issues, https://github.com/zopefoundation/zope.testrunner/issues
+Project-URL: Changelog,
https://github.com/zopefoundation/zope.testrunner/blob/master/CHANGES.rst
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Framework :: Zope :: 3
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Zope Public License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
@@ -36,18 +37,7 @@
Provides-Extra: docs
Requires-Dist: Sphinx; extra == "docs"
Requires-Dist: sphinxcontrib-programoutput; extra == "docs"
-Dynamic: author
-Dynamic: author-email
-Dynamic: classifier
-Dynamic: description
-Dynamic: description-content-type
-Dynamic: home-page
-Dynamic: license
Dynamic: license-file
-Dynamic: provides-extra
-Dynamic: requires-dist
-Dynamic: requires-python
-Dynamic: summary
=================
zope.testrunner
@@ -77,7 +67,6 @@
Detailed documentation is hosted at https://zopetestrunner.readthedocs.io
-
=======================
Using zope.testrunner
=======================
@@ -225,11 +214,22 @@
.. _zc.recipe.testrunner: https://pypi.python.org/pypi/zc.recipe.testrunner
.. _subunit: https://pypi.python.org/pypi/python-subunit
-
===========================
zope.testrunner Changelog
===========================
+8.3 (2026-07-30)
+================
+
+- Move package metadata from setup.py to pyproject.toml.
+
+- Add support for Python 3.15: Restore the pre-3.15 behavior of reporting a
+ doctest as a single test even if it contains multiple examples. Python 3.15
+ changed ``doctest.DocTestCase`` to report each example as a separate subtest
+ (`python/cpython#108885 <https://github.com/python/cpython/issues/108885>`_),
+ which broke zope.testrunner's failure reporting.
+
+
8.2 (2026-01-23)
================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope_testrunner-8.2/src/zope.testrunner.egg-info/SOURCES.txt
new/zope_testrunner-8.3/src/zope.testrunner.egg-info/SOURCES.txt
--- old/zope_testrunner-8.2/src/zope.testrunner.egg-info/SOURCES.txt
2026-01-23 08:27:53.000000000 +0100
+++ new/zope_testrunner-8.3/src/zope.testrunner.egg-info/SOURCES.txt
2026-07-30 08:30:53.000000000 +0200
@@ -47,7 +47,6 @@
src/zope.testrunner.egg-info/SOURCES.txt
src/zope.testrunner.egg-info/dependency_links.txt
src/zope.testrunner.egg-info/entry_points.txt
-src/zope.testrunner.egg-info/not-zip-safe
src/zope.testrunner.egg-info/requires.txt
src/zope.testrunner.egg-info/top_level.txt
src/zope/testrunner/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope_testrunner-8.2/src/zope.testrunner.egg-info/not-zip-safe
new/zope_testrunner-8.3/src/zope.testrunner.egg-info/not-zip-safe
--- old/zope_testrunner-8.2/src/zope.testrunner.egg-info/not-zip-safe
2026-01-23 08:27:53.000000000 +0100
+++ new/zope_testrunner-8.3/src/zope.testrunner.egg-info/not-zip-safe
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope_testrunner-8.2/tox.ini
new/zope_testrunner-8.3/tox.ini
--- old/zope_testrunner-8.2/tox.ini 2026-01-23 08:27:52.000000000 +0100
+++ new/zope_testrunner-8.3/tox.ini 2026-07-30 08:30:28.000000000 +0200
@@ -1,5 +1,5 @@
-# Generated from:
-# https://github.com/zopefoundation/meta/tree/master/config/pure-python
+# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
+# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
[tox]
minversion = 3.18
envlist =
@@ -10,6 +10,7 @@
py312
py313
py314
+ py315
pypy3
docs
coverage
@@ -19,8 +20,9 @@
usedevelop = true
package = wheel
wheel_build_env = .pkg
+pip_pre = py315: true
deps =
- setuptools >= 78.1.1,< 81
+ setuptools >= 78.1.1,< 82
commands =
zope-testrunner --test-path=src {posargs:-vc}
extras =
@@ -38,12 +40,12 @@
basepython = python3
skip_install = true
deps =
- setuptools >= 78.1.1,< 81
+ setuptools >= 78.1.1,< 82
wheel
twine
build
check-manifest
- check-python-versions >= 0.20.0
+ check-python-versions >= 0.24.2
wheel
commands_pre =
commands =