[Pytest-commit] commit/pytest: hpk42: simplify loop which turns direct funcarg parametrization to indirect

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Mon Jan 27 12:54:31 CET 2014


1 new commit in pytest:

https://bitbucket.org/hpk42/pytest/commits/0d595ac74709/
Changeset:   0d595ac74709
User:        hpk42
Date:        2014-01-27 12:53:44
Summary:     simplify loop which turns direct funcarg parametrization to indirect
Affected #:  2 files

diff -r b1b6c261d9b60d168ab2930a24fb3b24a884790e -r 0d595ac74709b416ff9ff7c52bed0f8de6bb6a9b _pytest/python.py
--- a/_pytest/python.py
+++ b/_pytest/python.py
@@ -372,22 +372,22 @@
     # collect funcargs of all callspecs into a list of values
     arg2params = {}
     arg2scope = {}
-    arg2fixturedefs = metafunc._arg2fixturedefs
-    for param_index, callspec in enumerate(metafunc._calls):
+    for callspec in metafunc._calls:
         for argname, argvalue in callspec.funcargs.items():
-            arg2params.setdefault(argname, []).append(argvalue)
+            assert argname not in callspec.params
+            callspec.params[argname] = argvalue
+            arg2params_list = arg2params.setdefault(argname, [])
+            callspec.indices[argname] = len(arg2params_list)
+            arg2params_list.append(argvalue)
             if argname not in arg2scope:
-                scopenum = callspec._arg2scopenum.get(argname, scopenum_function)
+                scopenum = callspec._arg2scopenum.get(argname,
+                                                      scopenum_function)
                 arg2scope[argname] = scopes[scopenum]
-            callspec.indices[argname] = param_index
-
-        for argname in callspec.funcargs:
-            assert argname not in callspec.params
-        callspec.params.update(callspec.funcargs)
         callspec.funcargs.clear()
 
     # register artificial FixtureDef's so that later at test execution
     # time we can rely on a proper FixtureDef to exist for fixture setup.
+    arg2fixturedefs = metafunc._arg2fixturedefs
     for argname, valuelist in arg2params.items():
         # if we have a scope that is higher than function we need
         # to make sure we only ever create an according fixturedef on

diff -r b1b6c261d9b60d168ab2930a24fb3b24a884790e -r 0d595ac74709b416ff9ff7c52bed0f8de6bb6a9b testing/python/fixture.py
--- a/testing/python/fixture.py
+++ b/testing/python/fixture.py
@@ -1391,6 +1391,7 @@
         reprec = testdir.inline_run("-s")
         reprec.assertoutcome(passed=2)
 
+
 class TestFixtureMarker:
     def test_parametrize(self, testdir):
         testdir.makepyfile("""

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