fixup! Add syntactic highlighting to the error explanations

This commit is contained in:
Benjamin Schubert 2023-12-06 13:07:42 +00:00
parent 35f36da865
commit 4c43e11e16
1 changed files with 18 additions and 10 deletions

View File

@ -192,13 +192,12 @@ def assertrepr_compare(
right_repr = saferepr(right, maxsize=maxsize, use_ascii=use_ascii) right_repr = saferepr(right, maxsize=maxsize, use_ascii=use_ascii)
summary = f"{left_repr} {op} {right_repr}" summary = f"{left_repr} {op} {right_repr}"
highlighter = config.get_terminal_writer()._highlight
explanation = None explanation = None
try: try:
writer = config.get_terminal_writer()
if op == "==": if op == "==":
explanation = _compare_eq_any(left, right, writer._highlight, verbose) explanation = _compare_eq_any(left, right, highlighter, verbose)
elif op == "not in": elif op == "not in":
if istext(left) and istext(right): if istext(left) and istext(right):
explanation = _notin_text(left, right, verbose) explanation = _notin_text(left, right, verbose)
@ -207,16 +206,16 @@ def assertrepr_compare(
explanation = ["Both sets are equal"] explanation = ["Both sets are equal"]
elif op == ">=": elif op == ">=":
if isset(left) and isset(right): if isset(left) and isset(right):
explanation = _compare_gte_set(left, right, writer._highlight) explanation = _compare_gte_set(left, right, highlighter, verbose)
elif op == "<=": elif op == "<=":
if isset(left) and isset(right): if isset(left) and isset(right):
explanation = _compare_lte_set(left, right, writer._highlight) explanation = _compare_lte_set(left, right, highlighter, verbose)
elif op == ">": elif op == ">":
if isset(left) and isset(right): if isset(left) and isset(right):
explanation = _compare_gt_set(left, right, writer._highlight) explanation = _compare_gt_set(left, right, highlighter, verbose)
elif op == "<": elif op == "<":
if isset(left) and isset(right): if isset(left) and isset(right):
explanation = _compare_lt_set(left, right, writer._highlight) explanation = _compare_lt_set(left, right, highlighter, verbose)
except outcomes.Exit: except outcomes.Exit:
raise raise
@ -262,7 +261,7 @@ def _compare_eq_any(
elif issequence(left) and issequence(right): elif issequence(left) and issequence(right):
explanation = _compare_eq_sequence(left, right, highlighter, verbose) explanation = _compare_eq_sequence(left, right, highlighter, verbose)
elif isset(left) and isset(right): elif isset(left) and isset(right):
explanation = _compare_eq_set(left, right, highlighter) explanation = _compare_eq_set(left, right, highlighter, verbose)
elif isdict(left) and isdict(right): elif isdict(left) and isdict(right):
explanation = _compare_eq_dict(left, right, highlighter, verbose) explanation = _compare_eq_dict(left, right, highlighter, verbose)
@ -415,6 +414,7 @@ def _compare_eq_set(
left: AbstractSet[Any], left: AbstractSet[Any],
right: AbstractSet[Any], right: AbstractSet[Any],
highlighter: _HighlightFunc, highlighter: _HighlightFunc,
verbose: int = 0,
) -> List[str]: ) -> List[str]:
explanation = [] explanation = []
explanation.extend(_set_one_sided_diff("left", left, right, highlighter)) explanation.extend(_set_one_sided_diff("left", left, right, highlighter))
@ -426,6 +426,7 @@ def _compare_gt_set(
left: AbstractSet[Any], left: AbstractSet[Any],
right: AbstractSet[Any], right: AbstractSet[Any],
highlighter: _HighlightFunc, highlighter: _HighlightFunc,
verbose: int = 0,
) -> List[str]: ) -> List[str]:
explanation = _compare_gte_set(left, right, highlighter) explanation = _compare_gte_set(left, right, highlighter)
if not explanation: if not explanation:
@ -434,7 +435,10 @@ def _compare_gt_set(
def _compare_lt_set( def _compare_lt_set(
left: AbstractSet[Any], right: AbstractSet[Any], highlighter: _HighlightFunc left: AbstractSet[Any],
right: AbstractSet[Any],
highlighter: _HighlightFunc,
verbose: int = 0,
) -> List[str]: ) -> List[str]:
explanation = _compare_lte_set(left, right, highlighter) explanation = _compare_lte_set(left, right, highlighter)
if not explanation: if not explanation:
@ -446,12 +450,16 @@ def _compare_gte_set(
left: AbstractSet[Any], left: AbstractSet[Any],
right: AbstractSet[Any], right: AbstractSet[Any],
highlighter: _HighlightFunc, highlighter: _HighlightFunc,
verbose: int = 0,
) -> List[str]: ) -> List[str]:
return _set_one_sided_diff("right", right, left, highlighter) return _set_one_sided_diff("right", right, left, highlighter)
def _compare_lte_set( def _compare_lte_set(
left: AbstractSet[Any], right: AbstractSet[Any], highlighter: _HighlightFunc left: AbstractSet[Any],
right: AbstractSet[Any],
highlighter: _HighlightFunc,
verbose: int = 0,
) -> List[str]: ) -> List[str]:
return _set_one_sided_diff("left", left, right, highlighter) return _set_one_sided_diff("left", left, right, highlighter)