diff options
author | Lance Stout <lancestout@gmail.com> | 2011-09-23 12:03:49 -0400 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2011-09-23 12:03:49 -0400 |
commit | 262da78ca7c5b71901f0f23111ef65156ac56463 (patch) | |
tree | b27bd7c9e42d830ea5cb13be7072c7f3c89a844e | |
parent | 0b83edf439dd4d934eb779454f865df5e46fecf8 (diff) | |
download | slixmpp-262da78ca7c5b71901f0f23111ef65156ac56463.tar.gz slixmpp-262da78ca7c5b71901f0f23111ef65156ac56463.tar.bz2 slixmpp-262da78ca7c5b71901f0f23111ef65156ac56463.tar.xz slixmpp-262da78ca7c5b71901f0f23111ef65156ac56463.zip |
Fix del_event_handler for Python3 (different semantics for filter()).
Fixes issue #103
-rw-r--r-- | sleekxmpp/xmlstream/xmlstream.py | 5 | ||||
-rw-r--r-- | tests/test_events.py | 23 |
2 files changed, 26 insertions, 2 deletions
diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py index e047dbd7..0a66a974 100644 --- a/sleekxmpp/xmlstream/xmlstream.py +++ b/sleekxmpp/xmlstream/xmlstream.py @@ -840,8 +840,9 @@ class XMLStream(object): def filter_pointers(handler): return handler[0] != pointer - self.__event_handlers[name] = filter(filter_pointers, - self.__event_handlers[name]) + self.__event_handlers[name] = list(filter( + filter_pointers, + self.__event_handlers[name])) def event_handled(self, name): """ diff --git a/tests/test_events.py b/tests/test_events.py index ea4cf8a4..fb34be30 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -48,6 +48,29 @@ class TestEvents(SleekTest): msg = "Event was not triggered the correct number of times: %s" self.failUnless(happened == [True], msg % happened) + def testAddDelAddEvent(self): + """Test adding, then removing, then adding an event handler.""" + happened = [] + + def handletestevent(event): + happened.append(True) + + self.xmpp.add_event_handler("test_event", handletestevent) + self.xmpp.event("test_event", {}) + + self.xmpp.del_event_handler("test_event", handletestevent) + # Should not trigger because it was deleted + self.xmpp.event("test_event", {}) + + self.xmpp.add_event_handler("test_event", handletestevent) + self.xmpp.event("test_event", {}) + + # Give the event queue time to process. + time.sleep(0.1) + + msg = "Event was not triggered the correct number of times: %s" + self.failUnless(happened == [True, True], msg % happened) + def testDisposableEvent(self): """Test disposable handler working, then not being triggered again.""" happened = [] |