Ignore ephemeral classes in test_all_present()

Fixed a regression in the test suite where the test called
``CompareAndCopyTest::test_all_present`` would fail on some platforms due
to additional testing artifacts being detected. Pull request courtesy Nils
Philippsen.

In some circumstances, ephemeral class objects that are created within
the scope of a test method don't seem to be garbage collected directly
on exit. Filter out classes created in test modules.

Fixes: #7450
Closes: #7451
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7451
Pull-request-sha: 135a8aaba2

Change-Id: I621967bd916089dc1e3f98625fd2a852cd9fd712
(cherry picked from commit 4291e3c235569031948ebaacec4dde8776255e0e)
This commit is contained in:
Nils Philippsen
2021-12-12 18:35:03 -05:00
committed by Mike Bayer
parent 5f38ea78f3
commit 4f0bf86eec
2 changed files with 14 additions and 1 deletions
+9
View File
@@ -0,0 +1,9 @@
.. change::
:tags: bug, tests, regression
:tickets: 7450
Fixed a regression in the test suite where the test called
``CompareAndCopyTest::test_all_present`` would fail on some platforms due
to additional testing artifacts being detected. Pull request courtesy Nils
Philippsen.
+5 -1
View File
@@ -1357,6 +1357,10 @@ class CompareAndCopyTest(CoreFixtures, fixtures.TestBase):
]
def test_all_present(self):
"""test for elements that are in SQLAlchemy Core, that they are
also included in the fixtures above.
"""
need = set(
cls
for cls in class_hierarchy(ClauseElement)
@@ -1364,9 +1368,9 @@ class CompareAndCopyTest(CoreFixtures, fixtures.TestBase):
and (
"__init__" in cls.__dict__
or issubclass(cls, AliasedReturnsRows)
or "inherit_cache" not in cls.__dict__
)
and not issubclass(cls, (Annotated))
and cls.__module__.startswith("sqlalchemy.")
and "orm" not in cls.__module__
and "compiler" not in cls.__module__
and "crud" not in cls.__module__