From 587a542355a5532f607be7e210ee4222b5a2fd7e Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Mon, 18 Dec 2023 20:12:10 -0500 Subject: [PATCH 1/4] workflows/site: cache pip deps Signed-off-by: William Woodruff --- .github/workflows/site.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/site.yml b/.github/workflows/site.yml index d0732bd4..869ac5a7 100644 --- a/.github/workflows/site.yml +++ b/.github/workflows/site.yml @@ -21,6 +21,8 @@ jobs: - uses: actions/setup-python@v5 with: python-version: ">=3.12" + cache: "pip" + cache-dependency-path: pyproject.toml - uses: actions/setup-go@v5 with: @@ -50,7 +52,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: ">=3.11" + python-version: ">=3.12" cache: "pip" cache-dependency-path: pyproject.toml From 46cf5476d7bb5c3ff34a5ac0811a6cd170e3d275 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Mon, 18 Dec 2023 20:35:46 -0500 Subject: [PATCH 2/4] use py_markdown_table Signed-off-by: William Woodruff --- pyproject.toml | 8 +++++++- site/render-testcases.py | 26 ++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a1aea269..94355e0d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,13 @@ lint = [ ] doc = [] test = [] -site = ["mkdocs", "mkdocs-gen-files", "pymdown-extensions", "mkdocs-material"] +site = [ + "mkdocs", + "mkdocs-gen-files", + "pymdown-extensions", + "mkdocs-material", + "py-markdown-table==0.4.0", +] dev = ["limbo[doc,test,lint,site]", "twine", "wheel", "build"] [project.scripts] "limbo" = "limbo._cli:main" diff --git a/site/render-testcases.py b/site/render-testcases.py index 8cc08064..752fd5dd 100644 --- a/site/render-testcases.py +++ b/site/render-testcases.py @@ -10,6 +10,7 @@ from pathlib import Path import mkdocs_gen_files +from py_markdown_table.markdown_table import markdown_table from limbo.models import ( ActualResult, @@ -120,23 +121,16 @@ def _result_emoji(expected: ExpectedResult, actual: ActualResult): def _render_harness_results( results: list[tuple[str, TestcaseResult]], expected: ExpectedResult ) -> str: - # This is written in a very silly way because my brain was not working. - - harnesses = [] - splitters = [] - tc_results = [] - contexts = [] + data = [] for harness, tc_result in results: - harnesses.append(f"`{harness}`") - splitters.append(" - ") - tc_results.append(_result_emoji(expected, tc_result.actual_result)) - contexts.append(f"`{tc_result.context}`" if tc_result.context else "N/A") - - harness_line = f"| {" | ".join(harnesses)} | " - splitter_line = f"| {" | ".join(splitters)} | " - results_line = f"| {" | ".join(tc_results)} | " - contexts_line = f"| {" | ".join(contexts)} | " - return f"{harness_line}\n{splitter_line}\n{results_line}\n{contexts_line}" + data.append( + { + "Harness": f"`{harness}`", + "Result": _result_emoji(expected, tc_result.actual_result), + "Context": f"`{tc_result.context}`" if tc_result.context else "N/A", + } + ) + return markdown_table(data).set_params(quote=False, row_sep="markdown").get_markdown() limbo = Limbo.parse_file(LIMBO_JSON) From c9d4ca91cf8dce14f727f52c1475246d043d5624 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Mon, 18 Dec 2023 20:46:42 -0500 Subject: [PATCH 3/4] skip results if empty Signed-off-by: William Woodruff --- site/render-testcases.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/site/render-testcases.py b/site/render-testcases.py index 752fd5dd..aa27e0ee 100644 --- a/site/render-testcases.py +++ b/site/render-testcases.py @@ -121,6 +121,9 @@ def _result_emoji(expected: ExpectedResult, actual: ActualResult): def _render_harness_results( results: list[tuple[str, TestcaseResult]], expected: ExpectedResult ) -> str: + if not results: + return "" + data = [] for harness, tc_result in results: data.append( From b45d475f3b086add16a93b0bbd6395d7974503f7 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Mon, 18 Dec 2023 21:02:16 -0500 Subject: [PATCH 4/4] accelerate result lookup ~25% faster Signed-off-by: William Woodruff --- site/render-testcases.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/site/render-testcases.py b/site/render-testcases.py index aa27e0ee..8757436a 100644 --- a/site/render-testcases.py +++ b/site/render-testcases.py @@ -142,17 +142,19 @@ def _render_harness_results( else: limbo_results = [] + +# Mapping: tc_id -> [(harness_id, result)] +results_by_tc_id: dict[TestCaseID, list[tuple[str, TestcaseResult]]] = defaultdict(list) +for limbo_result in limbo_results: + for result in limbo_result.results: + results_by_tc_id[result.id].append((limbo_result.harness, result)) + + namespaces: dict[str, list[CollatedResult]] = defaultdict(list) for tc in limbo.testcases: namespace, _ = tc.id.split("::", 1) - tc_results_by_harness = [] - for result in limbo_results: - harness = result.harness - tc_result = next(r for r in result.results if r.id == tc.id) - tc_results_by_harness.append((harness, tc_result)) - - collated = CollatedResult(tc=tc, results=tc_results_by_harness) + collated = CollatedResult(tc=tc, results=results_by_tc_id[tc.id]) namespaces[namespace].append(collated) for namespace, results in namespaces.items():