diff --git a/python/src/com/jetbrains/python/testing/pyTestFixtures/PyTestFixture.kt b/python/src/com/jetbrains/python/testing/pyTestFixtures/PyTestFixture.kt index a9cd319f6603..bcdba98469f9 100644 --- a/python/src/com/jetbrains/python/testing/pyTestFixtures/PyTestFixture.kt +++ b/python/src/com/jetbrains/python/testing/pyTestFixtures/PyTestFixture.kt @@ -27,12 +27,7 @@ private const val decoratorName: String = "pytest.fixture" internal fun getFixture(element: PyNamedParameter, typeEvalContext: TypeEvalContext): PyTestFixture? { val module = ModuleUtilCore.findModuleForPsiElement(element) ?: return null val func = PsiTreeUtil.getParentOfType(element, PyFunction::class.java) ?: return null - return getFixtures(module, func, typeEvalContext) - .filter { o -> o.name == element.name } - .sortedBy { - ModuleUtilCore.findModuleForPsiElement(it.function) != module - } - .firstOrNull() + return getFixtures(module, func, typeEvalContext).firstOrNull { o -> o.name == element.name } } /** @@ -51,7 +46,7 @@ internal fun PyFunction.isFixture() = decoratorList?.findDecorator(decoratorName * @property resolveTarget PyElement where this fixture is resolved * @property name String fixture name */ -data class PyTestFixture(val function: PyFunction, val resolveTarget: PyElement, val name: String) +data class PyTestFixture(val function: PyFunction? = null, val resolveTarget: PyElement? = function, val name: String) fun findDecoratorsByName(module: Module, name: String): Iterable = diff --git a/python/src/com/jetbrains/python/testing/pyTestFixtures/PyTestFixtureReferenceContributor.kt b/python/src/com/jetbrains/python/testing/pyTestFixtures/PyTestFixtureReferenceContributor.kt index f4adf348fe80..6c4cb6ec06a2 100644 --- a/python/src/com/jetbrains/python/testing/pyTestFixtures/PyTestFixtureReferenceContributor.kt +++ b/python/src/com/jetbrains/python/testing/pyTestFixtures/PyTestFixtureReferenceContributor.kt @@ -14,12 +14,12 @@ import com.jetbrains.python.psi.types.PyTypeProviderBase import com.jetbrains.python.psi.types.TypeEvalContext class PyTestFixtureReference(namedParameter: PyNamedParameter, fixture: PyTestFixture) : BaseReference(namedParameter) { - private val functionRef = SmartPointerManager.createPointer(fixture.function) - private val resolveRef = SmartPointerManager.createPointer(fixture.resolveTarget) + private val functionRef = fixture.function?.let { SmartPointerManager.createPointer(it) } + private val resolveRef = fixture.resolveTarget?.let { SmartPointerManager.createPointer(it) } - override fun resolve() = resolveRef.element + override fun resolve() = resolveRef?.element - fun getFunction() = functionRef.element + fun getFunction() = functionRef?.element override fun getVariants() = emptyArray()