From: Daniele Varrazzo Date: Mon, 29 Aug 2022 01:23:03 +0000 (+0100) Subject: test(crdb): consider Decimal("Infinity") not supported in CRDB < 22 X-Git-Tag: 3.1~2^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c01a0bc6bf26703aca2e227bfedc1aaab40daec;p=thirdparty%2Fpsycopg.git test(crdb): consider Decimal("Infinity") not supported in CRDB < 22 --- diff --git a/tests/fix_faker.py b/tests/fix_faker.py index 0c263bbb0..5289d8fb6 100644 --- a/tests/fix_faker.py +++ b/tests/fix_faker.py @@ -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