PY-34498 Add an inspection for pytest fixture that is not passed to test parameters

Fix incorrect fixtures searching in imports. Add test that inspection registers problem only for PyTestFixture.

GitOrigin-RevId: de029bb401689f0218e6fce04e64e738a8051fae
This commit is contained in:
Egor.Eliseev
2024-02-27 14:30:02 +02:00
committed by intellij-monorepo-bot
parent c5434fd3df
commit 31ede1b27d
3 changed files with 12 additions and 2 deletions

View File

@@ -207,8 +207,8 @@ private fun findImportedFixtureInFile(targetFile: PyFile,
val resolveImportElements = importedFixture?.multiResolve()?.map { it.element }
if (importedFixture != null) {
// if fixture is imported as `from module import some_fixture as sf`
resolveImportElements?.filterIsInstance<PyFunction>()?.firstOrNull()?.let { fixture ->
return NamedFixtureLink(PyTestFixture(func, fixture, fixture.name ?: ""), importedFixture)
resolveImportElements?.firstOrNull { (it as? PyFunction)?.isFixture() == true }?.let { fixture ->
return (fixture as? PyFunction)?.let { NamedFixtureLink(PyTestFixture(func, fixture, fixture.name ?: ""), importedFixture) }
}
resolveImportElements?.let { list ->

View File

@@ -0,0 +1,6 @@
import pytest
from time import time
def test_():
time.time()

View File

@@ -51,4 +51,8 @@ class PyTestUnpassedFixtureInspectionTest : PyInspectionTestCase() {
fun testUnpassedFixtureFromImport() {
doTest()
}
fun testNoInspectCorrectCode() {
doTest()
}
}