at master 3.1 kB view raw
1diff --git a/pytest_lazyfixture.py b/pytest_lazyfixture.py 2index abf5db5..df83ce7 100644 3--- a/pytest_lazyfixture.py 4+++ b/pytest_lazyfixture.py 5@@ -71,14 +71,13 @@ def pytest_make_parametrize_id(config, val, argname): 6 def pytest_generate_tests(metafunc): 7 yield 8 9- normalize_metafunc_calls(metafunc, 'funcargs') 10- normalize_metafunc_calls(metafunc, 'params') 11+ normalize_metafunc_calls(metafunc) 12 13 14-def normalize_metafunc_calls(metafunc, valtype, used_keys=None): 15+def normalize_metafunc_calls(metafunc, used_keys=None): 16 newcalls = [] 17 for callspec in metafunc._calls: 18- calls = normalize_call(callspec, metafunc, valtype, used_keys) 19+ calls = normalize_call(callspec, metafunc, used_keys) 20 newcalls.extend(calls) 21 metafunc._calls = newcalls 22 23@@ -98,17 +97,21 @@ def copy_metafunc(metafunc): 24 return copied 25 26 27-def normalize_call(callspec, metafunc, valtype, used_keys): 28+def normalize_call(callspec, metafunc, used_keys): 29 fm = metafunc.config.pluginmanager.get_plugin('funcmanage') 30 31 used_keys = used_keys or set() 32- valtype_keys = set(getattr(callspec, valtype).keys()) - used_keys 33+ keys = set(callspec.params.keys()) - used_keys 34+ print(used_keys, keys) 35 36- for arg in valtype_keys: 37- val = getattr(callspec, valtype)[arg] 38+ for arg in keys: 39+ val = callspec.params[arg] 40 if is_lazy_fixture(val): 41 try: 42- _, fixturenames_closure, arg2fixturedefs = fm.getfixtureclosure([val.name], metafunc.definition.parent) 43+ if pytest.version_tuple >= (8, 0, 0): 44+ fixturenames_closure, arg2fixturedefs = fm.getfixtureclosure(metafunc.definition.parent, [val.name], {}) 45+ else: 46+ _, fixturenames_closure, arg2fixturedefs = fm.getfixtureclosure([val.name], metafunc.definition.parent) 47 except ValueError: 48 # 3.6.0 <= pytest < 3.7.0; `FixtureManager.getfixtureclosure` returns 2 values 49 fixturenames_closure, arg2fixturedefs = fm.getfixtureclosure([val.name], metafunc.definition.parent) 50@@ -117,14 +120,14 @@ def normalize_call(callspec, metafunc, valtype, used_keys): 51 fixturenames_closure, arg2fixturedefs = fm.getfixtureclosure([val.name], current_node) 52 53 extra_fixturenames = [fname for fname in fixturenames_closure 54- if fname not in callspec.params and fname not in callspec.funcargs] 55+ if fname not in callspec.params]# and fname not in callspec.funcargs] 56 57 newmetafunc = copy_metafunc(metafunc) 58 newmetafunc.fixturenames = extra_fixturenames 59 newmetafunc._arg2fixturedefs.update(arg2fixturedefs) 60 newmetafunc._calls = [callspec] 61 fm.pytest_generate_tests(newmetafunc) 62- normalize_metafunc_calls(newmetafunc, valtype, used_keys | set([arg])) 63+ normalize_metafunc_calls(newmetafunc, used_keys | set([arg])) 64 return newmetafunc._calls 65 66 used_keys.add(arg)