Make goto work for pytest fixtures

This commit is contained in:
Dave Halter
2019-12-27 10:51:49 +01:00
parent 5a54d94aa5
commit 8c737ba17e
2 changed files with 17 additions and 4 deletions

View File

@@ -483,6 +483,10 @@ class _ActualTreeParamName(BaseTreeParamName):
class AnonymousParamName(_ActualTreeParamName):
@plugin_manager.decorate(name='goto_anonymous_param')
def goto(self):
return super(AnonymousParamName, self).goto()
@plugin_manager.decorate(name='infer_anonymous_param')
def infer(self):
values = super(AnonymousParamName, self).infer()

View File

@@ -31,16 +31,25 @@ def infer_anonymous_param(func):
else:
return function_context.get_return_values()
def wrapper(param):
module = param.get_root_context()
fixtures = _goto_pytest_fixture(module, param.string_name)
def wrapper(param_name):
module = param_name.get_root_context()
fixtures = _goto_pytest_fixture(module, param_name.string_name)
if fixtures:
return ValueSet.from_sets(
get_returns(value)
for fixture in fixtures
for value in fixture.infer()
)
return func(param)
return func(param_name)
return wrapper
def goto_anonymous_param(func):
def wrapper(param_name):
names = _goto_pytest_fixture(param_name.get_root_context(), param_name.string_name)
if names:
return names
return func(param_name)
return wrapper