Skip to content

test_default_action from test_warnings suite doesn't restore default action in the interpreter's state structure #96661

Closed as not planned
@ovchinnikov-v-a

Description

@ovchinnikov-v-a

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    testsTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions