From: Daniele Varrazzo Date: Tue, 22 Jun 2021 10:38:18 +0000 (+0100) Subject: Insist more on the GC tests X-Git-Tag: 3.0.dev0~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=733d33d6f91ad33b68e6bc0bf519a8b52d7eb621;p=thirdparty%2Fpsycopg.git Insist more on the GC tests --- diff --git a/tests/pq/test_pgconn.py b/tests/pq/test_pgconn.py index fef38eca9..f7f8b07c6 100644 --- a/tests/pq/test_pgconn.py +++ b/tests/pq/test_pgconn.py @@ -1,4 +1,3 @@ -import gc import os import ctypes import logging @@ -11,6 +10,8 @@ import psycopg3 from psycopg3 import pq import psycopg3.generators +from ..utils import gc_collect + def test_connectdb(dsn): conn = pq.PGconn.connect(dsn.encode("utf8")) @@ -87,7 +88,7 @@ def test_weakref(dsn): w = weakref.ref(conn) conn.finish() del conn - gc.collect() + gc_collect() assert w() is None diff --git a/tests/test_connection.py b/tests/test_connection.py index 024d14f15..3b4ae43c7 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1,4 +1,3 @@ -import gc import sys import time import socket @@ -13,6 +12,8 @@ from psycopg3 import Connection, Notify from psycopg3.rows import tuple_row from psycopg3.errors import UndefinedTable from psycopg3.conninfo import conninfo_to_dict + +from .utils import gc_collect from .test_cursor import my_row_factory @@ -175,7 +176,7 @@ def test_weakref(dsn): w = weakref.ref(conn) conn.close() del conn - gc.collect() + gc_collect() assert w() is None diff --git a/tests/test_connection_async.py b/tests/test_connection_async.py index 25702ffd7..cf1356164 100644 --- a/tests/test_connection_async.py +++ b/tests/test_connection_async.py @@ -1,4 +1,3 @@ -import gc import time import socket import pytest @@ -12,6 +11,8 @@ from psycopg3 import AsyncConnection, Notify from psycopg3.rows import tuple_row from psycopg3.errors import UndefinedTable from psycopg3.conninfo import conninfo_to_dict + +from .utils import gc_collect from .test_cursor import my_row_factory pytestmark = pytest.mark.asyncio @@ -180,7 +181,7 @@ async def test_weakref(dsn): w = weakref.ref(conn) await conn.close() del conn - gc.collect() + gc_collect() assert w() is None diff --git a/tests/test_copy.py b/tests/test_copy.py index e8247970e..17db186f2 100644 --- a/tests/test_copy.py +++ b/tests/test_copy.py @@ -14,6 +14,8 @@ from psycopg3.pq import Format from psycopg3.adapt import Format as PgFormat from psycopg3.types import Int4 +from .utils import gc_collect + eur = "\u20ac" sample_records = [(Int4(10), Int4(20), "hello"), (Int4(40), None, "world")] @@ -540,8 +542,7 @@ def test_copy_to_leaks(dsn, faker, fmt, method, retries): n = [] for i in range(3): work() - gc.collect() - gc.collect() + gc_collect() n.append(len(gc.get_objects())) assert ( @@ -582,8 +583,7 @@ def test_copy_from_leaks(dsn, faker, fmt, retries): n = [] for i in range(3): work() - gc.collect() - gc.collect() + gc_collect() n.append(len(gc.get_objects())) assert ( diff --git a/tests/test_copy_async.py b/tests/test_copy_async.py index 1d0b5f0bf..4675e8b77 100644 --- a/tests/test_copy_async.py +++ b/tests/test_copy_async.py @@ -13,6 +13,7 @@ from psycopg3 import errors as e from psycopg3.pq import Format from psycopg3.adapt import Format as PgFormat +from .utils import gc_collect from .test_copy import sample_text, sample_binary, sample_binary_rows # noqa from .test_copy import eur, sample_values, sample_records, sample_tabledef from .test_copy import py_to_raw @@ -519,8 +520,7 @@ async def test_copy_to_leaks(dsn, faker, fmt, method, retries): n = [] for i in range(3): await work() - gc.collect() - gc.collect() + gc_collect() n.append(len(gc.get_objects())) assert ( @@ -561,8 +561,7 @@ async def test_copy_from_leaks(dsn, faker, fmt, retries): n = [] for i in range(3): await work() - gc.collect() - gc.collect() + gc_collect() n.append(len(gc.get_objects())) assert ( diff --git a/tests/test_cursor.py b/tests/test_cursor.py index 7d3f935e5..cb89f8499 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -10,6 +10,8 @@ from psycopg3 import sql, rows from psycopg3.oids import postgres_types as builtins from psycopg3.adapt import Format +from .utils import gc_collect + def test_close(conn): cur = conn.cursor() @@ -36,7 +38,7 @@ def test_weakref(conn): w = weakref.ref(cur) cur.close() del cur - gc.collect() + gc_collect() assert w() is None @@ -576,8 +578,7 @@ def test_leak(dsn, faker, fmt, fetch, row_factory): tmp = None del cur, conn - gc.collect() - gc.collect() + gc_collect() n.append(len(gc.get_objects())) assert ( diff --git a/tests/test_cursor_async.py b/tests/test_cursor_async.py index 8ab2195e1..0a507dda1 100644 --- a/tests/test_cursor_async.py +++ b/tests/test_cursor_async.py @@ -6,6 +6,8 @@ import datetime as dt import psycopg3 from psycopg3 import sql, rows from psycopg3.adapt import Format + +from .utils import gc_collect from .test_cursor import my_row_factory pytestmark = pytest.mark.asyncio @@ -36,7 +38,7 @@ async def test_weakref(aconn): w = weakref.ref(cur) await cur.close() del cur - gc.collect() + gc_collect() assert w() is None @@ -490,8 +492,7 @@ async def test_leak(dsn, faker, fmt, fetch, row_factory): tmp = None del cur, conn - gc.collect() - gc.collect() + gc_collect() n.append(len(gc.get_objects())) assert ( diff --git a/tests/test_errors.py b/tests/test_errors.py index 37b91178b..154fee775 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -1,4 +1,3 @@ -import gc import pickle from weakref import ref @@ -7,6 +6,8 @@ import pytest from psycopg3 import pq from psycopg3 import errors as e +from .utils import gc_collect + eur = "\u20ac" @@ -163,7 +164,7 @@ def test_diag_survives_cursor(conn): del exc w = ref(cur) del cur - gc.collect() + gc_collect() assert w() is None assert diag.sqlstate == "42P01" diff --git a/tests/utils.py b/tests/utils.py index e235d6915..72e6fdad7 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,3 +1,4 @@ +import gc import re import operator @@ -67,3 +68,11 @@ def _check_version(got, want, whose_version): f"skipping test: {whose_version} version is {'.'.join(map(str, got))}" f" {revops[m.group(1)]} {'.'.join(map(str, want))}" ) + + +def gc_collect(): + """ + gc.collect(), but more insisting. + """ + for i in range(3): + gc.collect()