From f1fda8d46f80bab43e068c1cdedd2a4ccb0d8a54 Mon Sep 17 00:00:00 2001 From: David Rousselie Date: Mon, 16 Feb 2009 21:43:50 +0100 Subject: [PATCH] empty string returned by filters is considered as negative answer Ignore-this: fb7980cb649ee921d143f11729293123 darcs-hash:20090216204350-86b55-068aa4e8366ff2e5d1c7f4e4f6f99b0ae733bc8c.gz --- src/jcl/jabber/component.py | 2 +- src/jcl/jabber/tests/component.py | 47 ++++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/jcl/jabber/component.py b/src/jcl/jabber/component.py index c470ee4..aa072d0 100644 --- a/src/jcl/jabber/component.py +++ b/src/jcl/jabber/component.py @@ -862,7 +862,7 @@ class JCLComponent(Component, object): data = apply_filter_func(handler.filter, stanza, lang_class) else: data = handler.filter(stanza, lang_class) - if data is not None and data != False: + if data is not None and data != False and data != "": self.__logger.debug("Applying handler " + repr(handler)) if apply_handle_func is not None: handler_result = apply_handle_func(handler.handle, diff --git a/src/jcl/jabber/tests/component.py b/src/jcl/jabber/tests/component.py index 5ece064..75c40b2 100644 --- a/src/jcl/jabber/tests/component.py +++ b/src/jcl/jabber/tests/component.py @@ -22,6 +22,8 @@ ## import unittest +import logging +import sys import threading import time @@ -214,6 +216,45 @@ class JCLComponent_apply_registered_behavior_TestCase(JCLComponent_TestCase): self.assertEquals(result[0][0], message) self.assertEquals(result[1][0], message) + def test_apply_one_registered_behavior_return_none(self): + self.comp.stream = MockStreamNoConnect() + self.comp.stream_class = MockStreamNoConnect + message = Message(from_jid="user1@test.com", + to_jid="account11@jcl.test.com") + handler1 = HandlerMock() + handler1.filter = lambda stanza, lang_class: None + handler2 = HandlerMock() + result = self.comp.apply_registered_behavior([[handler1], [handler2]], + message) + self.assertEquals(len(result), 1) + self.assertEquals(result[0][0], message) + + def test_apply_one_registered_behavior_return_false(self): + self.comp.stream = MockStreamNoConnect() + self.comp.stream_class = MockStreamNoConnect + message = Message(from_jid="user1@test.com", + to_jid="account11@jcl.test.com") + handler1 = HandlerMock() + handler1.filter = lambda stanza, lang_class: False + handler2 = HandlerMock() + result = self.comp.apply_registered_behavior([[handler1], [handler2]], + message) + self.assertEquals(len(result), 1) + self.assertEquals(result[0][0], message) + + def test_apply_one_registered_behavior_return_empty_str(self): + self.comp.stream = MockStreamNoConnect() + self.comp.stream_class = MockStreamNoConnect + message = Message(from_jid="user1@test.com", + to_jid="account11@jcl.test.com") + handler1 = HandlerMock() + handler1.filter = lambda stanza, lang_class: "" + handler2 = HandlerMock() + result = self.comp.apply_registered_behavior([[handler1], [handler2]], + message) + self.assertEquals(len(result), 1) + self.assertEquals(result[0][0], message) + def test_apply_one_registered_behavior(self): self.comp.stream = MockStreamNoConnect() self.comp.stream_class = MockStreamNoConnect @@ -2930,7 +2971,7 @@ class JCLComponent_handle_command_TestCase(JCLComponent_TestCase): class JCLComponent_run_TestCase(JCLComponent_TestCase): """run' tests""" - + def __comp_run(self): try: self.comp.run() @@ -3344,4 +3385,8 @@ def suite(): return test_suite if __name__ == '__main__': + logger = logging.getLogger() + logger.addHandler(logging.StreamHandler()) + if '-v' in sys.argv: + logger.setLevel(logging.INFO) unittest.main(defaultTest='suite')