instrumented collection fires append/delete events inappropriately when assigning collection slices
Issue #834
resolved
Index: test/orm/collection.py
===================================================================
--- test/orm/collection.py (revision 3659)
+++ test/orm/collection.py (working copy)
@@ -274,10 +274,35 @@
self.assert_(e4 not in canary.data)
self.assert_(e3 in canary.data)
+ def _test_list_slice(self, typecallable, creator=entity_maker):
+ class Foo(object):
+ pass
+ canary = Canary()
+ manager.register_class(Foo)
+ manager.register_attribute(Foo, 'attr', True, extension=canary,
+ typecallable=typecallable)
+
+ obj = Foo()
+ e1 = creator()
+ e2 = creator()
+ e3 = creator()
+ obj.attr = [e2, e3](e1,)
+ assert e1 in canary.added
+ assert e2 in canary.added
+ assert e3 in canary.added
+
+ obj.attr = obj.attr[1:](1:)
+ assert e1 in canary.removed
+ assert e2 in canary.added
+ assert e3 in canary.added
+ assert e2 not in canary.removed
+ assert e3 not in canary.removed
+
def test_list(self):
self._test_adapter(list)
self._test_list(list)
self._test_list_bulk(list)
+ self._test_list_slice(list)
def test_list_subclass(self):
class MyList(list):
Comments (3)
-
reporter -
- changed status to resolved
-
reporter - removed milestone
Removing milestone: 0.4.xx (automated comment)
- Log in to comment
heres an ORM test that can go into test/orm/cascade.py: