From a93413a142112d83d4bf41ac708edbcd37895362 Mon Sep 17 00:00:00 2001 From: Aleksei Kniazev Date: Wed, 18 Mar 2020 13:52:24 +0300 Subject: [PATCH] IDEA-CR-60210: test for go to class field for python (PY-15468) close #1194 GitOrigin-RevId: c735d224f930fef2ae298bf0a055da082daf77e3 --- python/testData/navigation/goToClassField.py | 5 +++++ .../com/jetbrains/python/PyNavigationTest.kt | 15 +++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 python/testData/navigation/goToClassField.py diff --git a/python/testData/navigation/goToClassField.py b/python/testData/navigation/goToClassField.py new file mode 100644 index 000000000000..bad1a8d017ae --- /dev/null +++ b/python/testData/navigation/goToClassField.py @@ -0,0 +1,5 @@ +class MyClass: + some_field = True + + def some_fun(self): + pass diff --git a/python/testSrc/com/jetbrains/python/PyNavigationTest.kt b/python/testSrc/com/jetbrains/python/PyNavigationTest.kt index 52b8ba9a0907..ca19d1df1147 100644 --- a/python/testSrc/com/jetbrains/python/PyNavigationTest.kt +++ b/python/testSrc/com/jetbrains/python/PyNavigationTest.kt @@ -1,11 +1,13 @@ // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.jetbrains.python +import com.intellij.ide.util.gotoByName.GotoSymbolModel2 import com.intellij.psi.PsiElement import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.fixtures.CodeInsightTestUtil import com.jetbrains.python.fixtures.PyTestCase import com.jetbrains.python.psi.PyFile +import com.jetbrains.python.psi.PyTargetExpression import com.jetbrains.python.psi.impl.PyGotoDeclarationHandler import com.jetbrains.python.pyi.PyiFile @@ -35,6 +37,19 @@ class PyNavigationTest : PyTestCase() { } } + fun testGoToClassField() { + myFixture.configureByFile("${getTestName(true)}.py") + val model = GotoSymbolModel2(myFixture.project) + val elements = model.getElementsByName("some_field", false, "") + assertSize(1, elements) + assertInstanceOf(elements.first(), PyTargetExpression::class.java) + val expression = elements.first() as PyTargetExpression + assertEquals("some_field", expression.name) + assertNotNull(expression.containingClass) + assertEquals("MyClass", expression.containingClass?.name) + } + + private fun configureByDir(dirName: String) { myFixture.copyDirectoryToProject(dirName, "") myFixture.configureByFile("test.py")