diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-12-19 12:14:52 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-12-19 12:14:52 -0500 |
commit | d1ac6cb33af3b105db7cdb51411e10ac3bafff1f (patch) | |
tree | 80ec9997106226b0f15ac3173144dcafebad265e /test/sql/test_operators.py | |
parent | b92589e3a0b2bc52d842b6b543e5976b694cc214 (diff) | |
download | sqlalchemy-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.py | 25 |
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): |