FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-118846: Fix free-threading test failures when run sequentially by colesbury · Pull Request #118864 · python/cpython · GitHub

/ cpython Public

gh-118846: Fix free-threading test failures when run sequentially - #118864

Merged
colesbury merged 4 commits into
python:mainfrom
colesbury:gh-118846-all-tests
May 10, 2024
Merged

gh-118846: Fix free-threading test failures when run sequentially#118864
colesbury merged 4 commits into
python:mainfrom
colesbury:gh-118846-all-tests

Conversation

colesbury commented May 9, 2024
edited by bedevere-app Bot
Loading

Copy link
Copy Markdown
Contributor

The free-threaded build currently immortalizes some objects once the first thread is started. This can lead to test failures depending on the order in which tests are run. This PR addresses those failures by suppressing immortalization or skipping the affected tests.

The free-threaded build currently immortalizes some objects once the
first thread is started. This can lead to test failures depending on the
order in which tests are run. This PR addresses those failures by
suppressing immortalization or skipping the affected tests.

Copy link
Copy Markdown
Contributor Author

@hroncok - this should address the remaining test failures in conjunction with #118862

DinoV left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

LGTM!

hroncok commented May 9, 2024
edited
Loading

Copy link
Copy Markdown
Contributor

I still have:

======================================================================
ERROR: test_builtin_with_more_than_four_children (test.test_pydoc.test_pydoc.PydocDocTest.test_builtin_with_more_than_four_children)
Tests help on builtin object which have more than four child classes.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../cpython/Lib/test/test_pydoc/test_pydoc.py", line 537, in test_builtin_with_more_than_four_children
    text = doc.docclass(object)
  File ".../cpython/Lib/pydoc.py", line 1424, in docclass
    subclasses = sorted(
        (str(cls.__name__) for cls in type.__subclasses__(object)
         if not cls.__name__.startswith("_") and cls.__module__ == "builtins"),
        key=str.lower
    )
  File ".../cpython/Lib/pydoc.py", line 1426, in <genexpr>
    if not cls.__name__.startswith("_") and cls.__module__ == "builtins"),
                                            ^^^^^^^^^^^^^^
  File ".../cpython/Lib/test/test_inspect/test_inspect.py", line 775, in __module__
    raise AttributeError
AttributeError: . Did you mean: '__reduce__'?

----------------------------------------------------------------------
Ran 108 tests in 1.709s

FAILED (errors=1, skipped=3)
test test.test_pydoc.test_pydoc failed


======================================================================
FAIL: test_bug1055820c (test.test_gc.GCTogglingTests.test_bug1055820c)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../cpython/Lib/test/test_gc.py", line 1361, in test_bug1055820c
    self.fail("gc didn't happen after 10000 iterations")
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: gc didn't happen after 10000 iterations

======================================================================
FAIL: test_bug1055820d (test.test_gc.GCTogglingTests.test_bug1055820d)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../cpython/Lib/contextlib.py", line 85, in inner
    return func(*args, **kwds)
  File ".../cpython/Lib/test/test_gc.py", line 1429, in test_bug1055820d
    self.fail("gc didn't happen after 10000 iterations")
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: gc didn't happen after 10000 iterations

----------------------------------------------------------------------
Ran 49 tests in 14.476s

FAILED (failures=2, skipped=4)
test test_gc failed

Not sure if the pydoc thing is related, but the gc might.

Copy link
Copy Markdown
Contributor Author

The pydoc failure is a funny interaction between tests. In test_inspect.py, we create a class that raises an error when you access __module__:

def test_getfile_class_without_module(self):
class CM(type):
@property
def __module__(cls):
raise AttributeError

In the free-threaded build, this class is now immortalized so it's still alive later on when test_pydoc tries to generate the pydoc for all subclasses of object.

Copy link
Copy Markdown
Contributor Author

Ok, I think the test_pydoc and test_gc failures are fixed now too.

colesbury merged commit b309c8e into python:main May 10, 2024
colesbury deleted the gh-118846-all-tests branch May 10, 2024 20:29

Copy link
Copy Markdown

Thanks @colesbury for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 10, 2024
…ly (pythonGH-118864)

The free-threaded build currently immortalizes some objects once the
first thread is started. This can lead to test failures depending on the
order in which tests are run. This PR addresses those failures by
suppressing immortalization or skipping the affected tests.
(cherry picked from commit b309c8e)

Co-authored-by: Sam Gross <colesbury@gmail.com>

bedevere-app Bot commented May 10, 2024

Copy link
Copy Markdown

GH-118927 is a backport of this pull request to the 3.13 branch.

bedevere-app Bot removed the needs backport to 3.13 bugs and security fixes label May 10, 2024
colesbury added a commit that referenced this pull request May 10, 2024
…lly (GH-118864) (#118927)

The free-threaded build currently immortalizes some objects once the
first thread is started. This can lead to test failures depending on the
order in which tests are run. This PR addresses those failures by
suppressing immortalization or skipping the affected tests.
(cherry picked from commit b309c8e)

Co-authored-by: Sam Gross <colesbury@gmail.com>

hroncok commented May 10, 2024

Copy link
Copy Markdown
Contributor

This is the only one I got now:

======================================================================
ERROR: test_expr_context (test.test_ast.ASTConstructorTests.test_expr_context)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../cpython/Lib/test/test_ast.py", line 3042, in test_expr_context
    self.assertIsInstance(name.ctx, ast.Load)
                          ^^^^^^^^
AttributeError: 'Name' object has no attribute 'ctx'

----------------------------------------------------------------------
Ran 175 tests in 0.765s

FAILED (errors=1, skipped=1)

Copy link
Copy Markdown
Contributor Author

Just checking, this is from ./python -m test -W on the 3.13 branch? Is it a debug build?

Copy link
Copy Markdown
Member

Note that that AST test was only merged (and backported to 3.13) yesterday in #118854

hroncok commented May 11, 2024

Copy link
Copy Markdown
Contributor

I might have git pulled but forgot to rebuild it. Mea culpa. Trying fresh.

hroncok commented May 11, 2024

Copy link
Copy Markdown
Contributor

All is good now, thank you!

estyxx pushed a commit to estyxx/cpython that referenced this pull request Jul 17, 2024
…ly (python#118864)

The free-threaded build currently immortalizes some objects once the
first thread is started. This can lead to test failures depending on the
order in which tests are run. This PR addresses those failures by
suppressing immortalization or skipping the affected tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants


Back | FazBrowse Home | New Git URL