]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
test: more comprehensive results() tests 1081/head
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 12 Jul 2025 05:42:59 +0000 (07:42 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 12 Jul 2025 05:49:52 +0000 (07:49 +0200)
Test the records returned, not only the generator results.

tests/test_cursor_common.py
tests/test_cursor_common_async.py

index c0732c1b08b424940cae069c3a6f422b7858fed0..c5e07297acc2893063a3cb27031459df906f9527 100644 (file)
@@ -912,16 +912,27 @@ def test_row_maker_returns_none(conn):
     assert list(stream) == recs
 
 
-@pytest.mark.parametrize("count", [1, 2])
+@pytest.mark.parametrize("count", [1, 3])
 def test_results_after_execute(conn, count):
     with conn.cursor() as cur:
-        cur.execute(";".join(["select 1"] * count))
-        assert list(cur.results()) == [cur] * count
+        cur.execute(
+            ";".join((f"select * from generate_series(1, {i})" for i in range(count)))
+        )
+        ress = list((res.fetchall() for res in cur.results()))
+        assert ress == [[(j + 1,) for j in range(i)] for i in range(count)]
 
 
-@pytest.mark.parametrize("count", [0, 1, 2])
+@pytest.mark.parametrize("count", [0, 1, 3])
 @pytest.mark.parametrize("returning", [False, True])
 def test_results_after_executemany(conn, count, returning):
     with conn.cursor() as cur:
-        cur.executemany("select 1", [()] * count, returning=returning)
-        assert list(cur.results()) == [cur] * returning * count
+        cur.executemany(
+            ph(cur, "select * from generate_series(1, %s)"),
+            [(i,) for i in range(count)],
+            returning=returning,
+        )
+        ress = list((res.fetchall() for res in cur.results()))
+        if returning:
+            assert ress == [[(j + 1,) for j in range(i)] for i in range(count)]
+        else:
+            assert ress == []
index 8681175084535f6533305de8f53c79a05ed9aeda..600f254a94ce7775c35d8661619fea77c2848826 100644 (file)
@@ -920,16 +920,27 @@ async def test_row_maker_returns_none(aconn):
     assert await alist(stream) == recs
 
 
-@pytest.mark.parametrize("count", [1, 2])
+@pytest.mark.parametrize("count", [1, 3])
 async def test_results_after_execute(aconn, count):
     async with aconn.cursor() as cur:
-        await cur.execute(";".join(["select 1"] * count))
-        assert await alist(cur.results()) == [cur] * count
+        await cur.execute(
+            ";".join(f"select * from generate_series(1, {i})" for i in range(count))
+        )
+        ress = await alist(await res.fetchall() async for res in cur.results())
+        assert ress == [[(j + 1,) for j in range(i)] for i in range(count)]
 
 
-@pytest.mark.parametrize("count", [0, 1, 2])
+@pytest.mark.parametrize("count", [0, 1, 3])
 @pytest.mark.parametrize("returning", [False, True])
 async def test_results_after_executemany(aconn, count, returning):
     async with aconn.cursor() as cur:
-        await cur.executemany("select 1", [()] * count, returning=returning)
-        assert await alist(cur.results()) == [cur] * returning * count
+        await cur.executemany(
+            ph(cur, "select * from generate_series(1, %s)"),
+            [(i,) for i in range(count)],
+            returning=returning,
+        )
+        ress = await alist(await res.fetchall() async for res in cur.results())
+        if returning:
+            assert ress == [[(j + 1,) for j in range(i)] for i in range(count)]
+        else:
+            assert ress == []