From 1db757a2e247f38bc569db9ad70f4ef5f0c280a1 Mon Sep 17 00:00:00 2001 From: Facetoe Date: Fri, 16 Jun 2017 14:34:24 +0700 Subject: [PATCH] Fix bug that prevented module errors being displayed in bar (#586) * Fix bug that prevented errors being shown in bar. * Add tests to ensure errors are visible in the bar. --- i3pystatus/core/modules.py | 2 +- tests/test_core_modules.py | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/i3pystatus/core/modules.py b/i3pystatus/core/modules.py index ab898f9..31dc377 100644 --- a/i3pystatus/core/modules.py +++ b/i3pystatus/core/modules.py @@ -62,8 +62,8 @@ class Module(SettingsBase): hints = {"markup": "none"} def __init__(self, *args, **kwargs): - super(Module, self).__init__(*args, **kwargs) self._output = None + super(Module, self).__init__(*args, **kwargs) self.__multi_click = MultiClickHandler(self.__button_callback_handler, self.multi_click_timeout) diff --git a/tests/test_core_modules.py b/tests/test_core_modules.py index 3d838fe..7db8489 100644 --- a/tests/test_core_modules.py +++ b/tests/test_core_modules.py @@ -2,7 +2,7 @@ import time from unittest.mock import MagicMock import pytest -from i3pystatus import IntervalModule +from i3pystatus import IntervalModule, Status from i3pystatus.core.exceptions import ConfigMissingError from i3pystatus.core.modules import is_method_of, Module @@ -162,6 +162,24 @@ def test_required_raises(): TestRequired(some_setting='foo') +def test_invalid_module_kwarg_shows_error(): + """ Ensure that when an invalid module kwarg is passed an error is shown in the bar. """ + status = Status(standalone=False) + status.register("text", foo='bar') + assert len(status.modules) > 0 + assert status.modules[0].output is not None + assert "ConfigKeyError" in status.modules[0].output['full_text'] + + +def test_missing_required_shows_error(): + """ Ensure that when an a required module parameter is missing an error is shown in the bar. """ + status = Status(standalone=False) + status.register("text") + assert len(status.modules) > 0 + assert status.modules[0].output is not None + assert "ConfigMissingError" in status.modules[0].output['full_text'] + + def test_required_defined_raises(): """ Ensure defined but unmodified required settings raise a ConfigMissingError """