From f849cbc183610dbb22999c1f0ca8e31e2bc23f79 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 25 May 2026 16:07:44 +0900 Subject: [PATCH] chore: update tests --- dzgui/init/migrate.py | 30 ++++++++++++++++++------------ tests/fixtures/columns_1 | 14 ++++++++++++++ tests/fixtures/columns_2 | 12 ++++++++++++ tests/fixtures/columns_3 | 13 +++++++++++++ tests/test_columns.py | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 tests/fixtures/columns_1 create mode 100644 tests/fixtures/columns_2 create mode 100644 tests/fixtures/columns_3 create mode 100644 tests/test_columns.py diff --git a/dzgui/init/migrate.py b/dzgui/init/migrate.py index 0ab7518..9414b4c 100644 --- a/dzgui/init/migrate.py +++ b/dzgui/init/migrate.py @@ -17,22 +17,28 @@ def has_new_config(config: Path) -> bool: return config.exists() +def convert_cols_file(res: Path) -> dict[str, int] | None: + j = read_json(res) + cols = j["cols"] + # NOTE: implies prior conversion + if "View" in cols: + return None + # NOTE: user may not have changed these widths in API 6 + try: + cols["View"] = cols.pop("Perspective") + cols["Max"] = cols.pop("Maximum") + except Exception: + pass + return j + + def migrate_cols_file(res: Path) -> None: # NOTE: filename "dzg.columns.json" is API 7 spec old_res = Path.home() / LEGACY_COLS_PATH if old_res.is_file(): - j = read_json(old_res) - cols = j["cols"] - # NOTE: implies prior conversion - if "View" in cols: - return - # NOTE: user may not have changed these widths in API 6 - try: - cols["View"] = cols.pop("Perspective") - cols["Max"] = cols.pop("Maximum") - except Exception: - pass - write_json(j, res) + j = convert_cols_file(old_res) + if j is not None: + write_json(j, res) def copy_state_files(state_path: Path) -> None: diff --git a/tests/fixtures/columns_1 b/tests/fixtures/columns_1 new file mode 100644 index 0000000..f4f6ad2 --- /dev/null +++ b/tests/fixtures/columns_1 @@ -0,0 +1,14 @@ +{ + "cols": { + "Name": 1, + "Map": 1, + "Gametime": 1, + "Players": 1, + "Queue": 1, + "IP": 1, + "Qport": 1, + "Ping": 1, + "Maximum": 1, + "Perspective": 1 + } +} diff --git a/tests/fixtures/columns_2 b/tests/fixtures/columns_2 new file mode 100644 index 0000000..5f42780 --- /dev/null +++ b/tests/fixtures/columns_2 @@ -0,0 +1,12 @@ +{ + "cols": { + "Name": 398, + "Map": 181, + "Gametime": 151, + "Players": 119, + "Queue": 96, + "IP": 247, + "Qport": 94, + "Ping": 253 + } +} diff --git a/tests/fixtures/columns_3 b/tests/fixtures/columns_3 new file mode 100644 index 0000000..15a7f9c --- /dev/null +++ b/tests/fixtures/columns_3 @@ -0,0 +1,13 @@ +{ + "cols": { + "Name": 1, + "Map": 1, + "Gametime": 1, + "Players": 1, + "Queue": 1, + "IP": 1, + "Qport": 1, + "Ping": 1, + "View": 1 + } +} diff --git a/tests/test_columns.py b/tests/test_columns.py new file mode 100644 index 0000000..e0a06f6 --- /dev/null +++ b/tests/test_columns.py @@ -0,0 +1,33 @@ +import pytest + +from dzgui.init.migrate import convert_cols_file +from tests.fixtures import fixture_path + +@pytest.fixture +def columns_with_perspective(): + return fixture_path("columns_1") + +@pytest.fixture +def columns_without_perspective(): + return fixture_path("columns_2") + +@pytest.fixture +def columns_with_view(): + return fixture_path("columns_3") + +@pytest.mark.config +def test_columns_with_perspective(columns_with_perspective): + j = convert_cols_file(columns_with_perspective) + assert "View" in j["cols"] + assert "Max" in j["cols"] + +@pytest.mark.config +def test_columns_without_perspective(columns_without_perspective): + j = convert_cols_file(columns_without_perspective) + assert "View" not in j["cols"] + assert "Max" not in j["cols"] + +@pytest.mark.config +def test_columns_with_view(columns_with_view): + j = convert_cols_file(columns_with_view) + assert j is None