[tests] Purge tests and start with a clean implementation of subprocess
Seems like subprocess and friends (Popen, communicate) are not so easy to mock cleanly. Therefore, start from scratch and carefully write test by test, until (at least) the old test coverage has been restored.
This commit is contained in:
parent
1c6122fc3f
commit
6dbe440cb5
23 changed files with 61 additions and 1240 deletions
|
@ -1,115 +0,0 @@
|
|||
# pylint: disable=C0103,C0111,W0703
|
||||
|
||||
import unittest
|
||||
from bumblebee.theme import Theme
|
||||
from bumblebee.error import ThemeLoadError
|
||||
from tests.util import MockWidget
|
||||
|
||||
class TestTheme(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.nonexistentThemeName = "no-such-theme"
|
||||
self.invalidThemeName = "test_invalid"
|
||||
self.validThemeName = "test"
|
||||
self.themedWidget = MockWidget("bla")
|
||||
self.theme = Theme(self.validThemeName)
|
||||
self.cycleTheme = Theme("test_cycle")
|
||||
self.anyWidget = MockWidget("bla")
|
||||
self.anotherWidget = MockWidget("blub")
|
||||
|
||||
data = self.theme.data()
|
||||
self.widgetTheme = "test-widget"
|
||||
self.themedWidget.module = self.widgetTheme
|
||||
self.defaultColor = data["defaults"]["fg"]
|
||||
self.defaultBgColor = data["defaults"]["bg"]
|
||||
self.widgetColor = data[self.widgetTheme]["fg"]
|
||||
self.widgetBgColor = data[self.widgetTheme]["bg"]
|
||||
self.defaultPrefix = data["defaults"]["prefix"]
|
||||
self.defaultSuffix = data["defaults"]["suffix"]
|
||||
self.widgetPrefix = data[self.widgetTheme]["prefix"]
|
||||
self.widgetSuffix = data[self.widgetTheme]["suffix"]
|
||||
|
||||
def test_load_valid_theme(self):
|
||||
try:
|
||||
Theme(self.validThemeName)
|
||||
except Exception as e:
|
||||
self.fail(e)
|
||||
|
||||
def test_load_nonexistent_theme(self):
|
||||
with self.assertRaises(ThemeLoadError):
|
||||
Theme(self.nonexistentThemeName)
|
||||
|
||||
def test_load_invalid_theme(self):
|
||||
with self.assertRaises(ThemeLoadError):
|
||||
Theme(self.invalidThemeName)
|
||||
|
||||
def test_default_prefix(self):
|
||||
self.assertEquals(self.theme.prefix(self.anyWidget), self.defaultPrefix)
|
||||
|
||||
def test_default_suffix(self):
|
||||
self.assertEquals(self.theme.suffix(self.anyWidget), self.defaultSuffix)
|
||||
|
||||
def test_widget_prefix(self):
|
||||
self.assertEquals(self.theme.prefix(self.themedWidget), self.widgetPrefix)
|
||||
|
||||
def test_widget_fg(self):
|
||||
self.assertEquals(self.theme.fg(self.anyWidget), self.defaultColor)
|
||||
self.anyWidget.module = self.widgetTheme
|
||||
self.assertEquals(self.theme.fg(self.anyWidget), self.widgetColor)
|
||||
|
||||
def test_widget_bg(self):
|
||||
self.assertEquals(self.theme.bg(self.anyWidget), self.defaultBgColor)
|
||||
self.anyWidget.module = self.widgetTheme
|
||||
self.assertEquals(self.theme.bg(self.anyWidget), self.widgetBgColor)
|
||||
|
||||
def test_absent_cycle(self):
|
||||
theme = self.theme
|
||||
try:
|
||||
theme.fg(self.anyWidget)
|
||||
theme.fg(self.anotherWidget)
|
||||
except Exception as e:
|
||||
self.fail(e)
|
||||
|
||||
def test_reset(self):
|
||||
theme = self.cycleTheme
|
||||
data = theme.data()
|
||||
theme.reset()
|
||||
self.assertEquals(theme.fg(self.anyWidget), data["cycle"][0]["fg"])
|
||||
self.assertEquals(theme.fg(self.anotherWidget), data["cycle"][1]["fg"])
|
||||
theme.reset()
|
||||
self.assertEquals(theme.fg(self.anyWidget), data["cycle"][0]["fg"])
|
||||
|
||||
def test_separator_block_width(self):
|
||||
theme = self.theme
|
||||
data = theme.data()
|
||||
|
||||
self.assertEquals(theme.separator_block_width(self.anyWidget),
|
||||
data["defaults"]["separator-block-width"]
|
||||
)
|
||||
|
||||
def test_separator(self):
|
||||
for theme in [self.theme, self.cycleTheme]:
|
||||
theme.reset()
|
||||
prev_bg = theme.bg(self.anyWidget)
|
||||
theme.bg(self.anotherWidget)
|
||||
|
||||
self.assertEquals(theme.separator_fg(self.anotherWidget), theme.bg(self.anotherWidget))
|
||||
self.assertEquals(theme.separator_bg(self.anotherWidget), prev_bg)
|
||||
|
||||
def test_state(self):
|
||||
theme = self.theme
|
||||
data = theme.data()
|
||||
|
||||
self.assertEquals(theme.fg(self.anyWidget), data["defaults"]["fg"])
|
||||
self.assertEquals(theme.bg(self.anyWidget), data["defaults"]["bg"])
|
||||
|
||||
self.anyWidget.attr_state = ["critical"]
|
||||
self.assertEquals(theme.fg(self.anyWidget), data["defaults"]["critical"]["fg"])
|
||||
self.assertEquals(theme.bg(self.anyWidget), data["defaults"]["critical"]["bg"])
|
||||
|
||||
self.themedWidget.attr_state = ["critical"]
|
||||
self.assertEquals(theme.fg(self.themedWidget), data[self.widgetTheme]["critical"]["fg"])
|
||||
# if elements are missing in the state theme, they are taken from the
|
||||
# widget theme instead (i.e. no fallback to a more general state theme)
|
||||
self.assertEquals(theme.bg(self.themedWidget), data[self.widgetTheme]["bg"])
|
||||
|
||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
Loading…
Add table
Add a link
Reference in a new issue