]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
test(crdb): consider Decimal("Infinity") not supported in CRDB < 22
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 29 Aug 2022 01:23:03 +0000 (02:23 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 29 Aug 2022 08:19:57 +0000 (09:19 +0100)
tests/fix_faker.py

index 0c263bbb0675e00f84efcd88674bf428fbab5b20..5289d8fb619f13f110f87b3f0988775320ac0f08 100644 (file)
@@ -344,10 +344,7 @@ class Faker:
 
     def make_Decimal(self, spec):
         if random() >= 0.99:
-            if self.conn.info.server_version >= 140000:
-                return Decimal(choice(["NaN", "sNaN", "Inf", "-Inf"]))
-            else:
-                return Decimal(choice(["NaN", "sNaN"]))
+            return Decimal(choice(self._decimal_special_values()))
 
         sign = choice("+-")
         num = choice(["0.zd", "d", "d.d"])
@@ -370,6 +367,20 @@ class Faker:
         else:
             assert got == want
 
+    def _decimal_special_values(self):
+        values = ["NaN", "sNaN"]
+
+        if self.conn.info.vendor == "PostgreSQL":
+            if self.conn.info.server_version >= 140000:
+                values.extend(["Inf", "-Inf"])
+        elif self.conn.info.vendor == "CockroachDB":
+            if self.conn.info.server_version >= 220100:
+                values.extend(["Inf", "-Inf"])
+        else:
+            pytest.fail(f"unexpected vendor: {self.conn.info.vendor}")
+
+        return values
+
     def schema_Enum(self, cls):
         # TODO: can't fake those as we would need to create temporary types
         return None