Show that there is trailing white space in the output in an ugly but functional way, as without this it's impossible to determine what is the actual change at all.
26 lines
896 B
Python
26 lines
896 B
Python
def check(got, expected):
|
|
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))
|