Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1fa451f

Browse files
UTBot multi-IDE support (#2611)
1 parent 6a87097 commit 1fa451f

File tree

77 files changed

+1609
-628
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1609
-628
lines changed

‎.github/workflows/publish-plugin-from-branch.yml‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ jobs:
4848
extra_options: "-PideType=IC -PprojectType=Community"
4949
- plugin_type: IU
5050
extra_options: "-PideType=IU -PprojectType=Ultimate"
51+
- plugin_type: PY
52+
extra_options: "-PideType=PY -PprojectType=Ultimate"
5153
runs-on: ubuntu-20.04
5254
container: unittestbot/java-env:java17-zulu-jdk-gradle7.6.1-kotlinc1.8.0
5355
steps:
@@ -79,13 +81,13 @@ jobs:
7981
- name: Build UTBot IntelliJ IDEA plugin
8082
run: |
8183
gradle clean buildPlugin --no-daemon --build-cache --no-parallel ${{ matrix.configuration.extra_options }} -Dorg.gradle.jvmargs=-Xmx2g -Dkotlin.daemon.jvm.options=-Xmx4g -PsemVer=${{ env.VERSION }}
82-
cd utbot-intellij/build/distributions
83-
unzip utbot-intellij-${{ env.VERSION }}.zip
84-
rm utbot-intellij-${{ env.VERSION }}.zip
84+
cd utbot-intellij-main/build/distributions
85+
unzip utbot-intellij-main-${{ env.VERSION }}.zip
86+
rm utbot-intellij-main-${{ env.VERSION }}.zip
8587
8688
- name: Archive UTBot IntelliJ IDEA plugin
8789
if: ${{ inputs.upload-artifact == 'true' }}
8890
uses: actions/upload-artifact@v3
8991
with:
9092
name: utbot-intellij-${{ matrix.configuration.plugin_type }}-${{ env.VERSION_ARCHIVE }}
91-
path: utbot-intellij/build/distributions/*
93+
path: utbot-intellij-main/build/distributions/*

‎buildSrc/src/main/java/SettingsTemplateHelper.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class SettingsTemplateHelper {
3030
public static void proceed(Project project) {
3131
File settingsSourceDir = new File(project.getBuildDir().getParentFile().getParentFile(), "utbot-framework-api/src/main/kotlin/org/utbot/framework/");
3232
String sourceFileName = "UtSettings.kt";
33-
File settingsResourceDir = new File(project.getBuildDir().getParentFile().getParentFile(), "utbot-intellij/src/main/resources/");
33+
File settingsResourceDir = new File(project.getBuildDir().getParentFile().getParentFile(), "utbot-intellij-main/src/main/resources/");
3434
String settingsFileName = "settings.properties";
3535

3636
Map<String, String> dictionary = new HashMap<>();

‎gradle.properties‎

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
kotlin.code.style=official
22

3-
#Project Type
3+
# === IDE settings ===
4+
# Project Type
45
# - Community: for Java + Spring + Python (IC supported features)
56
# - Ultimate: for Java + Spring + Python (IU supported features) + JavaScript + Go
67
projectType=Ultimate
@@ -11,14 +12,17 @@ ultimateEdition=Ultimate
1112
# IU, IC, PC, PY
1213
# IC for AndroidStudio
1314
ideType=IC
14-
ideVersion=232.8660.185
15+
ideaVersion=232.8660.185
16+
pycharmVersion=2023.2
17+
golandVersion=2023.2
1518
# ALL, NOJS
1619
buildType=NOJS
1720

21+
javaIde=IC,IU
1822
pythonIde=IC,IU,PC,PY
19-
jsIde=IU,PY,WS
23+
jsIde=IU,PY
2024
jsBuild=ALL
21-
goIde=IU
25+
goIde=IU,GO
2226

2327
# In order to run Android Studio instead of IntelliJ Community, specify the path to your Android Studio installation
2428
#androidStudioPath=your_path_to_android_studio
@@ -29,6 +33,7 @@ pythonCommunityPluginVersion=232.8660.185
2933
pythonUltimatePluginVersion=232.8660.185
3034
# Version numbers: https://plugins.jetbrains.com/plugin/9568-go/versions
3135
goPluginVersion=232.8660.142
36+
# === IDE settings ===
3237

3338
junit5Version=5.8.2
3439
junit4Version=4.13.2

‎settings.gradle.kts‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ val ultimateEdition: String by settings
55
val ideType: String by settings
66
val buildType: String by settings
77

8+
val javaIde: String by settings
89
val pythonIde: String by settings
910
val jsIde: String by settings
1011
val jsBuild: String by settings
@@ -27,7 +28,6 @@ include("utbot-core")
2728
include("utbot-framework")
2829
include("utbot-framework-api")
2930
include("utbot-modificators-analyzer")
30-
include("utbot-intellij")
3131
include("utbot-sample")
3232
include("utbot-java-fuzzing")
3333
include("utbot-fuzzing")
@@ -60,6 +60,12 @@ include("utbot-spring-framework")
6060
include("utbot-spring-commons-api")
6161
include("utbot-spring-commons")
6262
include("utbot-spring-analyzer")
63+
include("utbot-spring-sample")
64+
include("utbot-spring-test")
65+
66+
if (javaIde.split(",").contains(ideType)) {
67+
include("utbot-intellij")
68+
}
6369

6470
if (pythonIde.split(",").contains(ideType)) {
6571
include("utbot-python")
@@ -70,9 +76,6 @@ if (pythonIde.split(",").contains(ideType)) {
7076
include("utbot-python-executor")
7177
}
7278

73-
include("utbot-spring-sample")
74-
include("utbot-spring-test")
75-
7679
if (projectType == ultimateEdition) {
7780
if (jsBuild == buildType || jsIde.split(",").contains(ideType)) {
7881
include("utbot-js")
@@ -88,3 +91,4 @@ if (projectType == ultimateEdition) {
8891
}
8992

9093
include("utbot-light")
94+
include("utbot-intellij-main")

‎utbot-cli-python/src/main/kotlin/org/utbot/cli/language/python/Utils.kt‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,4 @@ fun writeToFileAndSave(filename: String, fileContent: String) {
2525
val file = File(filename)
2626
file.parentFile?.mkdirs()
2727
file.writeText(fileContent)
28-
file.createNewFile()
2928
}

‎utbot-intellij-go/build.gradle.kts‎

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,44 @@ val intellijPluginVersion: String? by rootProject
22
val kotlinLoggingVersion: String? by rootProject
33
val apacheCommonsTextVersion: String? by rootProject
44
val jacksonVersion: String? by rootProject
5-
val ideType: String? by rootProject
6-
val ideVersion: String by rootProject
75
val kotlinPluginVersion: String by rootProject
6+
7+
// === IDE settings ===
8+
val projectType: String by rootProject
9+
val communityEdition: String by rootProject
10+
val ultimateEdition: String by rootProject
11+
12+
val ideType: String by rootProject
13+
val androidStudioPath: String? by rootProject
14+
15+
val ideaVersion: String? by rootProject
16+
val pycharmVersion: String? by rootProject
17+
val golandVersion: String? by rootProject
18+
19+
val javaIde: String? by rootProject
20+
val pythonIde: String? by rootProject
21+
val jsIde: String? by rootProject
22+
val goIde: String? by rootProject
23+
24+
val ideVersion = when(ideType) {
25+
"PC", "PY" -> pycharmVersion
26+
"GO" -> golandVersion
27+
else -> ideaVersion
28+
}
29+
830
val pythonCommunityPluginVersion: String? by rootProject
931
val pythonUltimatePluginVersion: String? by rootProject
1032
val goPluginVersion: String? by rootProject
1133

34+
// https://plugins.jetbrains.com/docs/intellij/android-studio.html#configuring-the-plugin-pluginxml-file
35+
val ideTypeOrAndroidStudio = if (androidStudioPath == null) ideType else "IC"
36+
37+
project.tasks.asMap["runIde"]?.enabled = false
38+
// === IDE settings ===
39+
1240
plugins {
1341
id("org.jetbrains.intellij") version "1.13.1"
1442
}
15-
project.tasks.asMap["runIde"]?.enabled = false
1643

1744
tasks {
1845
compileKotlin {
@@ -46,10 +73,16 @@ intellij {
4673

4774
val androidPlugins = listOf("org.jetbrains.android")
4875

49-
val jvmPlugins = listOf(
76+
val jvmPlugins = mutableListOf(
5077
"java"
5178
)
5279

80+
val kotlinPlugins = listOf(
81+
"org.jetbrains.kotlin"
82+
)
83+
84+
androidStudioPath?.let { jvmPlugins += androidPlugins }
85+
5386
val pythonCommunityPlugins = listOf(
5487
"PythonCore:${pythonCommunityPluginVersion}"
5588
)
@@ -66,13 +99,24 @@ intellij {
6699
"org.jetbrains.plugins.go:${goPluginVersion}"
67100
)
68101

102+
val mavenUtilsPlugins = listOf(
103+
"org.jetbrains.idea.maven"
104+
)
105+
106+
val basePluginSet = jvmPlugins + kotlinPlugins + mavenUtilsPlugins + androidPlugins
107+
69108
plugins.set(
70-
when (ideType) {
71-
"IC" -> jvmPlugins + pythonCommunityPlugins + androidPlugins
72-
"IU" -> jvmPlugins + pythonUltimatePlugins + jsPlugins + goPlugins + androidPlugins
73-
"PC" -> pythonCommunityPlugins
74-
"PU" -> pythonUltimatePlugins // something else, JS?
75-
else -> jvmPlugins
109+
when (projectType) {
110+
communityEdition -> basePluginSet + pythonCommunityPlugins
111+
ultimateEdition -> when (ideType) {
112+
"IC" -> basePluginSet + pythonCommunityPlugins
113+
"IU" -> basePluginSet + pythonUltimatePlugins + jsPlugins + goPlugins
114+
"PC" -> pythonCommunityPlugins
115+
"PY" -> pythonUltimatePlugins + jsPlugins
116+
"GO" -> goPlugins
117+
else -> basePluginSet
118+
}
119+
else -> basePluginSet
76120
}
77121
)
78122

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
package org.utbot.intellij.plugin.language.go.generator
1+
package org.utbot.intellij.plugin.go.generator
22

3-
import com.intellij.codeInsight.CodeInsightUtil
43
import com.intellij.openapi.application.runWriteAction
4+
import com.intellij.openapi.fileEditor.OpenFileDescriptor
55
import com.intellij.openapi.project.Project
66
import com.intellij.openapi.vfs.VirtualFileManager
77
import com.intellij.psi.PsiFile
88
import com.intellij.psi.PsiFileFactory
99
import com.intellij.psi.PsiManager
1010
import com.intellij.util.IncorrectOperationException
1111
import org.utbot.go.api.GoUtFile
12-
import org.utbot.intellij.plugin.language.go.GoLanguageAssistant
13-
import org.utbot.intellij.plugin.language.go.models.GenerateGoTestsModel
12+
import org.utbot.intellij.plugin.go.language.GoLanguageAssistant
13+
import org.utbot.intellij.plugin.go.models.GenerateGoTestsModel
1414
import org.utbot.intellij.plugin.ui.utils.showErrorDialogLater
1515
import java.nio.file.Paths
1616

@@ -37,7 +37,7 @@ object GoUtTestsCodeFileWriter {
3737
sourceFileDir.add(testPsiFile)
3838

3939
val testFile = sourceFileDir.findFile(testsFileNameWithExtension)!!
40-
CodeInsightUtil.positionCursor(model.project, testFile, testFile)
40+
OpenFileDescriptor(model.project, testFile.virtualFile).navigate(true)
4141
}
4242
} catch (e: IncorrectOperationException) {
4343
showCreatingFileError(model.project, testsFileName)
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.utbot.intellij.plugin.language.go.generator
1+
package org.utbot.intellij.plugin.go.generator
22

33
import com.goide.project.DefaultGoRootsProvider
44
import com.goide.psi.GoFunctionOrMethodDeclaration
@@ -16,9 +16,9 @@ import com.intellij.openapi.ui.Messages
1616
import org.utbot.go.gocodeanalyzer.GoParsingSourceCodeAnalysisResultException
1717
import org.utbot.go.logic.GoUtTestsGenerationConfig
1818
import org.utbot.go.worker.GoWorkerFailedException
19-
import org.utbot.intellij.plugin.language.go.models.GenerateGoTestsModel
20-
import org.utbot.intellij.plugin.language.go.ui.GenerateGoTestsDialogWindow
21-
import org.utbot.intellij.plugin.language.go.ui.utils.resolveGoExecutablePath
19+
import org.utbot.intellij.plugin.go.models.GenerateGoTestsModel
20+
import org.utbot.intellij.plugin.go.ui.GenerateGoTestsDialogWindow
21+
import org.utbot.intellij.plugin.go.ui.utils.resolveGoExecutablePath
2222
import org.utbot.intellij.plugin.ui.utils.showErrorDialogLater
2323
import java.nio.file.Paths
2424

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.utbot.intellij.plugin.language.go.generator
1+
package org.utbot.intellij.plugin.go.generator
22

33
import com.intellij.openapi.application.invokeLater
44
import com.intellij.openapi.progress.ProgressIndicator
@@ -7,7 +7,7 @@ import org.utbot.go.api.GoUtFunction
77
import org.utbot.go.api.GoUtFuzzedFunctionTestCase
88
import org.utbot.go.gocodeanalyzer.GoSourceCodeAnalyzer
99
import org.utbot.go.logic.AbstractGoUtTestsGenerationController
10-
import org.utbot.intellij.plugin.language.go.models.GenerateGoTestsModel
10+
import org.utbot.intellij.plugin.go.models.GenerateGoTestsModel
1111
import org.utbot.intellij.plugin.ui.utils.showErrorDialogLater
1212
import org.utbot.intellij.plugin.ui.utils.showWarningDialogLater
1313
import java.nio.file.Path
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
package org.utbot.intellij.plugin.language.go
1+
package org.utbot.intellij.plugin.go.language
22

33
import com.goide.psi.*
44
import com.intellij.lang.Language
55
import com.intellij.openapi.actionSystem.AnActionEvent
66
import com.intellij.openapi.actionSystem.CommonDataKeys
77
import com.intellij.openapi.editor.Editor
8+
import com.intellij.openapi.module.ModuleUtilCore
89
import com.intellij.psi.PsiElement
910
import com.intellij.psi.PsiFile
1011
import com.intellij.psi.util.PsiTreeUtil
11-
import org.jetbrains.kotlin.idea.base.util.module
1212
import org.utbot.intellij.plugin.language.agnostic.LanguageAssistant
13-
import org.utbot.intellij.plugin.language.go.generator.GoUtTestsDialogProcessor
13+
import org.utbot.intellij.plugin.go.generator.GoUtTestsDialogProcessor
1414

1515
@Suppress("unused") // is used in org.utbot.intellij.plugin.language.agnostic.LanguageAssistant via reflection
1616
object GoLanguageAssistant : LanguageAssistant() {
@@ -26,7 +26,7 @@ object GoLanguageAssistant : LanguageAssistant() {
2626
override fun actionPerformed(e: AnActionEvent) {
2727
val project = e.project ?: return
2828
val file = e.getData(CommonDataKeys.PSI_FILE) as? GoFile ?: return
29-
val module = file.module ?: return
29+
val module = ModuleUtilCore.findModuleForFile(file) ?: return
3030
val (targetFunctions, focusedTargetFunctions) = getPsiTargets(e) ?: return
3131
GoUtTestsDialogProcessor.createDialogAndGenerateTests(
3232
project,

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /