From fab965c93b474df2a6400461fb6905e6831c0271 Mon Sep 17 00:00:00 2001 From: Reagan Lee <96998476+reaganjlee@users.noreply.github.com> Date: Tue, 26 Sep 2023 19:54:09 -0700 Subject: [PATCH] add change switch out gte vs gt --- src/_pytest/assertion/util.py | 94 +++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 9 deletions(-) diff --git a/src/_pytest/assertion/util.py b/src/_pytest/assertion/util.py index 01534797d..a7ad05635 100644 --- a/src/_pytest/assertion/util.py +++ b/src/_pytest/assertion/util.py @@ -193,6 +193,22 @@ def assertrepr_compare( elif op == "not in": if istext(left) and istext(right): explanation = _notin_text(left, right, verbose) + elif op == "!=": + if isset(left) and isset(right): + explanation = ["Both sets are equal"] + elif op == ">=": + if isset(left) and isset(right): + explanation = _compare_gte_set(left, right, verbose) + elif op == "<=": + if isset(left) and isset(right): + explanation = _compare_lte_set(left, right, verbose) + elif op == ">": + if isset(left) and isset(right): + explanation = _compare_gt_set(left, right, verbose) + elif op == "<": + if isset(left) and isset(right): + explanation = _compare_lt_set(left, right, verbose) + except outcomes.Exit: raise except Exception: @@ -392,15 +408,75 @@ def _compare_eq_set( left: AbstractSet[Any], right: AbstractSet[Any], verbose: int = 0 ) -> List[str]: explanation = [] - diff_left = left - right - diff_right = right - left - if diff_left: - explanation.append("Extra items in the left set:") - for item in diff_left: - explanation.append(saferepr(item)) - if diff_right: - explanation.append("Extra items in the right set:") - for item in diff_right: + # diff_left = _set_one_sided_diff("left", left, right) + # diff_right = _set_one_sided_diff("right", right, left) + # if diff_left: + explanation.extend(_set_one_sided_diff("left", left, right)) + # if diff_right: + explanation.extend(_set_one_sided_diff("right", right, left)) + return explanation + # explanation = [] + # diff_left = left - right + # diff_right = right - left + # if diff_left: + # explanation.append("Extra items in the left set:") + # for item in diff_left: + # explanation.append(saferepr(item)) + # if diff_right: + # explanation.append("Extra items in the right set:") + # for item in diff_right: + # explanation.append(saferepr(item)) + # return explanation + + +def _compare_gt_set( + left: AbstractSet[Any], right: AbstractSet[Any], verbose: int = 0 +) -> List[str]: + # explanation = [] + explanation = _compare_gte_set(left, right, verbose) + if not explanation: + return ["Both sets are equal"] + return explanation + + +def _compare_lt_set( + left: AbstractSet[Any], right: AbstractSet[Any], verbose: int = 0 +) -> List[str]: + # explanation = [] + explanation = _compare_lte_set(left, right, verbose) + if not explanation: + return ["Both sets are equal"] + return explanation + + +def _compare_gte_set( + left: AbstractSet[Any], right: AbstractSet[Any], verbose: int = 0 +) -> List[str]: + explanation = [] + # diff_right = _set_one_sided_diff("right", right, left) + # if diff_right: + explanation.extend(_set_one_sided_diff("right", right, left)) + return explanation + + +def _compare_lte_set( + left: AbstractSet[Any], right: AbstractSet[Any], verbose: int = 0 +) -> List[str]: + explanation = [] + # diff_left = _set_one_sided_diff("left", left, right) + # if diff_left: + explanation.extend(_set_one_sided_diff("left", left, right)) + return explanation + + +def _set_one_sided_diff( + posn: str, set1: AbstractSet[Any], set2: AbstractSet[Any] +) -> List[str]: + explanation = [] + diff = set1 - set2 + if diff: + explanation.append(f"Extra items in the {posn} set:") + for item in diff: explanation.append(saferepr(item)) return explanation