summaryrefslogtreecommitdiff
path: root/test/sql/test_operators.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-12-19 12:14:52 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2014-12-19 12:14:52 -0500
commitd1ac6cb33af3b105db7cdb51411e10ac3bafff1f (patch)
tree80ec9997106226b0f15ac3173144dcafebad265e /test/sql/test_operators.py
parentb92589e3a0b2bc52d842b6b543e5976b694cc214 (diff)
downloadsqlalchemy-d1ac6cb33af3b105db7cdb51411e10ac3bafff1f.tar.gz
- Fixed bug where using a :class:`.TypeDecorator` that implemented
a type that was also a :class:`.TypeDecorator` would fail with Python's "Cannot create a consistent method resolution order (MRO)" error, when any kind of SQL comparison expression were used against an object using this type.
Diffstat (limited to 'test/sql/test_operators.py')
-rw-r--r--test/sql/test_operators.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/sql/test_operators.py b/test/sql/test_operators.py
index f8ac1528f..3b8b20513 100644
--- a/test/sql/test_operators.py
+++ b/test/sql/test_operators.py
@@ -393,6 +393,31 @@ class TypeDecoratorComparatorTest(_CustomComparatorTests, fixtures.TestBase):
return MyInteger
+class TypeDecoratorTypeDecoratorComparatorTest(
+ _CustomComparatorTests, fixtures.TestBase):
+
+ def _add_override_factory(self):
+
+ class MyIntegerOne(TypeDecorator):
+ impl = Integer
+
+ class comparator_factory(TypeDecorator.Comparator):
+
+ def __init__(self, expr):
+ self.expr = expr
+
+ def __add__(self, other):
+ return self.expr.op("goofy")(other)
+
+ def __and__(self, other):
+ return self.expr.op("goofy_and")(other)
+
+ class MyIntegerTwo(TypeDecorator):
+ impl = MyIntegerOne
+
+ return MyIntegerTwo
+
+
class TypeDecoratorWVariantComparatorTest(
_CustomComparatorTests,
fixtures.TestBase):