mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
163 lines
6.4 KiB
Python
163 lines
6.4 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from cli.meta.ci import plan
|
|
from utils.symbol_glossary import to_emoji
|
|
|
|
|
|
def _entry(
|
|
app: str,
|
|
variant: str,
|
|
mode: str,
|
|
*,
|
|
priority: bool = False,
|
|
identifier: str = "0",
|
|
covered: str = "0",
|
|
clone: bool = False,
|
|
instructions: str = "",
|
|
) -> dict:
|
|
return {
|
|
"apps": app,
|
|
"variant": variant,
|
|
"mode": mode,
|
|
"tor": "true" if variant == "0" else "false",
|
|
"vpn": "true" if mode == "swarm" else "false",
|
|
"disable": "",
|
|
"priority": "true" if priority else "false",
|
|
"instructions": instructions,
|
|
"id": identifier,
|
|
"covered": covered,
|
|
"clone": "true" if clone else "false",
|
|
"distro": "debian",
|
|
"filesystem": "zfs",
|
|
"label": f"{to_emoji(mode)}{app} {variant}",
|
|
}
|
|
|
|
|
|
_PRIORITY = [_entry("web-app-a", "0", "compose", priority=True, identifier="3")]
|
|
_REGULAR = [
|
|
_entry("web-app-b", "0", "swarm", identifier="5"),
|
|
_entry("web-app-b", "1", "compose", identifier="9"),
|
|
]
|
|
_CUT = [_entry("web-app-c", "0", "compose", identifier="11", covered="5")]
|
|
_ENTRIES = _PRIORITY + _REGULAR + _CUT
|
|
|
|
|
|
class TestCells(unittest.TestCase):
|
|
def test_a_row_in_a_chunk_reports_that_chunk(self) -> None:
|
|
rows = plan.cells(_ENTRIES, [_PRIORITY, _REGULAR])
|
|
chunk = plan._COLUMNS.index("chunk")
|
|
self.assertEqual([row[chunk] for row in rows], ["0", "1", "1", ""])
|
|
|
|
def test_a_priority_row_is_starred_not_ticked(self) -> None:
|
|
rows = plan.cells(_ENTRIES, [_PRIORITY, _REGULAR])
|
|
status = plan._COLUMNS.index("triggered")
|
|
self.assertEqual(rows[0][status], to_emoji("priority"))
|
|
self.assertEqual(rows[1][status], to_emoji("enabled"))
|
|
|
|
def test_a_row_outside_the_sweep_is_marked_disabled(self) -> None:
|
|
rows = plan.cells(_ENTRIES, [_PRIORITY])
|
|
self.assertEqual(
|
|
rows[1][plan._COLUMNS.index("triggered")], to_emoji("disabled")
|
|
)
|
|
self.assertEqual(rows[1][plan._COLUMNS.index("chunk")], "")
|
|
|
|
def test_a_clone_is_named_in_its_own_column(self) -> None:
|
|
entries = [*_ENTRIES, _entry("web-app-d", "0", "compose", clone=True)]
|
|
rows = plan.cells(entries, [_PRIORITY, _REGULAR])
|
|
clone = plan._COLUMNS.index("clone")
|
|
self.assertEqual(rows[0][clone], "")
|
|
self.assertEqual(rows[-1][clone], to_emoji("clone"))
|
|
|
|
def test_the_instructions_column_names_the_mode_the_replay_runs_in(self) -> None:
|
|
entries = [
|
|
*_ENTRIES,
|
|
_entry("web-app-d", "0", "swarm", instructions="compose"),
|
|
]
|
|
rows = plan.cells(entries, [_PRIORITY, _REGULAR])
|
|
column = plan._COLUMNS.index("instructions")
|
|
self.assertEqual(rows[0][column], "")
|
|
self.assertEqual(rows[-1][column], to_emoji("compose"))
|
|
|
|
def test_the_mode_is_rendered_as_its_glyph(self) -> None:
|
|
rows = plan.cells(_ENTRIES, [_PRIORITY, _REGULAR])
|
|
mode = plan._COLUMNS.index("mode")
|
|
self.assertEqual(rows[0][mode], to_emoji("compose"))
|
|
self.assertEqual(rows[1][mode], to_emoji("swarm"))
|
|
|
|
def test_a_covered_row_names_the_row_number_that_covers_it(self) -> None:
|
|
covered = plan._COLUMNS.index("covered_by")
|
|
rows = plan.cells(_ENTRIES, [_PRIORITY, _REGULAR])
|
|
self.assertEqual(rows[0][covered], "")
|
|
self.assertEqual(rows[3][covered], "2")
|
|
|
|
def test_a_covered_row_is_cut_instead_of_deployed(self) -> None:
|
|
rows = plan.cells(_ENTRIES, [_PRIORITY, _REGULAR])
|
|
self.assertEqual(
|
|
rows[3][plan._COLUMNS.index("triggered")], to_emoji("redundant")
|
|
)
|
|
self.assertEqual(rows[3][plan._COLUMNS.index("chunk")], "")
|
|
|
|
def test_a_clone_is_cut_as_well(self) -> None:
|
|
entries = [*_ENTRIES, _entry("web-app-d", "0", "compose", clone=True)]
|
|
rows = plan.cells(entries, [_PRIORITY, _REGULAR])
|
|
self.assertEqual(
|
|
rows[-1][plan._COLUMNS.index("triggered")], to_emoji("redundant")
|
|
)
|
|
|
|
def test_a_pinned_clone_stays_in_the_run(self) -> None:
|
|
entries = [_entry("web-app-d", "0", "compose", priority=True, clone=True)]
|
|
rows = plan.cells(entries, [entries])
|
|
self.assertEqual(
|
|
rows[0][plan._COLUMNS.index("triggered")], to_emoji("priority")
|
|
)
|
|
|
|
def test_the_id_counts_the_rows_even_when_discovery_ids_repeat(self) -> None:
|
|
identifier = plan._COLUMNS.index("id")
|
|
entries = [*_ENTRIES, _entry("web-app-a", "0", "swarm", identifier="3")]
|
|
rows = plan.cells(entries, [_PRIORITY, _REGULAR])
|
|
self.assertEqual([row[identifier] for row in rows], ["1", "2", "3", "4", "5"])
|
|
|
|
def test_the_tor_state_is_rendered_as_its_glyph(self) -> None:
|
|
rows = plan.cells(_ENTRIES, [_PRIORITY, _REGULAR])
|
|
tor = plan._COLUMNS.index("tor")
|
|
self.assertEqual(rows[0][tor], to_emoji("tor"))
|
|
self.assertEqual(rows[2][tor], to_emoji("clearnet"))
|
|
|
|
def test_every_row_carries_its_own_distro_and_filesystem_glyph(self) -> None:
|
|
rows = plan.cells(_ENTRIES, [_PRIORITY, _REGULAR])
|
|
distro = plan._COLUMNS.index("distro")
|
|
filesystem = plan._COLUMNS.index("filesystem")
|
|
self.assertTrue(all(row[distro] == to_emoji("debian") for row in rows))
|
|
self.assertTrue(all(row[filesystem] == to_emoji("zfs") for row in rows))
|
|
|
|
|
|
class TestRender(unittest.TestCase):
|
|
def _rows(self) -> list[tuple[str, ...]]:
|
|
return plan.cells(_ENTRIES, [_PRIORITY, _REGULAR])
|
|
|
|
def test_markdown_is_one_table_with_a_chunk_column(self) -> None:
|
|
out = plan.render_markdown("sweep 0", self._rows())
|
|
self.assertEqual(out.count("| ---"), 0)
|
|
self.assertEqual(out.count("\n|---"), 1)
|
|
self.assertIn(f"{to_emoji('chunk')} Chunk", out)
|
|
self.assertIn("web-app-a", out)
|
|
|
|
def test_markdown_keeps_one_line_per_row(self) -> None:
|
|
out = plan.render_markdown("sweep 0", self._rows())
|
|
body = [line for line in out.splitlines() if line.startswith("| web")]
|
|
self.assertEqual(len(body), 0)
|
|
self.assertEqual(len([ln for ln in out.splitlines() if ln.startswith("| ")]), 5)
|
|
|
|
def test_cli_pads_to_display_width(self) -> None:
|
|
out = plan.render_cli("sweep 0", self._rows())
|
|
lines = out.splitlines()
|
|
self.assertEqual(lines[0], "sweep 0")
|
|
self.assertTrue(lines[2].startswith("---"))
|
|
self.assertEqual(len(lines), 3 + len(_ENTRIES))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|