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.
This commit is contained in:
Facetoe 2017-06-16 14:34:24 +07:00 committed by GitHub
parent 4ec39cacb0
commit 1db757a2e2
2 changed files with 20 additions and 2 deletions

View File

@ -62,8 +62,8 @@ class Module(SettingsBase):
hints = {"markup": "none"} hints = {"markup": "none"}
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(Module, self).__init__(*args, **kwargs)
self._output = None self._output = None
super(Module, self).__init__(*args, **kwargs)
self.__multi_click = MultiClickHandler(self.__button_callback_handler, self.__multi_click = MultiClickHandler(self.__button_callback_handler,
self.multi_click_timeout) self.multi_click_timeout)

View File

@ -2,7 +2,7 @@ import time
from unittest.mock import MagicMock from unittest.mock import MagicMock
import pytest import pytest
from i3pystatus import IntervalModule from i3pystatus import IntervalModule, Status
from i3pystatus.core.exceptions import ConfigMissingError from i3pystatus.core.exceptions import ConfigMissingError
from i3pystatus.core.modules import is_method_of, Module from i3pystatus.core.modules import is_method_of, Module
@ -162,6 +162,24 @@ def test_required_raises():
TestRequired(some_setting='foo') 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(): def test_required_defined_raises():
""" Ensure defined but unmodified required settings raise a ConfigMissingError """ """ Ensure defined but unmodified required settings raise a ConfigMissingError """