1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
"""Test for tmuxp tmuxinator configuration."""
from __future__ import annotations
import typing as t
import pytest
from tests.fixtures import import_tmuxinator as fixtures
from tmuxp._internal.config_reader import ConfigReader
from tmuxp.workspace import importers, validation
class TmuxinatorConfigTestFixture(t.NamedTuple):
"""Test fixture for tmuxinator config conversion tests."""
test_id: str
tmuxinator_yaml: str
tmuxinator_dict: dict[str, t.Any]
tmuxp_dict: dict[str, t.Any]
TMUXINATOR_CONFIG_TEST_FIXTURES: list[TmuxinatorConfigTestFixture] = [
TmuxinatorConfigTestFixture(
test_id="basic_config",
tmuxinator_yaml=fixtures.test1.tmuxinator_yaml,
tmuxinator_dict=fixtures.test1.tmuxinator_dict,
tmuxp_dict=fixtures.test1.expected,
),
TmuxinatorConfigTestFixture(
test_id="legacy_tabs_config", # older vers use `tabs` instead of `windows`
tmuxinator_yaml=fixtures.test2.tmuxinator_yaml,
tmuxinator_dict=fixtures.test2.tmuxinator_dict,
tmuxp_dict=fixtures.test2.expected,
),
TmuxinatorConfigTestFixture(
test_id="sample_config", # Test importing <spec/fixtures/sample.yml>
tmuxinator_yaml=fixtures.test3.tmuxinator_yaml,
tmuxinator_dict=fixtures.test3.tmuxinator_dict,
tmuxp_dict=fixtures.test3.expected,
),
]
@pytest.mark.parametrize(
list(TmuxinatorConfigTestFixture._fields),
TMUXINATOR_CONFIG_TEST_FIXTURES,
ids=[test.test_id for test in TMUXINATOR_CONFIG_TEST_FIXTURES],
)
def test_config_to_dict(
test_id: str,
tmuxinator_yaml: str,
tmuxinator_dict: dict[str, t.Any],
tmuxp_dict: dict[str, t.Any],
) -> None:
"""Test exporting tmuxinator configuration to dictionary."""
yaml_to_dict = ConfigReader._load(fmt="yaml", content=tmuxinator_yaml)
assert yaml_to_dict == tmuxinator_dict
assert importers.import_tmuxinator(tmuxinator_dict) == tmuxp_dict
validation.validate_schema(importers.import_tmuxinator(tmuxinator_dict))
|