[py-svn] commit/pytest: gutworth: put the explanation generating code in the conditional fail body (fixes #79)

Bitbucket commits-noreply at bitbucket.org
Fri Oct 14 22:26:19 CEST 2011


1 new changeset in pytest:

http://bitbucket.org/hpk42/pytest/changeset/cd8ca99f4011/
changeset:   cd8ca99f4011
user:        gutworth
date:        2011-10-14 22:26:13
summary:     put the explanation generating code in the conditional fail body (fixes #79)
affected #:  3 files (-1 bytes)

--- a/CHANGELOG	Thu Sep 29 23:44:26 2011 +0200
+++ b/CHANGELOG	Fri Oct 14 16:26:13 2011 -0400
@@ -1,6 +1,7 @@
 Changes between 2.1.2 and [next version]
 ----------------------------------------
 
+- fix issue79: rewriting failed on some comparisons in boolops
 - correctly handle zero length arguments (a la pytest '')
 - fix issue67 / junitxml now contains correct test durations, thanks ronny
 - fix issue75 / skipping test failure on jython


--- a/_pytest/assertion/rewrite.py	Thu Sep 29 23:44:26 2011 +0200
+++ b/_pytest/assertion/rewrite.py	Fri Oct 14 16:26:13 2011 -0400
@@ -491,13 +491,13 @@
         self.push_format_context()
         # Process each operand, short-circuting if needed.
         for i, v in enumerate(boolop.values):
-            self.push_format_context()
-            res, expl = self.visit(v)
-            body.append(ast.Assign([ast.Name(res_var, ast.Store())], res))
             if i:
                 fail_inner = []
                 self.on_failure.append(ast.If(cond, fail_inner, []))
                 self.on_failure = fail_inner
+            self.push_format_context()
+            res, expl = self.visit(v)
+            body.append(ast.Assign([ast.Name(res_var, ast.Store())], res))
             expl_format = self.pop_format_context(ast.Str(expl))
             call = ast.Call(app, [expl_format], [], None, None)
             self.on_failure.append(ast.Expr(call))


--- a/testing/test_assertrewrite.py	Thu Sep 29 23:44:26 2011 +0200
+++ b/testing/test_assertrewrite.py	Fri Oct 14 16:26:13 2011 -0400
@@ -145,6 +145,14 @@
             assert False or x()
         assert getmsg(f, {"x" : x}) == "assert (False or x())"
         def f():
+            assert 1 in {} and 2 in {}
+        assert getmsg(f) == "assert (1 in {})"
+        def f():
+            x = 1
+            y = 2
+            assert x in {1 : None} and y in {}
+        assert getmsg(f) == "assert (1 in {1: None} and 2 in {})"
+        def f():
             f = True
             g = False
             assert f or g

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.



More information about the pytest-commit mailing list