Skip to content

Commit 14f04fe

Browse files
committed
tests(cli): Start test grid for tmuxp load args
1 parent 9b2fd31 commit 14f04fe

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed

tests/test_cli.py

+130
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,136 @@ def test_load_symlinked_workspace(
433433
assert pane.current_path == str(realtemp)
434434

435435

436+
if t.TYPE_CHECKING:
437+
from typing_extensions import TypeAlias
438+
439+
ExpectedOutput: TypeAlias = t.Optional[t.Union[str, t.List[str]]]
440+
441+
442+
class CLILoadFixture(t.NamedTuple):
443+
test_id: str
444+
cli_args: t.List[str]
445+
config_paths: t.List[str]
446+
expected_exit_code: int
447+
expected_in_out: "ExpectedOutput" = None
448+
expected_not_in_out: "ExpectedOutput" = None
449+
expected_in_err: "ExpectedOutput" = None
450+
expected_not_in_err: "ExpectedOutput" = None
451+
452+
453+
TEST_LOAD_FIXTURES = [
454+
CLILoadFixture(
455+
test_id="dir-relative-dot-samedir",
456+
cli_args=["load", "."],
457+
config_paths=["{tmp_path}/.tmuxp.yaml"],
458+
expected_exit_code=0,
459+
expected_in_out=None,
460+
expected_not_in_out=None,
461+
),
462+
CLILoadFixture(
463+
test_id="dir-relative-dot-slash-samedir",
464+
cli_args=["load", "./"],
465+
config_paths=["{tmp_path}/.tmuxp.yaml"],
466+
expected_exit_code=0,
467+
expected_in_out=None,
468+
expected_not_in_out=None,
469+
),
470+
CLILoadFixture(
471+
test_id="dir-relative-file-samedir",
472+
cli_args=["load", "./.tmuxp.yaml"],
473+
config_paths=["{tmp_path}/.tmuxp.yaml"],
474+
expected_exit_code=0,
475+
expected_in_out=None,
476+
expected_not_in_out=None,
477+
),
478+
CLILoadFixture(
479+
test_id="filename-relative-file-samedir",
480+
cli_args=["load", "./my_config.yaml"],
481+
config_paths=["{tmp_path}/my_config.yaml"],
482+
expected_exit_code=0,
483+
expected_in_out=None,
484+
expected_not_in_out=None,
485+
),
486+
CLILoadFixture(
487+
test_id="configdir-session-name",
488+
cli_args=["load", "my_config"],
489+
config_paths=["{TMUXP_CONFIGDIR}/my_config.yaml"],
490+
expected_exit_code=0,
491+
expected_in_out=None,
492+
expected_not_in_out=None,
493+
),
494+
CLILoadFixture(
495+
test_id="configdir-absolute",
496+
cli_args=["load", "~/.config/tmuxp/my_config.yaml"],
497+
config_paths=["{TMUXP_CONFIGDIR}/my_config.yaml"],
498+
expected_exit_code=0,
499+
expected_in_out=None,
500+
expected_not_in_out=None,
501+
),
502+
]
503+
504+
505+
@pytest.mark.parametrize(
506+
list(CLILoadFixture._fields),
507+
TEST_LOAD_FIXTURES,
508+
ids=[test.test_id for test in TEST_LOAD_FIXTURES],
509+
)
510+
@pytest.mark.usefixtures("tmuxp_configdir_default")
511+
def test_load(
512+
tmp_path: pathlib.Path,
513+
tmuxp_configdir: pathlib.Path,
514+
server: "Server",
515+
session: Session,
516+
capsys: pytest.CaptureFixture,
517+
monkeypatch: pytest.MonkeyPatch,
518+
test_id: str,
519+
cli_args: t.List[str],
520+
config_paths: t.List[str],
521+
expected_exit_code: int,
522+
expected_in_out: "ExpectedOutput",
523+
expected_not_in_out: "ExpectedOutput",
524+
expected_in_err: "ExpectedOutput",
525+
expected_not_in_err: "ExpectedOutput",
526+
) -> None:
527+
assert server.socket_name is not None
528+
529+
monkeypatch.chdir(tmp_path)
530+
for config_path in config_paths:
531+
tmuxp_config = pathlib.Path(
532+
config_path.format(tmp_path=tmp_path, TMUXP_CONFIGDIR=tmuxp_configdir)
533+
)
534+
tmuxp_config.write_text(
535+
"""
536+
session_name: test
537+
windows:
538+
- window_name: test
539+
panes:
540+
-
541+
""",
542+
encoding="utf-8",
543+
)
544+
545+
try:
546+
cli.cli([*cli_args, "-d", "-L", server.socket_name])
547+
except SystemExit:
548+
pass
549+
550+
result = capsys.readouterr()
551+
output = "".join(list(result.out))
552+
553+
if expected_in_out is not None:
554+
if isinstance(expected_in_out, str):
555+
expected_in_out = [expected_in_out]
556+
for needle in expected_in_out:
557+
assert needle in output
558+
559+
if expected_not_in_out is not None:
560+
if isinstance(expected_not_in_out, str):
561+
expected_not_in_out = [expected_not_in_out]
562+
for needle in expected_not_in_out:
563+
assert needle not in output
564+
565+
436566
def test_regression_00132_session_name_with_dots(
437567
tmp_path: pathlib.Path,
438568
server: "Server",

0 commit comments

Comments
 (0)