def pytest_assertrepr_compare(config, op, left, right): if config.getoption('-v') < 2: return op = display_op_for(op) width = int(config.getoption("--diff-width")) diff_type = config.getoption("--diff-type") lhs_repr = pformat_no_color(utf8_replace(left), width) rhs_repr = pformat_no_color(utf8_replace(right), width) if diff_type == "split": output = build_full_splitdiff_output(lhs_repr, rhs_repr, op) elif diff_type == "unified": output = build_full_unidiff_output(lhs_repr, rhs_repr, op) else: # assume diff_type == "auto" so decide based on newlines if "\n" in lhs_repr and "\n" in rhs_repr: output = build_full_unidiff_output(lhs_repr, rhs_repr, op) else: output = build_full_splitdiff_output(lhs_repr, rhs_repr, op) if not config.getoption("--no-hints"): output += hints_for(op, left, right) return [utf8_replace(line) for line in output]
def find_extras(lhs, rhs, text_fn, item_marker): lhs_extras_lines = [] num_extras = 0 for item in lhs: if item not in rhs: num_extras += 1 for i, line in enumerate(pformat_no_color(item, 80).splitlines()): gutter_content = item_marker if i == 0 else " " coloured_line = "{gutter_content}{spacing}{line}".format( gutter_content=text_fn(gutter_content), spacing=" ", line=text_fn(line), ) lhs_extras_lines.append(coloured_line) return num_extras, lhs_extras_lines
def test_pformat_no_color(arg, result): assert pformat_no_color(arg, 60) == result