From: Mike Bayer Date: Fri, 11 Sep 2020 20:37:56 +0000 (-0400) Subject: remote debugging X-Git-Tag: rel_1_4_0b1~110 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ce0b2f3cd1869331b6bcc971219789f3578ff705;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git remote debugging Change-Id: I3eee96df57caea70d08993287014b5795d8a3716 --- diff --git a/test/orm/declarative/test_mixin.py b/test/orm/declarative/test_mixin.py index d63c20649f..0b1416035e 100644 --- a/test/orm/declarative/test_mixin.py +++ b/test/orm/declarative/test_mixin.py @@ -1,5 +1,3 @@ -import sys - import sqlalchemy as sa from sqlalchemy import ForeignKey from sqlalchemy import func @@ -1667,6 +1665,7 @@ class DeclaredAttrTest(DeclarativeTestBase, testing.AssertsCompiledSQL): @testing.requires.predictable_gc def test_singleton_gc(self): counter = mock.Mock() + Base.registry._class_registry.clear() class Mixin(object): @@ -1684,37 +1683,29 @@ class DeclaredAttrTest(DeclarativeTestBase, testing.AssertsCompiledSQL): return column_property(cls.my_prop + 5) eq_(counter.mock_calls, [mock.call("A")]) - del A import gc - for i in range(8): - gc.collect() - - import sysconfig + del A - if hasattr(sysconfig, "get_config_vars"): - config_vars = "\n".join( - "%s=%s" % (x, sysconfig.get_config_vars()[x]) - for x in sorted(sysconfig.get_config_vars()) - ) - else: - config_vars = "" + status = "" + for i in range(8): + status += " %s" % (gc.collect(),) from sqlalchemy.orm.clsregistry import _key_is_empty - assert _key_is_empty( + if not _key_is_empty( "A", Base.registry._class_registry, lambda cls: hasattr(cls, "my_other_prop"), - ), ( - "registry keys: %s, obj: %s refcount: %s %s" - % ( + ): + actual_a = Base.registry._class_registry["A"] + refs = gc.get_referents(actual_a) + assert False, "registry keys: %s, obj: %s %s referents: %s" % ( list(Base.registry._class_registry.keys()), Base.registry._class_registry["A"], - sys.getrefcount(Base.registry._class_registry["A"]), - config_vars, + status, + refs, ) - ) def test_can_we_access_the_mixin_straight(self): class Mixin(object):