mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-30806: "request" is implicit fixture
Although it is not declared as fixture, it could be used.
This commit is contained in:
@@ -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<PyDecorator> =
|
||||
|
||||
+4
-4
@@ -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<Any>()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user