diff options
| author | Federico Caselli <cfederico87@gmail.com> | 2020-03-24 22:55:46 +0100 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-03-29 18:08:40 -0400 |
| commit | 83eb1b23cbe5a7ee0f2534256cf16f0f865bdbbb (patch) | |
| tree | 323989e9814798157538a5b59114b8010ae1b9e5 /test | |
| parent | 8e857e3f6beecf7510f741428d8d0ba24f5cb71b (diff) | |
| download | sqlalchemy-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')
| -rw-r--r-- | test/sql/test_compiler.py | 16 | ||||
| -rw-r--r-- | test/sql/test_types.py | 23 |
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}, + ) |
