summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake8/plugins/notifier.py3
-rw-r--r--tests/unit/test_notifier.py14
2 files changed, 16 insertions, 1 deletions
diff --git a/flake8/plugins/notifier.py b/flake8/plugins/notifier.py
index 323ea1d..dc255c4 100644
--- a/flake8/plugins/notifier.py
+++ b/flake8/plugins/notifier.py
@@ -31,7 +31,8 @@ class Notifier(object):
path = error_code
while path:
node = self.listeners.find(path)
- for listener in node.data:
+ listeners = getattr(node, 'data', [])
+ for listener in listeners:
yield listener
path = path[:-1]
diff --git a/tests/unit/test_notifier.py b/tests/unit/test_notifier.py
index effcc88..6a162cf 100644
--- a/tests/unit/test_notifier.py
+++ b/tests/unit/test_notifier.py
@@ -38,3 +38,17 @@ class TestNotifier(object):
self.notifier.notify('E111', 'extra', 'args')
assert self.listener_map['E111'].was_notified is True
assert self.listener_map['E1'].was_notified is True
+
+ @pytest.mark.parametrize('code', ['W123', 'W12', 'W1', 'W'])
+ def test_no_listeners_for(self, code):
+ """Show that we return an empty list of listeners."""
+ assert list(self.notifier.listeners_for(code)) == []
+
+ @pytest.mark.parametrize('code,expected', [
+ ('E101', ['E101', 'E1']),
+ ('E211', ['E211', 'E2']),
+ ])
+ def test_listeners_for(self, code, expected):
+ """Verify that we retrieve the correct listeners."""
+ assert ([l.error_code for l in self.notifier.listeners_for(code)] ==
+ expected)