Skip to content

Commit 68c2a6a

Browse files
committed
!squash tests(test_options): Tests for OptionsMixin
1 parent bf572db commit 68c2a6a

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

tests/test_options.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,33 @@ class OptionDataclassTestFixture(t.NamedTuple):
362362
"xterm*": ["clipboard", "ccolour", "cstyle", "focus"],
363363
},
364364
),
365+
OptionDataclassTestFixture(
366+
test_id="command-alias",
367+
option_data=textwrap.dedent(
368+
"""
369+
command-alias[0] split-pane=split-window
370+
command-alias[1] splitp=split-window
371+
command-alias[2] "server-info=show-messages -JT"
372+
command-alias[3] "info=show-messages -JT"
373+
command-alias[4] "choose-window=choose-tree -w"
374+
command-alias[5] "choose-session=choose-tree -s"
375+
""",
376+
)
377+
.strip()
378+
.split("\n"),
379+
dataclass_attribute="command_alias",
380+
tmux_option="command-alias",
381+
expected=TmuxArray(
382+
{
383+
"split-pane": "split-window",
384+
"splitp": "split-window",
385+
"server-info": "show-messages -JT",
386+
"info": "show-messages -JT",
387+
"choose-window": "choose-tree -w",
388+
"choose-session": "choose-tree -s",
389+
},
390+
),
391+
),
365392
]
366393

367394

@@ -388,3 +415,42 @@ def test_option_dataclass_fixture(
388415
assert options
389416
assert hasattr(options, dataclass_attribute)
390417
assert getattr(options, dataclass_attribute, None) == expected
418+
419+
420+
@pytest.mark.parametrize(
421+
list(OptionDataclassTestFixture._fields),
422+
TEST_FIXTURES,
423+
ids=[test.test_id for test in TEST_FIXTURES],
424+
)
425+
def test_show_option_pane_fixture(
426+
monkeypatch: pytest.MonkeyPatch,
427+
test_id: str,
428+
option_data: list[str],
429+
tmux_option: str,
430+
expected: t.Any,
431+
dataclass_attribute: str,
432+
server: Server,
433+
) -> None:
434+
"""Test Pane.show_option(s)?."""
435+
session = server.new_session(session_name="test")
436+
window = session.new_window(window_name="test")
437+
pane = window.split_window(attach=False)
438+
439+
monkeypatch.setattr(pane, "cmd", fake_cmd(stdout=option_data))
440+
441+
result = pane.show_option(tmux_option)
442+
443+
assert result == expected
444+
445+
if expected is None:
446+
assert result is not None, (
447+
f"Expected {expected} to be {type(expected)}, got None"
448+
)
449+
450+
if isinstance(expected, dict):
451+
assert isinstance(result, dict), f'Expected dict, got "{type(result)}"'
452+
453+
for k, v in expected.items():
454+
assert k in result
455+
456+
assert result[k] == v

0 commit comments

Comments
 (0)