From 4103b186731a6e7ad1e58469a24680997db7706c Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Tue, 18 Mar 2025 04:21:28 -0400 Subject: [PATCH] chore: better test failure hints --- tests/convert/utils.py | 8 ++++++++ tests/convert_joj1/utils.py | 9 +++++++++ tests/create/utils.py | 10 ++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/tests/convert/utils.py b/tests/convert/utils.py index de694c2..4b1ae29 100644 --- a/tests/convert/utils.py +++ b/tests/convert/utils.py @@ -1,3 +1,4 @@ +import difflib import json from pathlib import Path @@ -15,4 +16,11 @@ def load_case(case_name: str) -> None: result = convert_joj3_conf(repo_conf, task_conf).model_dump( mode="json", by_alias=True, exclude_none=True ) + if result != expected_result: + result_str = json.dumps(result, indent=2, ensure_ascii=False).splitlines() + expected_str = json.dumps( + expected_result, indent=2, ensure_ascii=False + ).splitlines() + diff = "\n".join(difflib.ndiff(expected_str, result_str)) + print(f"Test case '{case_name}' failed!\nDifferences:\n{diff}") assert result == expected_result diff --git a/tests/convert_joj1/utils.py b/tests/convert_joj1/utils.py index 1be3d2a..c99136c 100644 --- a/tests/convert_joj1/utils.py +++ b/tests/convert_joj1/utils.py @@ -1,3 +1,5 @@ +import difflib +import json from pathlib import Path import tomli @@ -16,4 +18,11 @@ def load_case(case_name: str) -> None: result = convert_joj1_conf(task_yaml).model_dump( mode="json", by_alias=True, exclude_none=True ) + if result != expected_result: + result_str = json.dumps(result, indent=2, ensure_ascii=False).splitlines() + expected_str = json.dumps( + expected_result, indent=2, ensure_ascii=False + ).splitlines() + diff = "\n".join(difflib.ndiff(expected_str, result_str)) + print(f"Test case '{case_name}' failed!\nDifferences:\n{diff}") assert result == expected_result diff --git a/tests/create/utils.py b/tests/create/utils.py index 4075069..45fe305 100644 --- a/tests/create/utils.py +++ b/tests/create/utils.py @@ -1,3 +1,4 @@ +import difflib import json from pathlib import Path @@ -20,6 +21,11 @@ def load_case(case_name: str) -> None: result = create_joj3_task_conf(answers).model_dump( mode="json", by_alias=True, exclude_none=True, exclude_unset=True ) - print(result) - print(expected_result) + if result != expected_result: + result_str = json.dumps(result, indent=2, ensure_ascii=False).splitlines() + expected_str = json.dumps( + expected_result, indent=2, ensure_ascii=False + ).splitlines() + diff = "\n".join(difflib.ndiff(expected_str, result_str)) + print(f"Test case '{case_name}' failed!\nDifferences:\n{diff}") assert result == expected_result