From 167625d24dbdbbd25600a385e586d7c3297016bc Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Wed, 24 Jun 2015 21:53:52 +0200 Subject: [PATCH] simplify + fix --- _pytest/assertion/newinterpret.py | 20 +++++++++++++------- _pytest/assertion/rewrite.py | 12 ++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/_pytest/assertion/newinterpret.py b/_pytest/assertion/newinterpret.py index c8d999d48..20dd8ed5e 100644 --- a/_pytest/assertion/newinterpret.py +++ b/_pytest/assertion/newinterpret.py @@ -238,18 +238,24 @@ class DebugInterpreter(ast.NodeVisitor): arg_explanations.append(arg_explanation) for keyword in call.keywords: arg_explanation, arg_result = self.visit(keyword.value) - arg_name = "__exprinfo_%s" % (len(ns),) - ns[arg_name] = arg_result - keyword_source = "%s=%%s" % (keyword.arg) - arguments.append(keyword_source % (arg_name,)) - arg_explanations.append(keyword_source % (arg_explanation,)) - if sys.version_info <= (3,4) and call.starargs: + if keyword.arg: + arg_name = "__exprinfo_%s" % (len(ns),) + ns[arg_name] = arg_result + keyword_source = "%s=%%s" % (keyword.arg) + arguments.append(keyword_source % (arg_name,)) + arg_explanations.append(keyword_source % (arg_explanation,)) + else: # starargs in 3.5+ + arg_name = "__exprinfo_star" + ns[arg_name] = arg_result + arguments.append("*%s" % (arg_name,)) + arg_explanations.append("*%s" % (arg_explanation,)) + if getattr(call, 'starargs', None): # no starargs in 3.5 arg_explanation, arg_result = self.visit(call.starargs) arg_name = "__exprinfo_star" ns[arg_name] = arg_result arguments.append("*%s" % (arg_name,)) arg_explanations.append("*%s" % (arg_explanation,)) - if sys.version_info <= (3,4) and call.kwargs: + if call.kwargs: arg_explanation, arg_result = self.visit(call.kwargs) arg_name = "__exprinfo_kwds" ns[arg_name] = arg_result diff --git a/_pytest/assertion/rewrite.py b/_pytest/assertion/rewrite.py index cc881fb1a..fae313e30 100644 --- a/_pytest/assertion/rewrite.py +++ b/_pytest/assertion/rewrite.py @@ -774,22 +774,18 @@ class AssertionRewriter(ast.NodeVisitor): new_args = [] new_kwargs = [] for arg in call.args: + res, expl = self.visit(arg) if type(arg) is ast.Starred: - new_star, expl = self.visit(arg) arg_expls.append("*" + expl) - new_args.append(new_star) else: - res, expl = self.visit(arg) - new_args.append(res) arg_expls.append(expl) + new_args.append(res) for keyword in call.keywords: + res, expl = self.visit(keyword.value) + new_kwargs.append(ast.keyword(keyword.arg, res)) if keyword.arg: - res, expl = self.visit(keyword.value) - new_kwargs.append(ast.keyword(keyword.arg, res)) arg_expls.append(keyword.arg + "=" + expl) else: ## **args have `arg` keywords with an .arg of None - res, expl = self.visit(keyword.value) - new_kwargs.append(ast.keyword(keyword.arg, res)) arg_expls.append("**" + expl) expl = "%s(%s)" % (func_expl, ', '.join(arg_expls))