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

