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"}
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)

View File

@ -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 """