|
8 | 8 | import os |
9 | 9 |
|
10 | 10 | import kaptan |
| 11 | +import pytest |
11 | 12 |
|
12 | 13 | from tmuxp import config |
13 | 14 |
|
@@ -103,70 +104,37 @@ def test_config_to_dict(self): |
103 | 104 | ) |
104 | 105 |
|
105 | 106 |
|
106 | | -class TeamocilLayoutsTest(TestCase): |
107 | | - |
108 | | - """Import configurations from teamocil's <fixtures/layout.yml>. |
109 | | -
|
110 | | - https://github.com/remiprev/teamocil/blob/master/spec/fixtures/layouts.yml |
111 | | -
|
112 | | - LICENSE: https://github.com/remiprev/teamocil/blob/master/LICENSE |
113 | | -
|
114 | | - """ |
| 107 | +@pytest.fixture(scope='module') |
| 108 | +def multisession_config(): |
| 109 | + """Return loaded multisession teamocil config as a dictionary. |
115 | 110 |
|
| 111 | + Also prevents re-running assertion the loads the yaml, since ordering of |
| 112 | + deep list items like panes will be inconsistent.""" |
116 | 113 | teamocil_yaml = fixtures.layouts.teamocil_yaml |
| 114 | + configparser = kaptan.Kaptan(handler='yaml') |
| 115 | + test_config = configparser.import_config(teamocil_yaml) |
117 | 116 | teamocil_dict = fixtures.layouts.teamocil_dict |
118 | | - two_windows = fixtures.layouts.two_windows |
119 | | - two_windows_with_filters = fixtures.layouts.two_windows_with_filters |
120 | | - two_windows_with_custom_command_options = \ |
121 | | - fixtures.layouts.two_windows_with_custom_command_options |
122 | | - three_windows_within_a_session = \ |
123 | | - fixtures.layouts.three_windows_within_a_session |
124 | | - |
125 | | - def test_config_to_dict(self): |
126 | | - self.maxDiff = None |
127 | | - configparser = kaptan.Kaptan(handler='yaml') |
128 | | - test_config = configparser.import_config(self.teamocil_yaml) |
129 | | - yaml_to_dict = test_config.get() |
130 | | - assert yaml_to_dict == self.teamocil_dict |
131 | | - |
132 | | - assert config.import_teamocil(self.teamocil_dict['two-windows']) == \ |
133 | | - self.two_windows |
134 | | - |
135 | | - config.validate_schema( |
136 | | - config.import_teamocil( |
137 | | - self.teamocil_dict['two-windows'] |
138 | | - ) |
139 | | - ) |
140 | 117 |
|
141 | | - assert config.import_teamocil( |
142 | | - self.teamocil_dict['two-windows-with-filters'], |
143 | | - ) == self.two_windows_with_filters |
144 | | - |
145 | | - config.validate_schema( |
146 | | - config.import_teamocil( |
147 | | - self.teamocil_dict['two-windows-with-filters'] |
148 | | - ) |
| 118 | + assert test_config.get() == teamocil_dict |
| 119 | + return teamocil_dict |
| 120 | + |
| 121 | + |
| 122 | +@pytest.mark.parametrize("session_name,expected", [ |
| 123 | + ('two-windows', fixtures.layouts.two_windows), |
| 124 | + ('two-windows-with-filters', fixtures.layouts.two_windows_with_filters), |
| 125 | + ('two-windows-with-custom-command-options', |
| 126 | + fixtures.layouts.two_windows_with_custom_command_options), |
| 127 | + ('three-windows-within-a-session', |
| 128 | + fixtures.layouts.three_windows_within_a_session), |
| 129 | +]) |
| 130 | +def test_multisession_config(session_name, expected, multisession_config): |
| 131 | + # teamocil can fit multiple sessions in a config |
| 132 | + assert config.import_teamocil( |
| 133 | + multisession_config[session_name] |
| 134 | + ) == expected |
| 135 | + |
| 136 | + config.validate_schema( |
| 137 | + config.import_teamocil( |
| 138 | + multisession_config[session_name] |
149 | 139 | ) |
150 | | - |
151 | | - assert config.import_teamocil( |
152 | | - self.teamocil_dict['two-windows-with-custom-command-options'], |
153 | | - ) == self.two_windows_with_custom_command_options |
154 | | - |
155 | | - config.validate_schema( |
156 | | - config.import_teamocil( |
157 | | - self.teamocil_dict['two-windows-with-custom-command-options'] |
158 | | - ) |
159 | | - ) |
160 | | - |
161 | | - assert config.import_teamocil( |
162 | | - self.teamocil_dict['three-windows-within-a-session'], |
163 | | - ) == self.three_windows_within_a_session |
164 | | - |
165 | | - config.validate_schema( |
166 | | - config.import_teamocil( |
167 | | - self.teamocil_dict['three-windows-within-a-session'] |
168 | | - ) |
169 | | - ) |
170 | | - |
171 | | - # this configuration contains multiple sessions in a single file. |
172 | | - # tmuxp can split them into files, proceed? |
| 140 | + ) |
0 commit comments