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): 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') @plugin_manager.decorate(name='infer_anonymous_param')
def infer(self): def infer(self):
values = super(AnonymousParamName, self).infer() values = super(AnonymousParamName, self).infer()

View File

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