[core/output] Add initial version of i3bar output

Add output handler for i3bar protocol and add some tests for it. Right
now, it only support start and end.

see #23
This commit is contained in:
Tobi-wan Kenobi 2016-12-04 12:26:20 +01:00
parent a2c6214baa
commit 6f52825ef0
5 changed files with 59 additions and 6 deletions

View file

@ -10,8 +10,8 @@ class TestEngine(unittest.TestCase):
self.testModule = "test"
self.testModuleSpec = "bumblebee.modules.{}".format(self.testModule)
self.testModules = [
{ "module": "test", "name": "a" },
{ "module": "test", "name": "b" },
{"module": "test", "name": "a"},
{"module": "test", "name": "b"},
]
def test_stop(self):
@ -27,8 +27,8 @@ class TestEngine(unittest.TestCase):
modules = self.engine.load_modules(self.testModules)
self.assertEquals(len(modules), len(self.testModules))
self.assertEquals(
[ module.__module__ for module in modules ],
[ self.testModuleSpec for module in modules ]
[module.__module__ for module in modules],
[self.testModuleSpec for module in modules]
)
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

28
tests/test_i3baroutput.py Normal file
View file

@ -0,0 +1,28 @@
# pylint: disable=C0103,C0111
import json
import unittest
import mock
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
from bumblebee.output import I3BarOutput
class TestI3BarOutput(unittest.TestCase):
def setUp(self):
self.output = I3BarOutput()
self.expectedStart = json.dumps({"version": 1, "click_events": True}) + "[\n"
self.expectedStop = "]\n"
@mock.patch("sys.stdout", new_callable=StringIO)
def test_start(self, stdout):
self.output.start()
self.assertEquals(self.expectedStart, stdout.getvalue())
@mock.patch("sys.stdout", new_callable=StringIO)
def test_stop(self, stdout):
self.output.stop()
self.assertEquals(self.expectedStop, stdout.getvalue())
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4