powerline/tests/test_configuration.py

185 lines
4.6 KiB
Python
Raw Normal View History

2014-06-24 21:36:50 +02:00
# vim:fileencoding=utf-8:noet
from __future__ import unicode_literals, absolute_import, division
2014-06-25 17:55:20 +02:00
import tests.vim as vim_module
2014-06-24 21:36:50 +02:00
import powerline as powerline_module
from tests import TestCase
from tests.lib import replace_item
2014-06-28 17:01:12 +02:00
from tests.lib.config_mock import swap_attributes, get_powerline
2014-06-25 17:55:20 +02:00
from tests.lib.config_mock import get_powerline_raw
2014-06-24 21:36:50 +02:00
from functools import wraps
from copy import deepcopy
2014-06-25 17:55:20 +02:00
import sys
import os
2014-06-24 21:36:50 +02:00
config = {
'config': {
'common': {
'dividers': {
'left': {
'hard': '>>',
'soft': '>',
},
'right': {
'hard': '<<',
'soft': '<',
},
},
'spaces': 0,
'interval': 0,
2014-06-28 17:01:12 +02:00
'watcher': 'test',
2014-06-24 21:36:50 +02:00
},
'ext': {
'test': {
'theme': 'default',
'colorscheme': 'default',
},
2014-06-25 17:55:20 +02:00
'vim': {
'theme': 'default',
'colorscheme': 'default',
},
2014-06-24 21:36:50 +02:00
},
},
'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']},
},
},
2014-06-25 17:55:20 +02:00
'colorschemes/vim/default': {
'groups': {
'environment': {'fg': 'col3', 'bg': 'col4', 'attr': ['underline']},
},
},
2014-06-24 21:36:50 +02:00
'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'],
},
],
},
},
2014-06-25 17:55:20 +02:00
'themes/vim/default': {
'default_module': 'powerline.segments.common',
'segments': {
'left': [
{
'name': 'environment',
'args': {
'variable': 'TEST',
},
},
],
},
},
2014-06-24 21:36:50 +02:00
}
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)
2014-06-25 17:55:20 +02:00
class TestVim(TestCase):
def test_environ_update(self):
# Regression test: test that segment obtains environment from vim, not
# from os.environ.
from powerline.vim import VimPowerline
with vim_module._with('environ', TEST='abc'):
with get_powerline_raw(VimPowerline) as powerline:
window = vim_module.current.window
window_id = 1
winnr = window.number
self.assertEqual(powerline.render(window, window_id, winnr), '%#Pl_3_8404992_4_192_underline#\xa0abc%#Pl_4_192_NONE_None_NONE#>>')
vim_module._environ['TEST'] = 'def'
self.assertEqual(powerline.render(window, window_id, winnr), '%#Pl_3_8404992_4_192_underline#\xa0def%#Pl_4_192_NONE_None_NONE#>>')
2014-06-24 21:36:50 +02:00
replaces = {}
def setUpModule():
global replaces
replaces = swap_attributes(globals(), powerline_module, replaces)
2014-06-25 17:55:20 +02:00
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'path')))
2014-06-24 21:36:50 +02:00
2014-06-25 17:55:20 +02:00
def tearDownModule():
global replaces
replaces = swap_attributes(globals(), powerline_module, replaces)
sys.path.pop(0)
2014-06-24 21:36:50 +02:00
if __name__ == '__main__':
from tests import main
main()