Add some basic tests
This commit is contained in:
parent
f02807ffa4
commit
515df615bf
|
@ -4,6 +4,7 @@ from powerline.renderer import Renderer
|
||||||
from powerline.lib.config import ConfigLoader
|
from powerline.lib.config import ConfigLoader
|
||||||
from powerline import Powerline
|
from powerline import Powerline
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
from time import sleep
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,6 +97,15 @@ class SimpleRenderer(Renderer):
|
||||||
return '<{fg} {bg} {attr}>'.format(fg=fg and fg[0], bg=bg and bg[0], attr=attr)
|
return '<{fg} {bg} {attr}>'.format(fg=fg and fg[0], bg=bg and bg[0], attr=attr)
|
||||||
|
|
||||||
|
|
||||||
|
class EvenSimplerRenderer(Renderer):
|
||||||
|
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||||
|
return '{{{fg}{bg}{attr}}}'.format(
|
||||||
|
fg=fg and fg[0] or '-',
|
||||||
|
bg=bg and bg[0] or '-',
|
||||||
|
attr=attr if attr else '',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TestPowerline(Powerline):
|
class TestPowerline(Powerline):
|
||||||
_created = False
|
_created = False
|
||||||
|
|
||||||
|
@ -111,7 +121,12 @@ renderer = SimpleRenderer
|
||||||
|
|
||||||
|
|
||||||
def get_powerline(**kwargs):
|
def get_powerline(**kwargs):
|
||||||
|
global renderer
|
||||||
watcher = Watcher()
|
watcher = Watcher()
|
||||||
|
if kwargs.pop('simpler_renderer', False):
|
||||||
|
renderer = EvenSimplerRenderer
|
||||||
|
else:
|
||||||
|
renderer = SimpleRenderer
|
||||||
pl = TestPowerline(
|
pl = TestPowerline(
|
||||||
ext='test',
|
ext='test',
|
||||||
renderer_module='tests.lib.config_mock',
|
renderer_module='tests.lib.config_mock',
|
||||||
|
@ -138,3 +153,11 @@ def swap_attributes(cfg_container, powerline_module, replaces):
|
||||||
setattr(powerline_module, attr, val)
|
setattr(powerline_module, attr, val)
|
||||||
replaces[attr] = old_val
|
replaces[attr] = old_val
|
||||||
return replaces
|
return replaces
|
||||||
|
|
||||||
|
|
||||||
|
def add_watcher_events(p, *args, **kwargs):
|
||||||
|
p._watcher._reset(args)
|
||||||
|
while not p._will_create_renderer():
|
||||||
|
sleep(kwargs.get('interval', 0.1))
|
||||||
|
if not kwargs.get('wait', True):
|
||||||
|
return
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import powerline as powerline_module
|
import powerline as powerline_module
|
||||||
import time
|
from time import sleep
|
||||||
from tests import TestCase
|
from tests import TestCase
|
||||||
from tests.lib import replace_item
|
from tests.lib import replace_item
|
||||||
from tests.lib.config_mock import swap_attributes, get_powerline, pop_events
|
from tests.lib.config_mock import swap_attributes, get_powerline, pop_events, add_watcher_events
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,18 +92,6 @@ config = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def sleep(interval):
|
|
||||||
time.sleep(interval)
|
|
||||||
|
|
||||||
|
|
||||||
def add_watcher_events(p, *args, **kwargs):
|
|
||||||
p._watcher._reset(args)
|
|
||||||
while not p._will_create_renderer():
|
|
||||||
sleep(kwargs.get('interval', 0.1))
|
|
||||||
if not kwargs.get('wait', True):
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
class TestConfigReload(TestCase):
|
class TestConfigReload(TestCase):
|
||||||
def assertAccessEvents(self, *args):
|
def assertAccessEvents(self, *args):
|
||||||
self.assertEqual(set(pop_events()), set(args))
|
self.assertEqual(set(pop_events()), set(args))
|
||||||
|
|
|
@ -0,0 +1,138 @@
|
||||||
|
# vim:fileencoding=utf-8:noet
|
||||||
|
from __future__ import unicode_literals, absolute_import, division
|
||||||
|
import powerline as powerline_module
|
||||||
|
from tests import TestCase
|
||||||
|
from tests.lib import replace_item
|
||||||
|
from tests.lib.config_mock import swap_attributes, get_powerline, pop_events
|
||||||
|
from functools import wraps
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
|
|
||||||
|
config = {
|
||||||
|
'config': {
|
||||||
|
'common': {
|
||||||
|
'dividers': {
|
||||||
|
'left': {
|
||||||
|
'hard': '>>',
|
||||||
|
'soft': '>',
|
||||||
|
},
|
||||||
|
'right': {
|
||||||
|
'hard': '<<',
|
||||||
|
'soft': '<',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'spaces': 0,
|
||||||
|
'interval': 0,
|
||||||
|
},
|
||||||
|
'ext': {
|
||||||
|
'test': {
|
||||||
|
'theme': 'default',
|
||||||
|
'colorscheme': 'default',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'colors': {
|
||||||
|
'colors': {
|
||||||
|
'col1': 1,
|
||||||
|
'col2': 2,
|
||||||
|
'col3': 3,
|
||||||
|
'col4': 4,
|
||||||
|
},
|
||||||
|
'gradients': {
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'colorschemes/test/default': {
|
||||||
|
'groups': {
|
||||||
|
'str1': {'fg': 'col1', 'bg': 'col2', 'attr': ['bold']},
|
||||||
|
'str2': {'fg': 'col3', 'bg': 'col4', 'attr': ['underline']},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'themes/test/default': {
|
||||||
|
'segments': {
|
||||||
|
'left': [
|
||||||
|
{
|
||||||
|
'type': 'string',
|
||||||
|
'contents': 's',
|
||||||
|
'width': 'auto',
|
||||||
|
'highlight_group': ['str1'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'type': 'string',
|
||||||
|
'contents': 'g',
|
||||||
|
'highlight_group': ['str2'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'right': [
|
||||||
|
{
|
||||||
|
'type': 'string',
|
||||||
|
'contents': 'f',
|
||||||
|
'width': 'auto',
|
||||||
|
'align': 'right',
|
||||||
|
'highlight_group': ['str2'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def add_p_arg(func):
|
||||||
|
@wraps(func)
|
||||||
|
def f(self):
|
||||||
|
with get_powerline(run_once=True, simpler_renderer=True) as p:
|
||||||
|
func(self, p)
|
||||||
|
return f
|
||||||
|
|
||||||
|
|
||||||
|
class TestSingleLine(TestCase):
|
||||||
|
def assertRenderEqual(self, p, output, **kwargs):
|
||||||
|
self.assertEqual(p.render(**kwargs).replace(' ', ' '), output)
|
||||||
|
|
||||||
|
def assertRenderLinesEqual(self, p, output, **kwargs):
|
||||||
|
self.assertEqual([l.replace(' ', ' ') for l in p.render_above_lines(**kwargs)], output)
|
||||||
|
|
||||||
|
@add_p_arg
|
||||||
|
def test_without_above(self, p):
|
||||||
|
self.assertRenderEqual(p, '{121} s{24}>>{344}g{34}>{34}<{344}f {--}')
|
||||||
|
self.assertRenderEqual(p, '{121} s {24}>>{344}g{34}>{34}<{344}f {--}', width=10)
|
||||||
|
# self.assertRenderEqual(p, '{121} s {24}>>{344}g{34}>{34}<{344} f {--}', width=11)
|
||||||
|
self.assertEqual(list(p.render_above_lines()), [])
|
||||||
|
|
||||||
|
def test_with_above(self):
|
||||||
|
with replace_item(globals(), 'config', deepcopy(config)):
|
||||||
|
old_segments = deepcopy(config['themes/test/default']['segments'])
|
||||||
|
config['themes/test/default']['segments']['above'] = [old_segments]
|
||||||
|
with get_powerline(run_once=True, simpler_renderer=True) as p:
|
||||||
|
self.assertRenderLinesEqual(p, [
|
||||||
|
'{121} s{24}>>{344}g{34}>{34}<{344}f {--}',
|
||||||
|
])
|
||||||
|
self.assertRenderLinesEqual(p, [
|
||||||
|
'{121} s {24}>>{344}g{34}>{34}<{344}f {--}',
|
||||||
|
], width=10)
|
||||||
|
|
||||||
|
config['themes/test/default']['segments']['above'] = [old_segments] * 2
|
||||||
|
with get_powerline(run_once=True, simpler_renderer=True) as p:
|
||||||
|
self.assertRenderLinesEqual(p, [
|
||||||
|
'{121} s{24}>>{344}g{34}>{34}<{344}f {--}',
|
||||||
|
'{121} s{24}>>{344}g{34}>{34}<{344}f {--}',
|
||||||
|
])
|
||||||
|
self.assertRenderLinesEqual(p, [
|
||||||
|
'{121} s {24}>>{344}g{34}>{34}<{344}f {--}',
|
||||||
|
'{121} s {24}>>{344}g{34}>{34}<{344}f {--}',
|
||||||
|
], width=10)
|
||||||
|
|
||||||
|
|
||||||
|
replaces = {}
|
||||||
|
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
global replaces
|
||||||
|
replaces = swap_attributes(globals(), powerline_module, replaces)
|
||||||
|
|
||||||
|
|
||||||
|
tearDownModule = setUpModule
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
from tests import main
|
||||||
|
main()
|
Loading…
Reference in New Issue