Skip to content

Commit

Permalink
feat(cpp): add CppWriteTestService and CppContextPrettify modifications
Browse files Browse the repository at this point in the history
- Add CppWriteTestService class for running CMakeTestRunConfiguration
- Modify CppContextPrettify to import additional classes and symbols
- Update CLionWorkspaceContextProvider to remove unused import
- Update cc.unitmesh.cpp.xml to add CppWriteTestService as testContextProvider
  • Loading branch information
phodal committed Jan 17, 2024
1 parent 4b3588f commit cce73c2
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 10 deletions.
Expand Up @@ -7,7 +7,6 @@ import com.intellij.execution.wsl.WslPath
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.util.PlatformUtils
import com.jetbrains.cidr.lang.OCLanguage
import com.jetbrains.cidr.project.workspace.CidrWorkspace

Expand Down
@@ -0,0 +1,46 @@
package cc.unitmesh.cpp.provider.testing

import cc.unitmesh.cpp.util.CppContextPrettify
import cc.unitmesh.devti.context.ClassContext
import cc.unitmesh.devti.provider.WriteTestService
import cc.unitmesh.devti.provider.context.TestFileContext
import com.intellij.execution.configurations.RunProfile
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.jetbrains.cidr.cpp.execution.testing.CMakeTestRunConfiguration
import com.jetbrains.cidr.lang.psi.OCFunctionDeclaration

class CppWriteTestService : WriteTestService() {
override fun runConfigurationClass(project: Project): Class<out RunProfile> = CMakeTestRunConfiguration::class.java

override fun isApplicable(element: PsiElement): Boolean {
return true
}

override fun findOrCreateTestFile(sourceFile: PsiFile, project: Project, element: PsiElement): TestFileContext? {
val currentClass = when (element) {
is OCFunctionDeclaration -> {
CppContextPrettify.printParentStructure(element)
}

else -> null
}
val relatedClasses = lookupRelevantClass(project, element)

return TestFileContext(
true,
sourceFile.virtualFile,
relatedClasses,
"",
sourceFile.language,
currentClass,
emptyList()
)
}

override fun lookupRelevantClass(project: Project, element: PsiElement): List<ClassContext> {
TODO("Not yet implemented")
}

}
10 changes: 2 additions & 8 deletions cpp/src/main/kotlin/cc/unitmesh/cpp/util/CppContextPrettify.kt
Expand Up @@ -4,14 +4,8 @@ import com.intellij.psi.PsiComment
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiNameIdentifierOwner
import com.intellij.psi.util.PsiTreeUtil
import com.jetbrains.cidr.lang.psi.OCFunctionDeclaration
import com.jetbrains.cidr.lang.psi.OCDeclaration
import com.jetbrains.cidr.lang.psi.OCStruct
import com.jetbrains.cidr.lang.psi.OCStructLike
import com.jetbrains.cidr.lang.psi.OCConceptDeclaration
import com.jetbrains.cidr.lang.psi.OCTemplateArgumentList
import com.jetbrains.cidr.lang.psi.OCTemplateParameterList
import com.jetbrains.cidr.lang.symbols.OCResolveContext
import com.jetbrains.cidr.lang.psi.*
import com.jetbrains.cidr.lang.symbols.*

object CppContextPrettify {
/**
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/main/resources/cc.unitmesh.cpp.xml
@@ -1,5 +1,4 @@
<idea-plugin package="cc.unitmesh.cpp">
<!--suppress PluginXmlValidity -->
<dependencies>
<plugin id="com.intellij.modules.clion"/>
</dependencies>
Expand All @@ -15,5 +14,6 @@
implementationClass="cc.unitmesh.cpp.context.CppVariableContextBuilder"/>

<chatContextProvider implementation="cc.unitmesh.cpp.provider.CLionWorkspaceContextProvider"/>
<testContextProvider language="ObjectiveC" implementation="cc.unitmesh.cpp.provider.testing.CppWriteTestService"/>
</extensions>
</idea-plugin>

0 comments on commit cce73c2

Please sign in to comment.