def check(got, expected, expected_builtin=None): | |
if got is None: # Absence of comment is equivalent to empty comment. | |
got = "" | |
if got != expected: | |
import re | |
p = re.compile(r"^[+-]([^+-].*\S)?(\s+)$", re.M) | |
def make_trailing_spaces_visible(str): | |
def replace_trailing_spaces(match): | |
res = match.group(0) | |
spaces = match.group(2) | |
if spaces is not None: | |
res = res + "{+%d trailing spaces}" % len(spaces) | |
return res | |
return re.sub(p, replace_trailing_spaces, str) | |
from difflib import unified_diff | |
diff = unified_diff(expected.splitlines(True), | |
got.splitlines(True), "expected", "got") | |
lines = [] | |
for line in diff: | |
line = make_trailing_spaces_visible(line.strip("\r\n")) | |
lines.append(line + "\n") | |
raise RuntimeError("Comments don't match:\n" + "".join(lines)) |