Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pytest-timeout for
openSUSE:Factory checked in at 2022-01-07 12:45:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest-timeout (Old)
and /work/SRC/openSUSE:Factory/.python-pytest-timeout.new.1896 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pytest-timeout"
Fri Jan 7 12:45:17 2022 rev:11 rq:944139 version:2.0.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-pytest-timeout/python-pytest-timeout.changes
2020-11-09 13:56:49.088041741 +0100
+++
/work/SRC/openSUSE:Factory/.python-pytest-timeout.new.1896/python-pytest-timeout.changes
2022-01-07 12:46:02.235831126 +0100
@@ -1,0 +2,13 @@
+Thu Jan 6 01:39:29 UTC 2022 - Steve Kowalik <[email protected]>
+
+- Update to 2.0.2:
+ * Fix debugger detection on OSX, thanks Alexander Pacha.
+ * Fix Python 2 removal, thanks Nicusor Picatureanu.
+ * Increase pytest requirement to >=5.0.0. Thanks Dominic Davis-Foster.
+ * Use thread timeout method when plugin is not called from main thread
+ to avoid crash.
+ * Fix pycharm debugger detection so timeouts are not triggered during
+ debugger usage.
+ * Dropped support for Python 2, minimum pytest version upported is 5.0.0.
+
+-------------------------------------------------------------------
Old:
----
pytest-timeout-1.4.2.tar.gz
New:
----
pytest-timeout-2.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pytest-timeout.spec ++++++
--- /var/tmp/diff_new_pack.hooCBf/_old 2022-01-07 12:46:02.879831573 +0100
+++ /var/tmp/diff_new_pack.hooCBf/_new 2022-01-07 12:46:02.879831573 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-pytest-timeout
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,20 +17,21 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define skip_python2 1
Name: python-pytest-timeout
-Version: 1.4.2
+Version: 2.0.2
Release: 0
Summary: Pytest plugin to abort hanging tests
License: MIT
URL: https://github.com/pytest-dev/pytest-timeout/
Source:
https://files.pythonhosted.org/packages/source/p/pytest-timeout/pytest-timeout-%{version}.tar.gz
BuildRequires: %{python_module pexpect}
-BuildRequires: %{python_module pytest >= 3.6.0}
+BuildRequires: %{python_module pytest >= 5.0.0}
BuildRequires: %{python_module pytest-cov}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-pytest >= 3.6.0
+Requires: python-pytest >= 5.0.0
BuildArch: noarch
%python_subpackages
++++++ pytest-timeout-1.4.2.tar.gz -> pytest-timeout-2.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-timeout-1.4.2/PKG-INFO
new/pytest-timeout-2.0.2/PKG-INFO
--- old/pytest-timeout-1.4.2/PKG-INFO 2020-07-15 21:25:23.076116000 +0200
+++ new/pytest-timeout-2.0.2/PKG-INFO 2021-12-13 20:32:59.685103200 +0100
@@ -1,8 +1,8 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: pytest-timeout
-Version: 1.4.2
-Summary: py.test plugin to abort hanging tests
-Home-page: http://github.com/pytest-dev/pytest-timeout/
+Version: 2.0.2
+Summary: pytest plugin to abort hanging tests
+Home-page: https://github.com/pytest-dev/pytest-timeout
Author: Floris Bruynooghe
Author-email: [email protected]
License: MIT
@@ -24,19 +24,20 @@
.. |python| image::
https://img.shields.io/pypi/pyversions/pytest-timeout.svg
:target: https://pypi.python.org/pypi/pytest-timeout/
- This is a plugin which will terminate tests after a certain timeout,
- assuming the test session isn't being debugged. When aborting a test
- it will show a stack dump of all threads running at the time.
- This is useful when running tests under a continuous
- integration server or simply if you don't know why the test suite
hangs.
+ **This is not the timeout you are looking for!**
- .. note::
+ .. warning::
- The way this plugin detects whether or not a debugging session is
- active is by checking if a trace function is set and if one is, it
- check to see if the module it belongs to is present in a set of
- known debugging frameworks modules OR if pytest itself drops you
- into a pbd session.
+ Please read this README carefully and only use this plugin if you
+ understand the consequences. Remember your test suite needs to be
+ **fast**, timeouts are a last resort not an expected failure mode.
+
+ This plugin will time each test and terminate it when it takes too
+ long. Termination may or may not be graceful, please see below, but
+ when aborting it will show a stack dump of all thread running at the
+ time. This is useful when running tests under a continuous
+ integration server or simply if you don't know why the test suite
+ hangs.
.. note::
@@ -50,9 +51,8 @@
stage. See below for detailed information on the timeout methods
and their side-effects.
- The pytest-timeout plugin has been tested on python 2.7 or higher,
- including 3.X, pypy and pypy3. See tox.ini for currently tested
- versions.
+ The pytest-timeout plugin has been tested on Python 3.6 and higher,
+ including PyPy3. See tox.ini for currently tested versions.
Usage
@@ -62,12 +62,17 @@
pip install pytest-timeout
- Now you can run tests using a timeout, in seconds, after which they
- will be terminated::
+ Now you can run the test suite while setting a timeout in seconds, any
+ individual test which takes longer than the given duration will be
+ terminated::
pytest --timeout=300
- Alternatively you can mark individual tests as having a timeout::
+ Furthermore you can also use a decorator to set the timeout for an
+ individual test. If combined with the ``--timeout`` flag this will
+ override the timeout for this individual test:
+
+ .. code:: python
@pytest.mark.timeout(60)
def test_foo():
@@ -79,7 +84,9 @@
defined in a number of ways, from low to high priority:
1. You can set a global timeout in the `pytest configuration file`__
- using the ``timeout`` option. E.g.::
+ using the ``timeout`` option. E.g.:
+
+ .. code:: ini
[pytest]
timeout = 300
@@ -91,7 +98,9 @@
overriding both the environment variable and configuration option.
4. Using the ``timeout`` marker_ on test items you can specify
- timeouts on a per-item basis::
+ timeouts on a per-item basis:
+
+ .. code:: python
@pytest.mark.timeout(300)
def test_foo():
@@ -145,8 +154,8 @@
If the system supports the SIGALRM signal the *signal* method will be
used by default. This method schedules an alarm when the test item
- starts and cancels it when it finishes. If the alarm expires during
- the test the signal handler will dump the stack of any other threads
+ starts and cancels the alarm when the test finishes. If the alarm
expires
+ during the test the signal handler will dump the stack of any other
threads
running to stderr and use ``pytest.fail()`` to interrupt the test.
The benefit of this method is that the pytest process is not
@@ -164,9 +173,11 @@
option in the `pytest configuration file`__, the ``--timeout_method``
command line parameter or the ``timeout`` marker_. Simply set their
value to the string ``thread`` or ``signal`` to override the default
- method. On a marker this is done using the ``method`` keyword::
+ method. On a marker this is done using the ``method`` keyword:
+
+ .. code:: python
- @pytest.mark.timeout(method='thread')
+ @pytest.mark.timeout(method="thread")
def test_foo():
pass
@@ -177,7 +188,9 @@
The ``timeout`` Marker API
==========================
- The full signature of the timeout marker is::
+ The full signature of the timeout marker is:
+
+ .. code:: python
pytest.mark.timeout(timeout=0, method=DEFAULT_METHOD)
@@ -205,10 +218,56 @@
case of doubt the thread method which terminates the entire process
might result in clearer output.
+ Avoiding timeouts in Fixtures
+ =============================
+
+ The timeout applies to the entire test including any fixtures which
+ may need to be setup or torn down for the test (the exact affected
+ fixtures depends on which scope they are and whether other tests will
+ still use the same fixture). If the timeouts really are too short to
+ include fixture durations, firstly make the timeouts larger ;). If
+ this really isn't an option a ``timeout_func_only`` boolean setting
+ exists which can be set in the pytest ini configuration file, as
+ documented in ``pytest --help``.
+
+
+ Debugger Detection
+ ==================
+
+ This plugin tries to avoid triggering the timeout when a debugger is
+ detected. This is mostly a convenience so you do not need to remember
+ to disable the timeout when interactively debugging.
+
+ The way this plugin detects whether or not a debugging session is
+ active is by checking if a trace function is set and if one is, it
+ check to see if the module it belongs to is present in a set of known
+ debugging frameworks modules OR if pytest itself drops you into a pdb
+ session using ``--pdb`` or similar.
+
Changelog
=========
+ 2.0.2
+ -----
+
+ - Fix debugger detection on OSX, thanks Alexander Pacha.
+
+ 2.0.1
+ -----
+
+ - Fix Python 2 removal, thanks Nicusor Picatureanu.
+
+ 2.0.0
+ -----
+
+ - Increase pytest requirement to >=5.0.0. Thanks Dominic Davis-Foster.
+ - Use thread timeout method when plugin is not called from main
+ thread to avoid crash.
+ - Fix pycharm debugger detection so timeouts are not triggered during
+ debugger usage.
+ - Dropped support for Python 2, minimum pytest version upported is
5.0.0.
+
1.4.2
-----
@@ -352,10 +411,15 @@
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Software Development :: Testing
+Classifier: Framework :: Pytest
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-timeout-1.4.2/README.rst
new/pytest-timeout-2.0.2/README.rst
--- old/pytest-timeout-1.4.2/README.rst 2020-07-15 21:24:43.000000000 +0200
+++ new/pytest-timeout-2.0.2/README.rst 2021-12-13 20:27:58.000000000 +0100
@@ -16,19 +16,20 @@
.. |python| image:: https://img.shields.io/pypi/pyversions/pytest-timeout.svg
:target: https://pypi.python.org/pypi/pytest-timeout/
-This is a plugin which will terminate tests after a certain timeout,
-assuming the test session isn't being debugged. When aborting a test
-it will show a stack dump of all threads running at the time.
-This is useful when running tests under a continuous
-integration server or simply if you don't know why the test suite hangs.
+**This is not the timeout you are looking for!**
-.. note::
+.. warning::
- The way this plugin detects whether or not a debugging session is
- active is by checking if a trace function is set and if one is, it
- check to see if the module it belongs to is present in a set of
- known debugging frameworks modules OR if pytest itself drops you
- into a pbd session.
+ Please read this README carefully and only use this plugin if you
+ understand the consequences. Remember your test suite needs to be
+ **fast**, timeouts are a last resort not an expected failure mode.
+
+This plugin will time each test and terminate it when it takes too
+long. Termination may or may not be graceful, please see below, but
+when aborting it will show a stack dump of all thread running at the
+time. This is useful when running tests under a continuous
+integration server or simply if you don't know why the test suite
+hangs.
.. note::
@@ -42,9 +43,8 @@
stage. See below for detailed information on the timeout methods
and their side-effects.
-The pytest-timeout plugin has been tested on python 2.7 or higher,
-including 3.X, pypy and pypy3. See tox.ini for currently tested
-versions.
+The pytest-timeout plugin has been tested on Python 3.6 and higher,
+including PyPy3. See tox.ini for currently tested versions.
Usage
@@ -54,12 +54,17 @@
pip install pytest-timeout
-Now you can run tests using a timeout, in seconds, after which they
-will be terminated::
+Now you can run the test suite while setting a timeout in seconds, any
+individual test which takes longer than the given duration will be
+terminated::
pytest --timeout=300
-Alternatively you can mark individual tests as having a timeout::
+Furthermore you can also use a decorator to set the timeout for an
+individual test. If combined with the ``--timeout`` flag this will
+override the timeout for this individual test:
+
+.. code:: python
@pytest.mark.timeout(60)
def test_foo():
@@ -71,7 +76,9 @@
defined in a number of ways, from low to high priority:
1. You can set a global timeout in the `pytest configuration file`__
- using the ``timeout`` option. E.g.::
+ using the ``timeout`` option. E.g.:
+
+ .. code:: ini
[pytest]
timeout = 300
@@ -83,7 +90,9 @@
overriding both the environment variable and configuration option.
4. Using the ``timeout`` marker_ on test items you can specify
- timeouts on a per-item basis::
+ timeouts on a per-item basis:
+
+ .. code:: python
@pytest.mark.timeout(300)
def test_foo():
@@ -137,8 +146,8 @@
If the system supports the SIGALRM signal the *signal* method will be
used by default. This method schedules an alarm when the test item
-starts and cancels it when it finishes. If the alarm expires during
-the test the signal handler will dump the stack of any other threads
+starts and cancels the alarm when the test finishes. If the alarm expires
+during the test the signal handler will dump the stack of any other threads
running to stderr and use ``pytest.fail()`` to interrupt the test.
The benefit of this method is that the pytest process is not
@@ -156,9 +165,11 @@
option in the `pytest configuration file`__, the ``--timeout_method``
command line parameter or the ``timeout`` marker_. Simply set their
value to the string ``thread`` or ``signal`` to override the default
-method. On a marker this is done using the ``method`` keyword::
+method. On a marker this is done using the ``method`` keyword:
+
+.. code:: python
- @pytest.mark.timeout(method='thread')
+ @pytest.mark.timeout(method="thread")
def test_foo():
pass
@@ -169,7 +180,9 @@
The ``timeout`` Marker API
==========================
-The full signature of the timeout marker is::
+The full signature of the timeout marker is:
+
+.. code:: python
pytest.mark.timeout(timeout=0, method=DEFAULT_METHOD)
@@ -197,10 +210,56 @@
case of doubt the thread method which terminates the entire process
might result in clearer output.
+Avoiding timeouts in Fixtures
+=============================
+
+The timeout applies to the entire test including any fixtures which
+may need to be setup or torn down for the test (the exact affected
+fixtures depends on which scope they are and whether other tests will
+still use the same fixture). If the timeouts really are too short to
+include fixture durations, firstly make the timeouts larger ;). If
+this really isn't an option a ``timeout_func_only`` boolean setting
+exists which can be set in the pytest ini configuration file, as
+documented in ``pytest --help``.
+
+
+Debugger Detection
+==================
+
+This plugin tries to avoid triggering the timeout when a debugger is
+detected. This is mostly a convenience so you do not need to remember
+to disable the timeout when interactively debugging.
+
+The way this plugin detects whether or not a debugging session is
+active is by checking if a trace function is set and if one is, it
+check to see if the module it belongs to is present in a set of known
+debugging frameworks modules OR if pytest itself drops you into a pdb
+session using ``--pdb`` or similar.
+
Changelog
=========
+2.0.2
+-----
+
+- Fix debugger detection on OSX, thanks Alexander Pacha.
+
+2.0.1
+-----
+
+- Fix Python 2 removal, thanks Nicusor Picatureanu.
+
+2.0.0
+-----
+
+- Increase pytest requirement to >=5.0.0. Thanks Dominic Davis-Foster.
+- Use thread timeout method when plugin is not called from main
+ thread to avoid crash.
+- Fix pycharm debugger detection so timeouts are not triggered during
+ debugger usage.
+- Dropped support for Python 2, minimum pytest version upported is 5.0.0.
+
1.4.2
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-timeout-1.4.2/failure_demo.py
new/pytest-timeout-2.0.2/failure_demo.py
--- old/pytest-timeout-1.4.2/failure_demo.py 2020-06-14 14:15:17.000000000
+0200
+++ new/pytest-timeout-2.0.2/failure_demo.py 2021-07-18 21:06:35.000000000
+0200
@@ -1,8 +1,8 @@
"""Demonstration of timeout failures using pytest_timeout.
-To use this demo, invoke py.test on it::
+To use this demo, invoke pytest on it::
- py.test failure_demo.py
+ pytest failure_demo.py
"""
import threading
import time
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pytest-timeout-1.4.2/pytest_timeout.egg-info/PKG-INFO
new/pytest-timeout-2.0.2/pytest_timeout.egg-info/PKG-INFO
--- old/pytest-timeout-1.4.2/pytest_timeout.egg-info/PKG-INFO 2020-07-15
21:25:23.000000000 +0200
+++ new/pytest-timeout-2.0.2/pytest_timeout.egg-info/PKG-INFO 2021-12-13
20:32:59.000000000 +0100
@@ -1,8 +1,8 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: pytest-timeout
-Version: 1.4.2
-Summary: py.test plugin to abort hanging tests
-Home-page: http://github.com/pytest-dev/pytest-timeout/
+Version: 2.0.2
+Summary: pytest plugin to abort hanging tests
+Home-page: https://github.com/pytest-dev/pytest-timeout
Author: Floris Bruynooghe
Author-email: [email protected]
License: MIT
@@ -24,19 +24,20 @@
.. |python| image::
https://img.shields.io/pypi/pyversions/pytest-timeout.svg
:target: https://pypi.python.org/pypi/pytest-timeout/
- This is a plugin which will terminate tests after a certain timeout,
- assuming the test session isn't being debugged. When aborting a test
- it will show a stack dump of all threads running at the time.
- This is useful when running tests under a continuous
- integration server or simply if you don't know why the test suite
hangs.
+ **This is not the timeout you are looking for!**
- .. note::
+ .. warning::
- The way this plugin detects whether or not a debugging session is
- active is by checking if a trace function is set and if one is, it
- check to see if the module it belongs to is present in a set of
- known debugging frameworks modules OR if pytest itself drops you
- into a pbd session.
+ Please read this README carefully and only use this plugin if you
+ understand the consequences. Remember your test suite needs to be
+ **fast**, timeouts are a last resort not an expected failure mode.
+
+ This plugin will time each test and terminate it when it takes too
+ long. Termination may or may not be graceful, please see below, but
+ when aborting it will show a stack dump of all thread running at the
+ time. This is useful when running tests under a continuous
+ integration server or simply if you don't know why the test suite
+ hangs.
.. note::
@@ -50,9 +51,8 @@
stage. See below for detailed information on the timeout methods
and their side-effects.
- The pytest-timeout plugin has been tested on python 2.7 or higher,
- including 3.X, pypy and pypy3. See tox.ini for currently tested
- versions.
+ The pytest-timeout plugin has been tested on Python 3.6 and higher,
+ including PyPy3. See tox.ini for currently tested versions.
Usage
@@ -62,12 +62,17 @@
pip install pytest-timeout
- Now you can run tests using a timeout, in seconds, after which they
- will be terminated::
+ Now you can run the test suite while setting a timeout in seconds, any
+ individual test which takes longer than the given duration will be
+ terminated::
pytest --timeout=300
- Alternatively you can mark individual tests as having a timeout::
+ Furthermore you can also use a decorator to set the timeout for an
+ individual test. If combined with the ``--timeout`` flag this will
+ override the timeout for this individual test:
+
+ .. code:: python
@pytest.mark.timeout(60)
def test_foo():
@@ -79,7 +84,9 @@
defined in a number of ways, from low to high priority:
1. You can set a global timeout in the `pytest configuration file`__
- using the ``timeout`` option. E.g.::
+ using the ``timeout`` option. E.g.:
+
+ .. code:: ini
[pytest]
timeout = 300
@@ -91,7 +98,9 @@
overriding both the environment variable and configuration option.
4. Using the ``timeout`` marker_ on test items you can specify
- timeouts on a per-item basis::
+ timeouts on a per-item basis:
+
+ .. code:: python
@pytest.mark.timeout(300)
def test_foo():
@@ -145,8 +154,8 @@
If the system supports the SIGALRM signal the *signal* method will be
used by default. This method schedules an alarm when the test item
- starts and cancels it when it finishes. If the alarm expires during
- the test the signal handler will dump the stack of any other threads
+ starts and cancels the alarm when the test finishes. If the alarm
expires
+ during the test the signal handler will dump the stack of any other
threads
running to stderr and use ``pytest.fail()`` to interrupt the test.
The benefit of this method is that the pytest process is not
@@ -164,9 +173,11 @@
option in the `pytest configuration file`__, the ``--timeout_method``
command line parameter or the ``timeout`` marker_. Simply set their
value to the string ``thread`` or ``signal`` to override the default
- method. On a marker this is done using the ``method`` keyword::
+ method. On a marker this is done using the ``method`` keyword:
+
+ .. code:: python
- @pytest.mark.timeout(method='thread')
+ @pytest.mark.timeout(method="thread")
def test_foo():
pass
@@ -177,7 +188,9 @@
The ``timeout`` Marker API
==========================
- The full signature of the timeout marker is::
+ The full signature of the timeout marker is:
+
+ .. code:: python
pytest.mark.timeout(timeout=0, method=DEFAULT_METHOD)
@@ -205,10 +218,56 @@
case of doubt the thread method which terminates the entire process
might result in clearer output.
+ Avoiding timeouts in Fixtures
+ =============================
+
+ The timeout applies to the entire test including any fixtures which
+ may need to be setup or torn down for the test (the exact affected
+ fixtures depends on which scope they are and whether other tests will
+ still use the same fixture). If the timeouts really are too short to
+ include fixture durations, firstly make the timeouts larger ;). If
+ this really isn't an option a ``timeout_func_only`` boolean setting
+ exists which can be set in the pytest ini configuration file, as
+ documented in ``pytest --help``.
+
+
+ Debugger Detection
+ ==================
+
+ This plugin tries to avoid triggering the timeout when a debugger is
+ detected. This is mostly a convenience so you do not need to remember
+ to disable the timeout when interactively debugging.
+
+ The way this plugin detects whether or not a debugging session is
+ active is by checking if a trace function is set and if one is, it
+ check to see if the module it belongs to is present in a set of known
+ debugging frameworks modules OR if pytest itself drops you into a pdb
+ session using ``--pdb`` or similar.
+
Changelog
=========
+ 2.0.2
+ -----
+
+ - Fix debugger detection on OSX, thanks Alexander Pacha.
+
+ 2.0.1
+ -----
+
+ - Fix Python 2 removal, thanks Nicusor Picatureanu.
+
+ 2.0.0
+ -----
+
+ - Increase pytest requirement to >=5.0.0. Thanks Dominic Davis-Foster.
+ - Use thread timeout method when plugin is not called from main
+ thread to avoid crash.
+ - Fix pycharm debugger detection so timeouts are not triggered during
+ debugger usage.
+ - Dropped support for Python 2, minimum pytest version upported is
5.0.0.
+
1.4.2
-----
@@ -352,10 +411,15 @@
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Software Development :: Testing
+Classifier: Framework :: Pytest
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pytest-timeout-1.4.2/pytest_timeout.egg-info/SOURCES.txt
new/pytest-timeout-2.0.2/pytest_timeout.egg-info/SOURCES.txt
--- old/pytest-timeout-1.4.2/pytest_timeout.egg-info/SOURCES.txt
2020-07-15 21:25:23.000000000 +0200
+++ new/pytest-timeout-2.0.2/pytest_timeout.egg-info/SOURCES.txt
2021-12-13 20:32:59.000000000 +0100
@@ -3,7 +3,6 @@
README.rst
failure_demo.py
pytest_timeout.py
-setup.cfg
setup.py
test_pytest_timeout.py
tox.ini
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pytest-timeout-1.4.2/pytest_timeout.egg-info/requires.txt
new/pytest-timeout-2.0.2/pytest_timeout.egg-info/requires.txt
--- old/pytest-timeout-1.4.2/pytest_timeout.egg-info/requires.txt
2020-07-15 21:25:23.000000000 +0200
+++ new/pytest-timeout-2.0.2/pytest_timeout.egg-info/requires.txt
2021-12-13 20:32:59.000000000 +0100
@@ -1 +1 @@
-pytest>=3.6.0
+pytest>=5.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-timeout-1.4.2/pytest_timeout.py
new/pytest-timeout-2.0.2/pytest_timeout.py
--- old/pytest-timeout-1.4.2/pytest_timeout.py 2020-07-15 21:20:47.000000000
+0200
+++ new/pytest-timeout-2.0.2/pytest_timeout.py 2021-11-02 21:30:06.000000000
+0100
@@ -13,7 +13,6 @@
import threading
import traceback
from collections import namedtuple
-from distutils.version import LooseVersion
import py
import pytest
@@ -29,9 +28,9 @@
means no timeout.
""".strip()
METHOD_DESC = """
-Timeout mechanism to use. 'signal' uses SIGALRM if available,
-'thread' uses a timer thread. The default is to use 'signal' and fall
-back to 'thread'.
+Timeout mechanism to use. 'signal' uses SIGALRM, 'thread' uses a timer
+thread. If unspecified 'signal' is used on platforms which support
+SIGALRM, otherwise 'thread' is used.
""".strip()
FUNC_ONLY_DESC = """
When set to True, defers the timeout evaluation to only the test
@@ -41,7 +40,7 @@
# bdb covers pdb, ipdb, and possibly others
# pydevd covers PyCharm, VSCode, and possibly others
-KNOWN_DEBUGGING_MODULES = {"pydevd", "bdb"}
+KNOWN_DEBUGGING_MODULES = {"pydevd", "bdb", "pydevd_frame_evaluator"}
Settings = namedtuple("Settings", ["timeout", "method", "func_only"])
@@ -180,7 +179,7 @@
if trace_func and inspect.getmodule(trace_func):
parts = inspect.getmodule(trace_func).__name__.split(".")
for name in KNOWN_DEBUGGING_MODULES:
- if name in parts:
+ if any(part.startswith(name) for part in parts):
return True
return False
@@ -193,7 +192,15 @@
params = get_params(item)
if params.timeout is None or params.timeout <= 0:
return
- if params.method == "signal":
+
+ timeout_method = params.method
+ if (
+ timeout_method == "signal"
+ and threading.current_thread() is not threading.main_thread()
+ ):
+ timeout_method = "thread"
+
+ if timeout_method == "signal":
def handler(signum, frame):
__tracebackhide__ = True
@@ -206,7 +213,7 @@
item.cancel_timeout = cancel
signal.signal(signal.SIGALRM, handler)
signal.setitimer(signal.ITIMER_REAL, params.timeout)
- elif params.method == "thread":
+ elif timeout_method == "thread":
timer = threading.Timer(params.timeout, timeout_timer, (item,
params.timeout))
timer.name = "%s %s" % (__name__, item.nodeid)
@@ -386,12 +393,8 @@
try:
capman = item.config.pluginmanager.getplugin("capturemanager")
if capman:
- pytest_version = LooseVersion(pytest.__version__)
- if pytest_version >= LooseVersion("3.7.3"):
- capman.suspend_global_capture(item)
- stdout, stderr = capman.read_global_capture()
- else:
- stdout, stderr = capman.suspend_global_capture(item)
+ capman.suspend_global_capture(item)
+ stdout, stderr = capman.read_global_capture()
else:
stdout, stderr = None, None
write_title("Timeout", sep="+")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-timeout-1.4.2/setup.cfg
new/pytest-timeout-2.0.2/setup.cfg
--- old/pytest-timeout-1.4.2/setup.cfg 2020-07-15 21:25:23.076116000 +0200
+++ new/pytest-timeout-2.0.2/setup.cfg 2021-12-13 20:32:59.685103200 +0100
@@ -1,6 +1,3 @@
-[bdist_wheel]
-universal = 1
-
[egg_info]
tag_build =
tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-timeout-1.4.2/setup.py
new/pytest-timeout-2.0.2/setup.py
--- old/pytest-timeout-1.4.2/setup.py 2020-07-15 21:24:51.000000000 +0200
+++ new/pytest-timeout-2.0.2/setup.py 2021-12-13 20:28:29.000000000 +0100
@@ -1,24 +1,23 @@
"""Setuptools install script for pytest-timeout."""
-import io
-
from setuptools import setup
-with io.open("README.rst", encoding="utf-8") as f:
+with open("README.rst", encoding="utf-8") as f:
long_description = f.read()
setup(
name="pytest-timeout",
- description="py.test plugin to abort hanging tests",
+ description="pytest plugin to abort hanging tests",
long_description=long_description,
- version="1.4.2",
+ version="2.0.2",
author="Floris Bruynooghe",
author_email="[email protected]",
- url="http://github.com/pytest-dev/pytest-timeout/",
+ url="https://github.com/pytest-dev/pytest-timeout",
license="MIT",
py_modules=["pytest_timeout"],
entry_points={"pytest11": ["timeout = pytest_timeout"]},
- install_requires=["pytest>=3.6.0"],
+ install_requires=["pytest>=5.0.0"],
+ python_requires=">=3.6",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
@@ -28,12 +27,16 @@
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
- "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ "Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
"Topic :: Software Development :: Testing",
+ "Framework :: Pytest",
],
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-timeout-1.4.2/test_pytest_timeout.py
new/pytest-timeout-2.0.2/test_pytest_timeout.py
--- old/pytest-timeout-1.4.2/test_pytest_timeout.py 2020-07-15
21:20:47.000000000 +0200
+++ new/pytest-timeout-2.0.2/test_pytest_timeout.py 2021-11-02
21:30:06.000000000 +0100
@@ -31,9 +31,9 @@
def test_x(): pass
"""
)
- result = testdir.runpytest("--timeout=0.01")
+ result = testdir.runpytest("--timeout=1")
result.stdout.fnmatch_lines(
- ["timeout: 0.01s", "timeout method:*", "timeout func_only:*"]
+ ["timeout: 1.0s", "timeout method:*", "timeout func_only:*"]
)
@@ -47,8 +47,8 @@
time.sleep(2)
"""
)
- result = testdir.runpytest("--timeout=0.01")
- result.stdout.fnmatch_lines(["*Failed: Timeout >0.01s*"])
+ result = testdir.runpytest("--timeout=1")
+ result.stdout.fnmatch_lines(["*Failed: Timeout >1.0s*"])
def test_thread(testdir):
@@ -60,7 +60,7 @@
time.sleep(2)
"""
)
- result = testdir.runpytest("--timeout=0.01", "--timeout-method=thread")
+ result = testdir.runpytest("--timeout=1", "--timeout-method=thread")
result.stderr.fnmatch_lines(
[
"*++ Timeout ++*",
@@ -77,6 +77,7 @@
)
def test_cov(testdir):
# This test requires pytest-cov
+ pytest.importorskip("pytest_cov")
testdir.makepyfile(
"""
import time
@@ -86,7 +87,7 @@
"""
)
result = testdir.runpytest(
- "--timeout=0.01", "--cov=test_cov.py", "--timeout-method=thread"
+ "--timeout=1", "--cov=test_cov", "--timeout-method=thread"
)
result.stderr.fnmatch_lines(
[
@@ -108,7 +109,7 @@
time.sleep(2)
"""
)
- monkeypatch.setitem(os.environ, "PYTEST_TIMEOUT", "0.01")
+ monkeypatch.setitem(os.environ, "PYTEST_TIMEOUT", "1")
result = testdir.runpytest()
assert result.ret > 0
@@ -150,7 +151,7 @@
scope=scope
)
)
- result = testdir.runpytest("--timeout=0.01",
"--timeout-method={}".format(meth))
+ result = testdir.runpytest("--timeout=1", f"--timeout-method={meth}")
assert result.ret > 0
assert "Timeout" in result.stdout.str() + result.stderr.str()
@@ -171,7 +172,7 @@
pass
"""
)
- result = testdir.runpytest("--timeout=0.01")
+ result = testdir.runpytest("--timeout=1")
assert result.ret == 0
assert "Timeout" not in result.stdout.str() + result.stderr.str()
@@ -197,9 +198,7 @@
pass
"""
)
- result = testdir.runpytest(
- "--timeout=0.01", "-s", "--timeout-method={}".format(meth)
- )
+ result = testdir.runpytest("--timeout=1", "-s", f"--timeout-method={meth}")
assert result.ret > 0
assert "Timeout" in result.stdout.str() + result.stderr.str()
@@ -224,7 +223,7 @@
pass
"""
)
- result = testdir.runpytest("--timeout=0.01", "-s")
+ result = testdir.runpytest("--timeout=1", "-s")
assert result.ret == 0
assert "Timeout" not in result.stdout.str() + result.stderr.str()
@@ -235,14 +234,14 @@
"""
import time, pytest
- @pytest.mark.timeout(0.01)
+ @pytest.mark.timeout(1)
def test_foo():
time.sleep(2)
assert False
"""
)
result = testdir.runpytest()
- result.stdout.fnmatch_lines(["*Failed: Timeout >0.01s*"])
+ result.stdout.fnmatch_lines(["*Failed: Timeout >1.0s*"])
def test_timeout_mark_timer(testdir):
@@ -250,7 +249,7 @@
"""
import time, pytest
- @pytest.mark.timeout(0.01)
+ @pytest.mark.timeout(1)
def test_foo():
time.sleep(2)
"""
@@ -306,7 +305,7 @@
"""
import time, pytest
- @pytest.mark.timeout(0.01, 'thread')
+ @pytest.mark.timeout(1, 'thread')
def test_foo():
time.sleep(2)
"""
@@ -341,7 +340,7 @@
testdir.makeini(
"""
[pytest]
- timeout = 0.01
+ timeout = 1
"""
)
result = testdir.runpytest()
@@ -355,7 +354,7 @@
@pytest.fixture
def slow():
- time.sleep(0.1)
+ time.sleep(2)
def test_foo(slow):
pass
@@ -364,7 +363,7 @@
testdir.makeini(
"""
[pytest]
- timeout = 0.01
+ timeout = 1
timeout_func_only = true
"""
)
@@ -384,7 +383,7 @@
testdir.makeini(
"""
[pytest]
- timeout = 0.01
+ timeout = 1
timeout_method = thread
"""
)
@@ -397,18 +396,18 @@
"""
import time, pytest
- @pytest.mark.timeout(timeout=0.05)
+ @pytest.mark.timeout(timeout=2)
class TestFoo:
- @pytest.mark.timeout(timeout=0.5)
+ @pytest.mark.timeout(timeout=3)
def test_foo_2(self):
- time.sleep(0.1)
+ time.sleep(2)
def test_foo_1(self):
- time.sleep(0.01)
+ time.sleep(1)
"""
)
- result = testdir.runpytest("--timeout=0.01", "-s")
+ result = testdir.runpytest("--timeout=1", "-s")
assert result.ret == 0
assert "Timeout" not in result.stdout.str() + result.stderr.str()
@@ -445,7 +444,7 @@
"""
import pytest, {debugging_module}
- @pytest.mark.timeout(0.1)
+ @pytest.mark.timeout(1)
def test_foo():
{debugging_module}.{debugging_set_trace}
""".format(
@@ -460,7 +459,7 @@
result = child.read().decode().lower()
if child.isalive():
child.terminate(force=True)
- assert "timeout >0.01s" not in result
+ assert "timeout >1.0s" not in result
assert "fail" not in result
@@ -483,3 +482,27 @@
module.custom_trace = custom_trace
assert pytest_timeout.is_debugging(custom_trace)
+
+
+def test_not_main_thread(testdir):
+ testdir.makepyfile(
+ """
+ import threading
+ import pytest_timeout
+
+ current_timeout_setup = pytest_timeout.timeout_setup
+
+ def new_timeout_setup(item):
+ threading.Thread(
+ target=current_timeout_setup, args=(item),
+ ).join()
+
+ pytest_timeout.timeout_setup = new_timeout_setup
+
+ def test_x(): pass
+ """
+ )
+ result = testdir.runpytest("--timeout=1")
+ result.stdout.fnmatch_lines(
+ ["timeout: 1.0s", "timeout method:*", "timeout func_only:*"]
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-timeout-1.4.2/tox.ini
new/pytest-timeout-2.0.2/tox.ini
--- old/pytest-timeout-1.4.2/tox.ini 2020-06-15 20:55:30.000000000 +0200
+++ new/pytest-timeout-2.0.2/tox.ini 2021-10-10 20:49:34.000000000 +0200
@@ -3,13 +3,14 @@
addopts = -ra
[tox]
-envlist = py27,py35,py36,py37,py38,pypy2,pypy3
+envlist = py36,py37,py38,py39,py310,pypy3
[testenv]
deps = pytest
pexpect
ipdb
pytest-cov
+ pytest-github-actions-annotate-failures
commands = pytest {posargs}
[testenv:linting]