From: Mike Bayer Date: Wed, 6 Jan 2016 22:27:30 +0000 (-0500) Subject: - add limiting criteria to the JSON tests so that we don't X-Git-Tag: rel_1_1_0b1~84^2~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c8bdcab90cf52d74e9c305fc1527a1cb54f2935;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - add limiting criteria to the JSON tests so that we don't attempt integer indexed access from a key/value object nor string access from an integer-indexed array, as earlier Postgresql versions (prior to 9.4) don't allow this --- diff --git a/lib/sqlalchemy/testing/suite/test_types.py b/lib/sqlalchemy/testing/suite/test_types.py index c6e882fb53..f2103f89ab 100644 --- a/lib/sqlalchemy/testing/suite/test_types.py +++ b/lib/sqlalchemy/testing/suite/test_types.py @@ -5,7 +5,7 @@ from ..assertions import eq_ from ..config import requirements from sqlalchemy import Integer, Unicode, UnicodeText, select from sqlalchemy import Date, DateTime, Time, MetaData, String, \ - Text, Numeric, Float, literal, Boolean, cast, null, JSON + Text, Numeric, Float, literal, Boolean, cast, null, JSON, and_ from ..schema import Table, Column from ... import testing import decimal @@ -745,16 +745,29 @@ class JSONTest(_LiteralRoundTripFixture, fixtures.TablesTest): ) def test_crit_spaces_in_key(self): + name = self.tables.data_table.c.name col = self.tables.data_table.c['data'] + + # limit the rows here to avoid PG error + # "cannot extract field from a non-object", which is + # fixed in 9.4 but may exist in 9.3 self._test_index_criteria( - cast(col["key two"], String) == '"value2"', + and_( + name.in_(["r1", "r2", "r3"]), + cast(col["key two"], String) == '"value2"' + ), "r2" ) def test_crit_simple_int(self): + name = self.tables.data_table.c.name col = self.tables.data_table.c['data'] + + # limit the rows here to avoid PG error + # "cannot extract array element from a non-array", which is + # fixed in 9.4 but may exist in 9.3 self._test_index_criteria( - cast(col[1], String) == '"two"', + and_(name == 'r4', cast(col[1], String) == '"two"'), "r4" )