]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
test(json): fix dict registration test on crdb
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 17 Apr 2023 21:52:06 +0000 (23:52 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 2 May 2023 10:18:06 +0000 (12:18 +0200)
tests/types/test_json.py

index 24970c7121343e7b9a25c39a280ec7d2bde9d7e6..ba476adb7ecd0e16d7b38c9c75920a4a3bb72d38 100644 (file)
@@ -48,7 +48,7 @@ def test_dump(conn, val, wrapper, fmt_in):
 
 
 @pytest.mark.parametrize(
-    "fmt_in, type, dumper_name",
+    "fmt_in, pgtype, dumper_name",
     [
         ("t", "json", "JsonDumper"),
         ("b", "json", "JsonBinaryDumper"),
@@ -56,13 +56,24 @@ def test_dump(conn, val, wrapper, fmt_in):
         ("b", "jsonb", "JsonbBinaryDumper"),
     ],
 )
-def test_dump_dict(conn, fmt_in, type, dumper_name):
+def test_dump_dict(conn, fmt_in, pgtype, dumper_name):
     obj = {"foo": "bar"}
     cur = conn.cursor()
-    cur.adapters.register_dumper(dict, getattr(psycopg.types.json, dumper_name))
+    dumper = getattr(psycopg.types.json, dumper_name)
+
+    # Skip json on CRDB as the oid doesn't exist.
+    try:
+        conn.adapters.types[dumper.oid]
+    except KeyError:
+        pytest.skip(
+            f"{type(conn).__name__} doesn't have the oid {dumper.oid}"
+            f" used by {dumper.__name__}"
+        )
+
+    cur.adapters.register_dumper(dict, dumper)
     cur.execute(f"select %{fmt_in}", (obj,))
     assert cur.fetchone()[0] == obj
-    assert cur.description[0].type_code == conn.adapters.types[type].oid
+    assert cur.description[0].type_code == conn.adapters.types[pgtype].oid
 
 
 @pytest.mark.crdb_skip("json array")