From 610cde6f8581b2eba3d1641e13a78a5600ed2c6d Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Wed, 9 Jun 2010 14:53:11 -0500 Subject: [PATCH] Interpret assignments while examining asserts corrects fixes #105 --HG-- branch : trunk --- CHANGELOG | 1 + py/_code/_assertionnew.py | 9 +++++---- testing/code/test_assertion.py | 7 +++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b17fa69df..5e8561c44 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -34,6 +34,7 @@ New features Bug fixes / Maintenance ++++++++++++++++++++++++++ +- fix issue105 assignment on the same line as a failing assertion - fix issue104 proper escaping for test names in junitxml plugin - fix issue57 -f|--looponfail to work with xpassing tests - fix pyimport() to work with directories diff --git a/py/_code/_assertionnew.py b/py/_code/_assertionnew.py index 1f6164121..e12fb932d 100644 --- a/py/_code/_assertionnew.py +++ b/py/_code/_assertionnew.py @@ -324,10 +324,11 @@ class DebugInterpreter(ast.NodeVisitor): def visit_Assign(self, assign): value_explanation, value_result = self.visit(assign.value) explanation = "... = %s" % (value_explanation,) - name = ast.Name("__exprinfo_expr", ast.Load(), assign.value.lineno, - assign.value.col_offset) - new_assign = ast.Assign(assign.targets, name, assign.lineno, - assign.col_offset) + name = ast.Name("__exprinfo_expr", ast.Load(), + lineno=assign.value.lineno, + col_offset=assign.value.col_offset) + new_assign = ast.Assign(assign.targets, name, lineno=assign.lineno, + col_offset=assign.col_offset) mod = ast.Module([new_assign]) co = self._compile(mod, "exec") try: diff --git a/testing/code/test_assertion.py b/testing/code/test_assertion.py index 4bea05504..ab28437b3 100644 --- a/testing/code/test_assertion.py +++ b/testing/code/test_assertion.py @@ -139,6 +139,13 @@ def test_assert_with_brokenrepr_arg(): if e.msg.find("broken __repr__") == -1: py.test.fail("broken __repr__ not handle correctly") +def test_multiple_statements_per_line(): + try: + a = 1; assert a == 2 + except AssertionError: + e = exvalue() + assert "assert 1 == 2" in e.msg + class TestView: