Merge fix for issue 731 from pytest-2.7
This commit is contained in:
commit
aa2ffb9805
|
@ -55,6 +55,10 @@
|
||||||
2.7.1.dev (compared to 2.7.0)
|
2.7.1.dev (compared to 2.7.0)
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
- fix issue731: do not get confused by the braces which may be present
|
||||||
|
and unbalanced in an object's repr while collapsing False
|
||||||
|
explanations. Thanks Carl Meyer for the report and test case.
|
||||||
|
|
||||||
- fix issue553: properly handling inspect.getsourcelines failures in
|
- fix issue553: properly handling inspect.getsourcelines failures in
|
||||||
FixtureLookupError which would lead to to an internal error,
|
FixtureLookupError which would lead to to an internal error,
|
||||||
obfuscating the original problem. Thanks talljosh for initial
|
obfuscating the original problem. Thanks talljosh for initial
|
||||||
|
|
|
@ -45,13 +45,15 @@ def _collapse_false(explanation):
|
||||||
if where == -1:
|
if where == -1:
|
||||||
break
|
break
|
||||||
level = 0
|
level = 0
|
||||||
|
prev_c = explanation[start]
|
||||||
for i, c in enumerate(explanation[start:]):
|
for i, c in enumerate(explanation[start:]):
|
||||||
if c == "{":
|
if prev_c + c == "\n{":
|
||||||
level += 1
|
level += 1
|
||||||
elif c == "}":
|
elif prev_c + c == "\n}":
|
||||||
level -= 1
|
level -= 1
|
||||||
if not level:
|
if not level:
|
||||||
break
|
break
|
||||||
|
prev_c = c
|
||||||
else:
|
else:
|
||||||
raise AssertionError("unbalanced braces: %r" % (explanation,))
|
raise AssertionError("unbalanced braces: %r" % (explanation,))
|
||||||
end = start + i
|
end = start + i
|
||||||
|
|
|
@ -663,3 +663,24 @@ class TestAssertionRewriteHookDetails(object):
|
||||||
result.stdout.fnmatch_lines([
|
result.stdout.fnmatch_lines([
|
||||||
"* 1 passed*",
|
"* 1 passed*",
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
def test_issue731(testdir):
|
||||||
|
testdir.makepyfile("""
|
||||||
|
class LongReprWithBraces(object):
|
||||||
|
def __repr__(self):
|
||||||
|
return 'LongReprWithBraces({' + ('a' * 80) + '}' + ('a' * 120) + ')'
|
||||||
|
|
||||||
|
def some_method(self):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def test_long_repr():
|
||||||
|
obj = LongReprWithBraces()
|
||||||
|
assert obj.some_method()
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest()
|
||||||
|
assert 'unbalanced braces' not in result.stdout.str()
|
||||||
|
|
||||||
|
|
||||||
|
def test_collapse_false_unbalanced_braces():
|
||||||
|
util._collapse_false('some text{ False\n{False = some more text\n}')
|
||||||
|
|
Loading…
Reference in New Issue