summaryrefslogtreecommitdiff
path: root/test/sql/test_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/sql/test_utils.py')
-rw-r--r--test/sql/test_utils.py29
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 = []