2 new changesets in pytest: http://bitbucket.org/hpk42/pytest/changeset/cca282422755/ changeset: cca282422755 user: gutworth date: 2011-06-13 04:57:22 summary: treat local as a black box affected #: 1 file (16 bytes)
--- a/_pytest/assertion/newinterpret.py Sun Jun 12 17:07:49 2011 -0500 +++ b/_pytest/assertion/newinterpret.py Sun Jun 12 21:57:22 2011 -0500 @@ -152,8 +152,8 @@ local = self.frame.eval(co) except Exception: # have to assume it isn't - local = False - if not self.frame.is_true(local): + local = None + if local is None or not self.frame.is_true(local): return name.id, result return explanation, result http://bitbucket.org/hpk42/pytest/changeset/1c35b5d118fa/ changeset: 1c35b5d118fa user: gutworth date: 2011-06-13 05:41:58 summary: put explanation simplification in format_explanation so everyone can benefit affected #: 4 files (1.2 KB) --- a/_pytest/assertion/newinterpret.py Sun Jun 12 21:57:22 2011 -0500 +++ b/_pytest/assertion/newinterpret.py Sun Jun 12 22:41:58 2011 -0500 @@ -308,9 +308,6 @@ def visit_Assert(self, assrt): test_explanation, test_result = self.visit(assrt.test) - if test_explanation.startswith("False\n{False =") and \ - test_explanation.endswith("\n}"): - test_explanation = test_explanation[15:-2] explanation = "assert %s" % (test_explanation,) if not self.frame.is_true(test_result): try: --- a/_pytest/assertion/oldinterpret.py Sun Jun 12 21:57:22 2011 -0500 +++ b/_pytest/assertion/oldinterpret.py Sun Jun 12 22:41:58 2011 -0500 @@ -384,10 +384,6 @@ def run(self, frame): test = Interpretable(self.test) test.eval(frame) - # simplify 'assert False where False = ...' - if (test.explanation.startswith('False\n{False = ') and - test.explanation.endswith('\n}')): - test.explanation = test.explanation[15:-2] # print the result as 'assert <explanation>' self.result = test.result self.explanation = 'assert ' + test.explanation --- a/_pytest/assertion/util.py Sun Jun 12 21:57:22 2011 -0500 +++ b/_pytest/assertion/util.py Sun Jun 12 22:41:58 2011 -0500 @@ -19,6 +19,28 @@ for when one explanation needs to span multiple lines, e.g. when displaying diffs. """ + # simplify 'assert False where False = ...' + where = 0 + while True: + start = where = explanation.find("False\n{False = ", where) + if where == -1: + break + level = 0 + for i, c in enumerate(explanation[start:]): + if c == "{": + level += 1 + elif c == "}": + level -= 1 + if not level: + break + else: + raise AssertionError("unbalanced braces: %r" % (explanation,)) + end = start + i + where = end + if explanation[end - 1] == '\n': + explanation = (explanation[:start] + explanation[start+15:end-1] + + explanation[end+1:]) + where -= 17 raw_lines = (explanation or '').split('\n') # escape newlines not followed by {, } and ~ lines = [raw_lines[0]] --- a/testing/test_assertrewrite.py Sun Jun 12 21:57:22 2011 -0500 +++ b/testing/test_assertrewrite.py Sun Jun 12 22:41:58 2011 -0500 @@ -164,24 +164,19 @@ ns = {"g" : g} def f(): assert g() - assert getmsg(f, ns) == """assert False - + where False = g()""" + assert getmsg(f, ns) == """assert g()""" def f(): assert g(1) - assert getmsg(f, ns) == """assert False - + where False = g(1)""" + assert getmsg(f, ns) == """assert g(1)""" def f(): assert g(1, 2) - assert getmsg(f, ns) == """assert False - + where False = g(1, 2)""" + assert getmsg(f, ns) == """assert g(1, 2)""" def f(): assert g(1, g=42) - assert getmsg(f, ns) == """assert False - + where False = g(1, g=42)""" + assert getmsg(f, ns) == """assert g(1, g=42)""" def f(): assert g(1, 3, g=23) - assert getmsg(f, ns) == """assert False - + where False = g(1, 3, g=23)""" + assert getmsg(f, ns) == """assert g(1, 3, g=23)""" def test_attribute(self): class X(object): @@ -194,8 +189,7 @@ def f(): x.a = False assert x.a - assert getmsg(f, ns) == """assert False - + where False = x.a""" + assert getmsg(f, ns) == """assert x.a""" def test_comparisons(self): def f(): Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. _______________________________________________ py-svn mailing list py-svn@codespeak.net http://codespeak.net/mailman/listinfo/py-svn