Description
Bug report
test_warnings
suite being run several times in a row fails for every run except the very first one.
To reproduce the issue: ./python -m test -v test_warnings test_warnings test_warnings
All the failures/errors appear to be caused by the test_default_action
test that fails to restore default action in the interpreter's state structure.
Running these same tests in parallel
(as opposed to running sequentially
) doesn't expose the issue (even with only 1 child being used each test suite is run in a separate process with clean interpreter's state): ./python -m test -j1 -v test_warnings test_warnings test_warnings
Error messages
0:00:00 load avg: 0.43 [2/3] test_warnings
...
test_always_after_default (test.test_warnings.CFilterTests.test_always_after_default) ... FAIL
...
test_error_after_default (test.test_warnings.CFilterTests.test_error_after_default) ... FAIL
test_filterwarnings (test.test_warnings.CFilterTests.test_filterwarnings) ... ERROR
...
test_ignore_after_default (test.test_warnings.CFilterTests.test_ignore_after_default) ... FAIL
...
test_mutate_filter_list (test.test_warnings.CFilterTests.test_mutate_filter_list) ... ERROR
...
test_default_action (test.test_warnings._WarningsTests.test_default_action) ... ERROR
...
======================================================================
ERROR: test_filterwarnings (test.test_warnings.CFilterTests.test_filterwarnings)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 286, in test_filterwarnings
self.assertEqual(str(w[-1].message), text)
~^^^^
IndexError: list index out of range
======================================================================
ERROR: test_mutate_filter_list (test.test_warnings.CFilterTests.test_mutate_filter_list)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 324, in test_mutate_filter_list
self.assertEqual(str(w[-1].message), "b")
~^^^^
IndexError: list index out of range
======================================================================
ERROR: test_default_action (test.test_warnings._WarningsTests.test_default_action)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 707, in test_default_action
self.assertEqual(w[-1].message, message)
~^^^^
IndexError: list index out of range
======================================================================
FAIL: test_always_after_default (test.test_warnings.CFilterTests.test_always_after_default)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 176, in test_always_after_default
self.assertEqual(len(w), 1)
AssertionError: 0 != 1
======================================================================
FAIL: test_error_after_default (test.test_warnings.CFilterTests.test_error_after_default)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 123, in test_error_after_default
self.assertIn("UserWarning: FilterTests.test_ignore_after_default",
AssertionError: 'UserWarning: FilterTests.test_ignore_after_default' not found in ''
======================================================================
FAIL: test_ignore_after_default (test.test_warnings.CFilterTests.test_ignore_after_default)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 151, in test_ignore_after_default
self.assertEqual(len(w), 1)
AssertionError: 0 != 1
----------------------------------------------------------------------
Ran 121 tests in 0.727s
FAILED (failures=3, errors=3)
test test_warnings failed
0:00:01 load avg: 0.43 [3/3/1] test_warnings -- test_warnings failed (3 errors, 3 failures)
...
test_always_after_default (test.test_warnings.CFilterTests.test_always_after_default) ... FAIL
...
test_error_after_default (test.test_warnings.CFilterTests.test_error_after_default) ... FAIL
test_filterwarnings (test.test_warnings.CFilterTests.test_filterwarnings) ... ERROR
...
test_ignore_after_default (test.test_warnings.CFilterTests.test_ignore_after_default) ... FAIL
...
test_mutate_filter_list (test.test_warnings.CFilterTests.test_mutate_filter_list) ... ERROR
...
test_default_action (test.test_warnings._WarningsTests.test_default_action) ... ERROR
...
======================================================================
ERROR: test_filterwarnings (test.test_warnings.CFilterTests.test_filterwarnings)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 286, in test_filterwarnings
self.assertEqual(str(w[-1].message), text)
~^^^^
IndexError: list index out of range
======================================================================
ERROR: test_mutate_filter_list (test.test_warnings.CFilterTests.test_mutate_filter_list)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 324, in test_mutate_filter_list
self.assertEqual(str(w[-1].message), "b")
~^^^^
IndexError: list index out of range
======================================================================
ERROR: test_default_action (test.test_warnings._WarningsTests.test_default_action)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 707, in test_default_action
self.assertEqual(w[-1].message, message)
~^^^^
IndexError: list index out of range
======================================================================
FAIL: test_always_after_default (test.test_warnings.CFilterTests.test_always_after_default)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 176, in test_always_after_default
self.assertEqual(len(w), 1)
AssertionError: 0 != 1
======================================================================
FAIL: test_error_after_default (test.test_warnings.CFilterTests.test_error_after_default)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 123, in test_error_after_default
self.assertIn("UserWarning: FilterTests.test_ignore_after_default",
AssertionError: 'UserWarning: FilterTests.test_ignore_after_default' not found in ''
======================================================================
FAIL: test_ignore_after_default (test.test_warnings.CFilterTests.test_ignore_after_default)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vitalii/Projects/CPython/ovchinnikov-v-a-cpython/Lib/test/test_warnings/__init__.py", line 151, in test_ignore_after_default
self.assertEqual(len(w), 1)
AssertionError: 0 != 1
----------------------------------------------------------------------
Ran 121 tests in 0.709s
FAILED (failures=3, errors=3)
test test_warnings failed
test_warnings failed (3 errors, 3 failures)
== Tests result: FAILURE ==
1 test OK.
2 tests failed:
test_warnings test_warnings
Total duration: 2.3 sec
Tests result: FAILURE
Your environment
CPython built from sources: main dde15f5879 [origin/main] gh-94808: Improve coverage of _PyBytes_FormatEx (GH-95895)
Operating system and architecture: Linux 5.15.0-46-generic #49-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux