diff options
Diffstat (limited to 'test/sql/test_utils.py')
-rw-r--r-- | test/sql/test_utils.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/sql/test_utils.py b/test/sql/test_utils.py index a4b76f35d..24a149ece 100644 --- a/test/sql/test_utils.py +++ b/test/sql/test_utils.py @@ -15,6 +15,7 @@ from sqlalchemy.sql import util as sql_util from sqlalchemy.testing import assert_raises from sqlalchemy.testing import assert_raises_message from sqlalchemy.testing import eq_ +from sqlalchemy.testing import expect_raises_message from sqlalchemy.testing import fixtures @@ -57,6 +58,34 @@ class MiscTest(fixtures.TestBase): {common, calias, subset_select}, ) + def test_incompatible_options_add_clslevel(self): + class opt1(sql_base.CacheableOptions): + _cache_key_traversal = [] + foo = "bar" + + with expect_raises_message( + TypeError, + "dictionary contains attributes not covered by " + "Options class .*opt1.* .*'bar'.*", + ): + o1 = opt1 + + o1 += {"foo": "f", "bar": "b"} + + def test_incompatible_options_add_instancelevel(self): + class opt1(sql_base.CacheableOptions): + _cache_key_traversal = [] + foo = "bar" + + o1 = opt1(foo="bat") + + with expect_raises_message( + TypeError, + "dictionary contains attributes not covered by " + "Options class .*opt1.* .*'bar'.*", + ): + o1 += {"foo": "f", "bar": "b"} + def test_options_merge(self): class opt1(sql_base.CacheableOptions): _cache_key_traversal = [] |