summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2020-03-24 22:55:46 +0100
committerMike Bayer <mike_mp@zzzcomputing.com>2020-03-29 18:08:40 -0400
commit83eb1b23cbe5a7ee0f2534256cf16f0f865bdbbb (patch)
tree323989e9814798157538a5b59114b8010ae1b9e5 /test/sql
parent8e857e3f6beecf7510f741428d8d0ba24f5cb71b (diff)
downloadsqlalchemy-83eb1b23cbe5a7ee0f2534256cf16f0f865bdbbb.tar.gz
String compiler can now literal compile datetime objects
Add ability to literal compile a :class:`DateTime`, :class:`Date` or :class:"Time" when using the string dialect for debugging purposes. This change does not impact real dialect implementation that retain their current behavior. Fixes: #5052 Change-Id: Ia3fad2be905c6d35b0106b9a2388c7508f067e90
Diffstat (limited to 'test/sql')
-rw-r--r--test/sql/test_compiler.py16
-rw-r--r--test/sql/test_types.py23
2 files changed, 39 insertions, 0 deletions
diff --git a/test/sql/test_compiler.py b/test/sql/test_compiler.py
index ef3e5d26e..151ecb1d2 100644
--- a/test/sql/test_compiler.py
+++ b/test/sql/test_compiler.py
@@ -10,6 +10,7 @@ styling and coherent test organization.
"""
+import datetime
import decimal
from sqlalchemy import alias
@@ -3745,6 +3746,21 @@ class StringifySpecialTest(fixtures.TestBase):
"WITHIN GROUP (ORDER BY mytable.name DESC) AS anon_1 FROM mytable",
)
+ @testing.combinations(
+ ("datetime", datetime.datetime.now()),
+ ("date", datetime.date.today()),
+ ("time", datetime.time()),
+ argnames="value",
+ id_="ia",
+ )
+ def test_render_datetime(self, value):
+ lit = literal(value)
+
+ eq_ignore_whitespace(
+ str(lit.compile(compile_kwargs={"literal_binds": True})),
+ "'%s'" % value,
+ )
+
class KwargPropagationTest(fixtures.TestBase):
@classmethod
diff --git a/test/sql/test_types.py b/test/sql/test_types.py
index 9fb79958d..2af8cb325 100644
--- a/test/sql/test_types.py
+++ b/test/sql/test_types.py
@@ -3237,3 +3237,26 @@ class CallableTest(fixtures.TestBase):
)
assert isinstance(thang_table.c.name.type, Unicode)
thang_table.create()
+
+
+class LiteralTest(fixtures.TestBase):
+ __backend__ = True
+
+ @testing.combinations(
+ ("datetime", datetime.datetime.now()),
+ ("date", datetime.date.today()),
+ ("time", datetime.time()),
+ argnames="value",
+ id_="ia",
+ )
+ @testing.skip_if(lambda: testing.requires.datetime_literals)
+ def test_render_datetime(self, value):
+ lit = literal(value)
+
+ assert_raises_message(
+ NotImplementedError,
+ "Don't know how to literal-quote value.*",
+ lit.compile,
+ dialect=testing.db.dialect,
+ compile_kwargs={"literal_binds": True},
+ )