summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-02-17 16:53:01 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2016-02-17 16:53:01 -0500
commit2965da0a5d89119787bd45ac6f5459a7b755656d (patch)
treea9444e1311b5b39d736ce1d248d464b95c27a9aa /test
parentbf1d03a9e58a0256db0b1f7389e23a6d11c4a964 (diff)
downloadsqlalchemy-2965da0a5d89119787bd45ac6f5459a7b755656d.tar.gz
- handle parameter sets that aren't correctly formed, so that
for example an exception object made within a test suite can still repr (error seen in Keystone)
Diffstat (limited to 'test')
-rw-r--r--test/engine/test_logging.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/test/engine/test_logging.py b/test/engine/test_logging.py
index efdee8aef..51ebc5250 100644
--- a/test/engine/test_logging.py
+++ b/test/engine/test_logging.py
@@ -1,4 +1,4 @@
-from sqlalchemy.testing import eq_, assert_raises_message
+from sqlalchemy.testing import eq_, assert_raises_message, eq_regex
from sqlalchemy import select
import sqlalchemy as tsa
from sqlalchemy.testing import engines
@@ -8,6 +8,7 @@ from sqlalchemy.testing import mock
from sqlalchemy.testing.util import lazy_gc
from sqlalchemy import util
+
class LogParamsTest(fixtures.TestBase):
__only_on__ = 'sqlite'
__requires__ = 'ad_hoc_engines',
@@ -106,6 +107,31 @@ class LogParamsTest(fixtures.TestBase):
)
)
+ def test_exception_format_dict_param(self):
+ exception = tsa.exc.IntegrityError("foo", {"x": "y"}, None)
+ eq_regex(
+ str(exception),
+ r"\(.*.NoneType\) None \[SQL: 'foo'\] \[parameters: {'x': 'y'}\]"
+ )
+
+ def test_exception_format_unexpected_parameter(self):
+ # test that if the parameters aren't any known type, we just
+ # run through repr()
+ exception = tsa.exc.IntegrityError("foo", "bar", "bat")
+ eq_regex(
+ str(exception),
+ r"\(.*.str\) bat \[SQL: 'foo'\] \[parameters: 'bar'\]"
+ )
+
+ def test_exception_format_unexpected_member_parameter(self):
+ # test that if the parameters aren't any known type, we just
+ # run through repr()
+ exception = tsa.exc.IntegrityError("foo", ["bar", "bat"], "hoho")
+ eq_regex(
+ str(exception),
+ r"\(.*.str\) hoho \[SQL: 'foo'\] \[parameters: \['bar', 'bat'\]\]"
+ )
+
def test_result_large_param(self):
import random
largeparam = ''.join(chr(random.randint(52, 85)) for i in range(5000))