Add tests for line markers navigating to stub located in stub package (PY-30942)

This commit is contained in:
Semyon Proshev
2018-10-29 12:10:20 +03:00
parent 19ce4c0b27
commit fb4dbba4f3
11 changed files with 29 additions and 1 deletions
@@ -0,0 +1 @@
def bar(a: str, b: str) -> str: ...
@@ -0,0 +1,2 @@
def bar(a: str, b: str):
return a + b
@@ -0,0 +1 @@
def bar(a: str, b: str) -> str: ...
@@ -0,0 +1,2 @@
def bar(a: str, b: str):
return a + b
@@ -49,6 +49,13 @@ class PyiRelatedItemLineMarkerTest : PyTestCase() {
assertMarker("function", false)
}
fun testToStubPackage() {
myFixture.copyDirectoryToProject(getTestName(false), "")
myFixture.configureByFile("pkg/foo.py")
assertEquals("Has stub item in foo.pyi", getMarkersInCurrentFile ("bar").singleOrNull()?.lineMarkerTooltip)
}
// stub -> runtime
fun testNoSimilarClassForMethodStub() {
@@ -83,6 +90,13 @@ class PyiRelatedItemLineMarkerTest : PyTestCase() {
assertMarker("foo", true)
}
fun testFromStubPackage() {
myFixture.copyDirectoryToProject(getTestName(false), "")
myFixture.configureByFile("pkg-stubs/foo.pyi")
assertEquals("Stub for item in foo.py", getMarkersInCurrentFile ("bar").singleOrNull()?.lineMarkerTooltip)
}
override fun getTestDataPath(): String {
return super.getTestDataPath() + "/pyi/lineMarkers"
}
@@ -99,15 +113,23 @@ class PyiRelatedItemLineMarkerTest : PyTestCase() {
private fun getMarkers(elementName: String, pyi: Boolean): List<LineMarkerInfo<PsiElement>> {
myFixture.copyDirectoryToProject(getTestName(false), "")
myFixture.configureByFile(if (pyi) "b.pyi" else "a.py")
return getMarkersInCurrentFile(elementName)
}
private fun getMarkersInCurrentFile(elementName: String): List<LineMarkerInfo<PsiElement>> {
val functions = PsiTreeUtil.findChildrenOfType(myFixture.file, PyFunction::class.java)
functions.forEach { assertEquals(elementName, it.name) }
assertNotEmpty(functions)
myFixture.doHighlighting()
return DaemonCodeAnalyzerImpl
val result = DaemonCodeAnalyzerImpl
.getLineMarkers(myFixture.editor.document, myFixture.project)
.filter { PsiTreeUtil.getParentOfType(it.element, PsiNameIdentifierOwner::class.java)?.name == elementName }
assertProjectFilesNotParsed(myFixture.file)
assertSdkRootsNotParsed(myFixture.file)
return result
}
}