From 425feb0590c2793da4c4e4c3206df712dfd2302a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Forslund?= Date: Mon, 30 Sep 2019 10:51:32 +0200 Subject: [PATCH] Store correct function for once events The handler was always stored even when the event was a once event and thus was wrapped in once_wrapper. This handles the once correctly. --- mycroft/skills/mycroft_skill/event_container.py | 5 ++++- test/unittests/skills/test_event_container.py | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mycroft/skills/mycroft_skill/event_container.py b/mycroft/skills/mycroft_skill/event_container.py index fb444d005a..623ae3f602 100644 --- a/mycroft/skills/mycroft_skill/event_container.py +++ b/mycroft/skills/mycroft_skill/event_container.py @@ -138,9 +138,12 @@ class EventContainer: if handler: if once: self.bus.once(name, once_wrapper) + self.events.append((name, once_wrapper)) else: self.bus.on(name, handler) - self.events.append((name, handler)) + self.events.append((name, handler)) + + LOG.debug('Added event: {}'.format(name)) def remove(self, name): """Removes an event from bus emitter and events list. diff --git a/test/unittests/skills/test_event_container.py b/test/unittests/skills/test_event_container.py index 20d63f0c8d..272c4bd11d 100644 --- a/test/unittests/skills/test_event_container.py +++ b/test/unittests/skills/test_event_container.py @@ -32,12 +32,13 @@ class TestEventContainer(unittest.TestCase): self.assertTrue(bus.on.called) # Test add single shot event handler + len_before = len(container.events) container.add('test2', example_handler, once=True) + self.assertEqual(len_before + 1, len(container.events)) self.assertTrue(bus.once.called) # Verify correct content in event container self.assertTrue(('test1', example_handler) in container.events) - self.assertTrue(('test2', example_handler) in container.events) self.assertEqual(len(container.events), 2) def test_remove(self):