Add tests for i3wm listers and workspace segment
This commit is contained in:
parent
10243ad89f
commit
623c1f85bc
|
@ -0,0 +1,227 @@
|
||||||
|
# vim:fileencoding=utf-8:noet
|
||||||
|
from __future__ import (unicode_literals, division, absolute_import, print_function)
|
||||||
|
|
||||||
|
import powerline.listers.i3wm as i3wm
|
||||||
|
|
||||||
|
from tests.lib import Args, replace_attr, Pl
|
||||||
|
from tests import TestCase
|
||||||
|
|
||||||
|
|
||||||
|
class TestI3WM(TestCase):
|
||||||
|
@staticmethod
|
||||||
|
def get_workspaces():
|
||||||
|
return iter([
|
||||||
|
{'name': '1: w1', 'output': 'LVDS1', 'focused': False, 'urgent': False, 'visible': False},
|
||||||
|
{'name': '2: w2', 'output': 'LVDS1', 'focused': False, 'urgent': False, 'visible': True},
|
||||||
|
{'name': '3: w3', 'output': 'HDMI1', 'focused': False, 'urgent': True, 'visible': True},
|
||||||
|
{'name': '4: w4', 'output': 'DVI01', 'focused': True, 'urgent': True, 'visible': True},
|
||||||
|
])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_outputs(pl):
|
||||||
|
return iter([
|
||||||
|
{'name': 'LVDS1'},
|
||||||
|
{'name': 'HDMI1'},
|
||||||
|
{'name': 'DVI01'},
|
||||||
|
])
|
||||||
|
|
||||||
|
def test_output_lister(self):
|
||||||
|
pl = Pl()
|
||||||
|
with replace_attr(i3wm, 'get_connected_xrandr_outputs', self.get_outputs):
|
||||||
|
self.assertEqual(
|
||||||
|
list(i3wm.output_lister(pl=pl, segment_info={'a': 1})),
|
||||||
|
[
|
||||||
|
({'a': 1, 'output': 'LVDS1'}, {'draw_inner_divider': None}),
|
||||||
|
({'a': 1, 'output': 'HDMI1'}, {'draw_inner_divider': None}),
|
||||||
|
({'a': 1, 'output': 'DVI01'}, {'draw_inner_divider': None}),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_workspace_lister(self):
|
||||||
|
pl = Pl()
|
||||||
|
with replace_attr(i3wm, 'get_i3_connection', lambda: Args(get_workspaces=self.get_workspaces)):
|
||||||
|
self.assertEqual(
|
||||||
|
list(i3wm.workspace_lister(pl=pl, segment_info={'a': 1})),
|
||||||
|
[
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'LVDS1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '1: w1',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': False,
|
||||||
|
'visible': False
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'LVDS1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '2: w2',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': False,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'HDMI1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '3: w3',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': True,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'DVI01',
|
||||||
|
'workspace': {
|
||||||
|
'name': '4: w4',
|
||||||
|
'focused': True,
|
||||||
|
'urgent': True,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
list(i3wm.workspace_lister(pl=pl, segment_info={'a': 1}, output='LVDS1')),
|
||||||
|
[
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'LVDS1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '1: w1',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': False,
|
||||||
|
'visible': False
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'LVDS1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '2: w2',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': False,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
list(i3wm.workspace_lister(
|
||||||
|
pl=pl,
|
||||||
|
segment_info={'a': 1, 'output': 'LVDS1'}
|
||||||
|
)),
|
||||||
|
[
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'LVDS1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '1: w1',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': False,
|
||||||
|
'visible': False
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'LVDS1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '2: w2',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': False,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
list(i3wm.workspace_lister(
|
||||||
|
pl=pl,
|
||||||
|
segment_info={'a': 1, 'output': 'LVDS1'},
|
||||||
|
output=False
|
||||||
|
)),
|
||||||
|
[
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'LVDS1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '1: w1',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': False,
|
||||||
|
'visible': False
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'LVDS1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '2: w2',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': False,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'HDMI1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '3: w3',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': True,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'DVI01',
|
||||||
|
'workspace': {
|
||||||
|
'name': '4: w4',
|
||||||
|
'focused': True,
|
||||||
|
'urgent': True,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
list(i3wm.workspace_lister(
|
||||||
|
pl=pl,
|
||||||
|
segment_info={'a': 1},
|
||||||
|
only_show=['focused', 'urgent']
|
||||||
|
)),
|
||||||
|
[
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'HDMI1',
|
||||||
|
'workspace': {
|
||||||
|
'name': '3: w3',
|
||||||
|
'focused': False,
|
||||||
|
'urgent': True,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
({
|
||||||
|
'a': 1,
|
||||||
|
'output': 'DVI01',
|
||||||
|
'workspace': {
|
||||||
|
'name': '4: w4',
|
||||||
|
'focused': True,
|
||||||
|
'urgent': True,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
}, {'draw_inner_divider': None}),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
from tests import main
|
||||||
|
main()
|
|
@ -883,14 +883,26 @@ class TestWthr(TestCommon):
|
||||||
|
|
||||||
|
|
||||||
class TestI3WM(TestCase):
|
class TestI3WM(TestCase):
|
||||||
def test_workspaces(self):
|
@staticmethod
|
||||||
pl = Pl()
|
def get_workspaces():
|
||||||
with replace_attr(i3wm, 'conn', Args(get_i3_workspaces=lambda: iter([
|
return iter([
|
||||||
{'name': '1: w1', 'output': 'LVDS1', 'focused': False, 'urgent': False, 'visible': False},
|
{'name': '1: w1', 'output': 'LVDS1', 'focused': False, 'urgent': False, 'visible': False},
|
||||||
{'name': '2: w2', 'output': 'LVDS1', 'focused': False, 'urgent': False, 'visible': True},
|
{'name': '2: w2', 'output': 'LVDS1', 'focused': False, 'urgent': False, 'visible': True},
|
||||||
{'name': '3: w3', 'output': 'HDMI1', 'focused': False, 'urgent': True, 'visible': True},
|
{'name': '3: w3', 'output': 'HDMI1', 'focused': False, 'urgent': True, 'visible': True},
|
||||||
{'name': '4: w4', 'output': 'DVI01', 'focused': True, 'urgent': True, 'visible': True},
|
{'name': '4: w4', 'output': 'DVI01', 'focused': True, 'urgent': True, 'visible': True},
|
||||||
]))):
|
])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_outputs(pl):
|
||||||
|
return iter([
|
||||||
|
{'name': 'LVDS1'},
|
||||||
|
{'name': 'HDMI1'},
|
||||||
|
{'name': 'DVI01'},
|
||||||
|
])
|
||||||
|
|
||||||
|
def test_workspaces(self):
|
||||||
|
pl = Pl()
|
||||||
|
with replace_attr(i3wm, 'get_i3_connection', lambda: Args(get_workspaces=self.get_workspaces)):
|
||||||
segment_info = {}
|
segment_info = {}
|
||||||
|
|
||||||
self.assertEqual(i3wm.workspaces(pl=pl, segment_info=segment_info), [
|
self.assertEqual(i3wm.workspaces(pl=pl, segment_info=segment_info), [
|
||||||
|
@ -936,6 +948,29 @@ class TestI3WM(TestCase):
|
||||||
{'contents': 'w2', 'highlight_groups': ['w_visible', 'workspace']},
|
{'contents': 'w2', 'highlight_groups': ['w_visible', 'workspace']},
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_workspace(self):
|
||||||
|
pl = Pl()
|
||||||
|
with replace_attr(i3wm, 'get_i3_connection', lambda: Args(get_workspaces=self.get_workspaces)):
|
||||||
|
segment_info = {}
|
||||||
|
|
||||||
|
self.assertEqual(i3wm.workspace(pl=pl, segment_info=segment_info, workspace='1: w1'), [
|
||||||
|
{'contents': '1: w1', 'highlight_groups': ['workspace']},
|
||||||
|
])
|
||||||
|
self.assertEqual(i3wm.workspace(pl=pl, segment_info=segment_info, workspace='3: w3', strip=True), [
|
||||||
|
{'contents': 'w3', 'highlight_groups': ['w_urgent', 'w_visible', 'workspace']},
|
||||||
|
])
|
||||||
|
self.assertEqual(i3wm.workspace(pl=pl, segment_info=segment_info, workspace='9: w9'), None)
|
||||||
|
self.assertEqual(i3wm.workspace(pl=pl, segment_info=segment_info), [
|
||||||
|
{'contents': '4: w4', 'highlight_groups': ['w_focused', 'w_urgent', 'w_visible', 'workspace']},
|
||||||
|
])
|
||||||
|
segment_info['workspace'] = next(self.get_workspaces())
|
||||||
|
self.assertEqual(i3wm.workspace(pl=pl, segment_info=segment_info, workspace='4: w4'), [
|
||||||
|
{'contents': '4: w4', 'highlight_groups': ['w_focused', 'w_urgent', 'w_visible', 'workspace']},
|
||||||
|
])
|
||||||
|
self.assertEqual(i3wm.workspace(pl=pl, segment_info=segment_info, strip=True), [
|
||||||
|
{'contents': 'w1', 'highlight_groups': ['workspace']},
|
||||||
|
])
|
||||||
|
|
||||||
def test_mode(self):
|
def test_mode(self):
|
||||||
pl = Pl()
|
pl = Pl()
|
||||||
self.assertEqual(i3wm.mode(pl=pl, segment_info={'mode': 'default'}), None)
|
self.assertEqual(i3wm.mode(pl=pl, segment_info={'mode': 'default'}), None)
|
||||||
|
|
Loading…
Reference in New Issue