summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/testing/suite/test_types.py25
-rw-r--r--test/dialect/mysql/test_types.py1
-rw-r--r--test/requirements.py17
3 files changed, 32 insertions, 11 deletions
diff --git a/lib/sqlalchemy/testing/suite/test_types.py b/lib/sqlalchemy/testing/suite/test_types.py
index 83aac2850..e4819cb4d 100644
--- a/lib/sqlalchemy/testing/suite/test_types.py
+++ b/lib/sqlalchemy/testing/suite/test_types.py
@@ -860,22 +860,25 @@ class JSONTest(_LiteralRoundTripFixture, fixtures.TablesTest):
)
def test_unicode_round_trip(self):
- s = select([
- cast(
+ with config.db.connect() as conn:
+ conn.execute(
+ self.tables.data_table.insert(),
+ {
+ "name": "r1",
+ "data": {
+ util.u('réveillé'): util.u('réveillé'),
+ "data": {"k1": util.u('drôle')}
+ }
+ }
+ )
+
+ eq_(
+ conn.scalar(select([self.tables.data_table.c.data])),
{
util.u('réveillé'): util.u('réveillé'),
"data": {"k1": util.u('drôle')}
},
- self.datatype
)
- ])
- eq_(
- config.db.scalar(s),
- {
- util.u('réveillé'): util.u('réveillé'),
- "data": {"k1": util.u('drôle')}
- },
- )
def test_eval_none_flag_orm(self):
from sqlalchemy.ext.declarative import declarative_base
diff --git a/test/dialect/mysql/test_types.py b/test/dialect/mysql/test_types.py
index f1f926138..0bc9de505 100644
--- a/test/dialect/mysql/test_types.py
+++ b/test/dialect/mysql/test_types.py
@@ -607,6 +607,7 @@ class JSONTest(fixtures.TestBase):
__backend__ = True
@testing.provide_metadata
+ @testing.requires.reflects_json_type
def test_reflection(self):
Table(
diff --git a/test/requirements.py b/test/requirements.py
index 3cbc5aaad..2ef145173 100644
--- a/test/requirements.py
+++ b/test/requirements.py
@@ -663,6 +663,23 @@ class DefaultRequirements(SuiteRequirements):
@property
def json_type(self):
return only_on([
+ lambda config:
+ against(config, "mysql") and (
+ (
+ not config.db.dialect._is_mariadb and
+ against(config, "mysql >= 5.7")
+ )
+ or (
+ config.db.dialect._mariadb_normalized_version_info >=
+ (10, 2, 7)
+ )
+ ),
+ "postgresql >= 9.3"
+ ])
+
+ @property
+ def reflects_json_type(self):
+ return only_on([
lambda config: against(config, "mysql >= 5.7") and
not config.db.dialect._is_mariadb,
"postgresql >= 9.3"