Skip to content

Commit 16e81ee

Browse files
Try to create separate artifacts for Spring and Experimental languages (#2423)
1 parent ab0bdcb commit 16e81ee

File tree

10 files changed

+134
-70
lines changed

10 files changed

+134
-70
lines changed

.github/workflows/build-and-run-tests-from-branch.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ jobs:
135135

136136
- name: Run tests
137137
run: |
138-
gradle --no-daemon --build-cache --no-parallel -Dorg.gradle.jvmargs=-Xmx6g -Dkotlin.daemon.jvm.options=-Xmx4g :utbot-framework-test:test ${{ matrix.project.TESTS_TO_RUN }}
138+
gradle -PprojectType=ExperimentalLanguages --no-daemon --build-cache --no-parallel -Dorg.gradle.jvmargs=-Xmx6g -Dkotlin.daemon.jvm.options=-Xmx4g :utbot-framework-test:test ${{ matrix.project.TESTS_TO_RUN }}
139139
140140
- name: Upload logs
141141
if: ${{ always() }}
@@ -203,7 +203,7 @@ jobs:
203203
- name: Run tests
204204
run: |
205205
cd utbot-spring-test
206-
gradle --no-daemon --build-cache --no-parallel -Dorg.gradle.jvmargs=-Xmx6g -Dkotlin.daemon.jvm.options=-Xmx4g :utbot-spring-test:test
206+
gradle -PprojectType=Spring --no-daemon --build-cache --no-parallel -Dorg.gradle.jvmargs=-Xmx6g -Dkotlin.daemon.jvm.options=-Xmx4g :utbot-spring-test:test
207207
208208
- name: Upload logs
209209
if: ${{ always() }}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,13 @@ jobs:
4545
matrix:
4646
configuration:
4747
- plugin_type: IC
48-
extra_options: "-PideType=IC"
48+
extra_options: "-PideType=IC -PprojectType=PureJava"
4949
- plugin_type: IU
50-
extra_options: "-PideType=IU"
50+
extra_options: "-PideType=IU -PprojectType=ExperimentalLanguages"
51+
- plugin_type: IC-Spring
52+
extra_options: "-PideType=IC -PprojectType=Spring"
53+
- plugin_type: IU-Spring
54+
extra_options: "-PideType=IU -PprojectType=Spring"
5155
runs-on: ubuntu-20.04
5256
container: unittestbot/java-env:java17-zulu-jdk-gradle7.6.1-kotlinc1.8.0
5357
steps:

.github/workflows/run-chosen-tests-from-branch.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
5050
- name: Run chosen tests
5151
run: |
52-
gradle :${{ github.event.inputs.project-name }}:test --no-daemon --build-cache --no-parallel -Dorg.gradle.jvmargs=-Xmx2g -Dkotlin.daemon.jvm.options=-Xmx4g --tests ${{ github.event.inputs.tests-bunch-name }}
52+
gradle :${{ github.event.inputs.project-name }}:test -PprojectType=ExperimentalLanguages --no-daemon --build-cache --no-parallel -Dorg.gradle.jvmargs=-Xmx2g -Dkotlin.daemon.jvm.options=-Xmx4g --tests ${{ github.event.inputs.tests-bunch-name }}
5353
5454
- name: Upload ${{ github.event.inputs.project-name }} tests report if tests have failed
5555
if: ${{ failure() }}

gradle.properties

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
kotlin.code.style=official
22

3+
#Project Type
4+
# - PureJava: no additional features
5+
# - ExperimentalLanguages: for Java + { Python, JavaScript, Go }
6+
# - Spring: for Java + Spring
7+
# - Ultimate: for all supported functionality
8+
projectType=Ultimate
9+
10+
pureJavaEdition=PureJava
11+
languagesEdition=ExperimentalLanguages
12+
springEdition=Spring
13+
ultimateEdition=Ultimate
14+
315
# IU, IC, PC, PY
416
# IC for AndroidStudio
517
ideType=IC

settings.gradle.kts

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
val projectType: String by settings
2+
val ultimateEdition: String by settings
3+
val springEdition: String by settings
4+
val languagesEdition: String by settings
5+
val pureJavaEdition: String by settings
6+
17
val ideType: String by settings
28
val buildType: String by settings
39

@@ -51,29 +57,35 @@ if (includeRiderInBuild.toBoolean()) {
5157

5258
include("utbot-ui-commons")
5359

54-
if (pythonIde.split(",").contains(ideType)) {
55-
include("utbot-python")
56-
include("utbot-cli-python")
57-
include("utbot-intellij-python")
58-
include("utbot-python-parser")
59-
}
60+
include("utbot-spring-commons-api")
61+
include("utbot-spring-commons")
62+
include("utbot-spring-analyzer")
63+
64+
if (projectType == languagesEdition || projectType == ultimateEdition) {
65+
if (pythonIde.split(",").contains(ideType)) {
66+
include("utbot-python")
67+
include("utbot-cli-python")
68+
include("utbot-intellij-python")
69+
include("utbot-python-parser")
70+
}
6071

61-
if (jsBuild == buildType || jsIde.split(",").contains(ideType)) {
62-
include("utbot-js")
63-
include("utbot-cli-js")
64-
include("utbot-intellij-js")
72+
if (jsBuild == buildType || jsIde.split(",").contains(ideType)) {
73+
include("utbot-js")
74+
include("utbot-cli-js")
75+
include("utbot-intellij-js")
76+
}
77+
78+
if (goIde.split(",").contains(ideType)) {
79+
include("utbot-go")
80+
include("utbot-cli-go")
81+
include("utbot-intellij-go")
82+
}
6583
}
6684

67-
if (goIde.split(",").contains(ideType)) {
68-
include("utbot-go")
69-
include("utbot-cli-go")
70-
include("utbot-intellij-go")
85+
if (projectType == springEdition || projectType == ultimateEdition) {
86+
include("utbot-spring-sample")
87+
include("utbot-spring-test")
7188
}
7289

73-
include("utbot-spring-analyzer")
74-
include("utbot-spring-commons")
75-
include("utbot-spring-commons-api")
7690

77-
include("utbot-spring-sample")
78-
include("utbot-spring-test")
7991

utbot-framework/build.gradle

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ dependencies {
1515
api project(':utbot-framework-api')
1616
api project(':utbot-rd')
1717

18-
implementation project(':utbot-spring-commons-api')
19-
2018
implementation group: 'com.jetbrains.rd', name: 'rd-framework', version: rdVersion
2119
implementation group: 'com.jetbrains.rd', name: 'rd-core', version: rdVersion
2220

@@ -46,17 +44,23 @@ dependencies {
4644

4745
implementation group: 'com.github.UnitTestBot.ksmt', name: 'ksmt-core', version: ksmtVersion
4846
implementation group: 'com.github.UnitTestBot.ksmt', name: 'ksmt-z3', version: ksmtVersion
49-
implementation project(':utbot-spring-analyzer')
5047

51-
fetchSpringAnalyzerJar project(path: ':utbot-spring-analyzer', configuration: 'springAnalyzerJar')
5248
fetchInstrumentationJar project(path: ':utbot-instrumentation', configuration: 'instrumentationArchive')
49+
50+
implementation project(':utbot-spring-commons-api')
51+
implementation project(':utbot-spring-analyzer')
52+
53+
if (projectType == springEdition || projectType==ultimateEdition) {
54+
fetchSpringAnalyzerJar project(path: ':utbot-spring-analyzer', configuration: 'springAnalyzerJar')
55+
}
5356
}
5457

5558
processResources {
56-
from(configurations.fetchSpringAnalyzerJar) {
59+
from(configurations.fetchInstrumentationJar) {
5760
into "lib"
5861
}
59-
from(configurations.fetchInstrumentationJar) {
62+
63+
from(configurations.fetchSpringAnalyzerJar) {
6064
into "lib"
6165
}
6266
}

utbot-instrumentation/build.gradle.kts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer
22

3+
val projectType: String by rootProject
4+
val ultimateEdition: String by rootProject
5+
val springEdition: String by rootProject
6+
val languagesEdition: String by rootProject
7+
val pureJavaEdition: String by rootProject
8+
39
val asmVersion: String by rootProject
410
val kryoVersion: String by rootProject
511
val kryoSerializersVersion: String by rootProject
@@ -43,8 +49,6 @@ val fetchSpringCommonsJar: Configuration by configurations.creating {
4349
dependencies {
4450
implementation(project(":utbot-framework-api"))
4551
implementation(project(":utbot-rd"))
46-
implementation(project(":utbot-spring-commons-api"))
47-
4852

4953
implementation("org.ow2.asm:asm:$asmVersion")
5054
implementation("org.ow2.asm:asm-commons:$asmVersion")
@@ -58,7 +62,10 @@ dependencies {
5862
implementation("org.mockito:mockito-core:$mockitoVersion")
5963
implementation("org.mockito:mockito-inline:$mockitoInlineVersion")
6064

61-
fetchSpringCommonsJar(project(":utbot-spring-commons", configuration = "springCommonsJar"))
65+
implementation(project(":utbot-spring-commons-api"))
66+
if (projectType == springEdition || projectType == ultimateEdition) {
67+
fetchSpringCommonsJar(project(":utbot-spring-commons", configuration = "springCommonsJar"))
68+
}
6269
}
6370

6471
/**

utbot-intellij/build.gradle.kts

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
val projectType: String by rootProject
2+
val ultimateEdition: String by rootProject
3+
val springEdition: String by rootProject
4+
val languagesEdition: String by rootProject
5+
val pureJavaEdition: String by rootProject
6+
17
val intellijPluginVersion: String? by rootProject
28
val kotlinLoggingVersion: String? by rootProject
39
val apacheCommonsTextVersion: String? by rootProject
@@ -37,6 +43,10 @@ intellij {
3743
"java"
3844
)
3945

46+
val kotlinPlugins = mutableListOf(
47+
"org.jetbrains.kotlin"
48+
)
49+
4050
androidStudioPath?.let { jvmPlugins += androidPlugins }
4151

4252
val pythonCommunityPlugins = listOf(
@@ -59,13 +69,19 @@ intellij {
5969
"org.jetbrains.idea.maven"
6070
)
6171

72+
val basePluginSet = jvmPlugins + kotlinPlugins + mavenUtilsPlugins + androidPlugins
73+
6274
plugins.set(
63-
when (ideType) {
64-
"IC" -> jvmPlugins + pythonCommunityPlugins + androidPlugins + mavenUtilsPlugins
65-
"IU" -> jvmPlugins + pythonUltimatePlugins + jsPlugins + goPlugins + androidPlugins + mavenUtilsPlugins
66-
"PC" -> pythonCommunityPlugins
67-
"PY" -> pythonUltimatePlugins // something else, JS?
68-
else -> jvmPlugins
75+
if (projectType == languagesEdition || projectType == ultimateEdition) {
76+
when (ideType) {
77+
"IC" -> basePluginSet + pythonCommunityPlugins
78+
"IU" -> basePluginSet + pythonUltimatePlugins + jsPlugins + goPlugins
79+
"PC" -> pythonCommunityPlugins
80+
"PY" -> pythonUltimatePlugins // something else, JS?
81+
else -> basePluginSet
82+
}
83+
} else {
84+
basePluginSet
6985
}
7086
)
7187

@@ -151,19 +167,21 @@ dependencies {
151167
implementation(project(":utbot-ui-commons"))
152168

153169
//Family
154-
if (pythonIde?.split(',')?.contains(ideType) == true) {
155-
implementation(project(":utbot-python"))
156-
implementation(project(":utbot-intellij-python"))
157-
}
170+
if (projectType == languagesEdition || projectType == ultimateEdition) {
171+
if (pythonIde?.split(',')?.contains(ideType) == true) {
172+
implementation(project(":utbot-python"))
173+
implementation(project(":utbot-intellij-python"))
174+
}
158175

159-
if (jsIde?.split(',')?.contains(ideType) == true) {
160-
implementation(project(":utbot-js"))
161-
implementation(project(":utbot-intellij-js"))
162-
}
176+
if (jsIde?.split(',')?.contains(ideType) == true) {
177+
implementation(project(":utbot-js"))
178+
implementation(project(":utbot-intellij-js"))
179+
}
163180

164-
if (goIde?.split(',')?.contains(ideType) == true) {
165-
implementation(project(":utbot-go"))
166-
implementation(project(":utbot-intellij-go"))
181+
if (goIde?.split(',')?.contains(ideType) == true) {
182+
implementation(project(":utbot-go"))
183+
implementation(project(":utbot-intellij-go"))
184+
}
167185
}
168186

169187
implementation(project(":utbot-android-studio"))

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,12 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
367367
DependencyInjectionFramework.installedItems.forEach {
368368
it.testFrameworkInstalled = findDependencyInjectionTestLibrary(model.testModule, it) != null
369369
}
370+
371+
val isUtBotSpringRuntimePresent = this::class.java.classLoader.getResource("lib/utbot-spring-analyzer-shadow.jar") != null
372+
370373
model.projectType =
371-
if (DependencyInjectionFramework.installedItems.isNotEmpty()) ProjectType.Spring
374+
// TODO show some warning, when we see Spring project, but don't have `utBotSpringRuntime`
375+
if (isUtBotSpringRuntimePresent && DependencyInjectionFramework.installedItems.isNotEmpty()) ProjectType.Spring
372376
else ProjectType.PureJvm
373377

374378
// Configure notification urls callbacks

utbot-rd/build.gradle

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -257,31 +257,34 @@ task generateCommonModels(type: RdGenTask) {
257257
}
258258
}
259259

260-
task generateSpringModels(type: RdGenTask) {
261-
def currentProjectDir = project.projectDir
262-
def ideaPluginProjectDir = project.rootProject.childProjects["utbot-spring-analyzer"].projectDir
263-
def generatedOutputDir = new File(ideaPluginProjectDir, "src/main/kotlin/org/utbot/spring/generated")
264-
def hashDir = generatedOutputDir
265-
def sourcesDir = new File(currentProjectDir, "src/main/rdgen/org/utbot/rd/models")
266-
def rdParams = extensions.getByName("params") as RdGenExtension
260+
if (projectType == springEdition || projectType == ultimateEdition) {
261+
task generateSpringModels(type: RdGenTask) {
262+
def currentProjectDir = project.projectDir
263+
def ideaPluginProjectDir = project.rootProject.childProjects["utbot-spring-analyzer"].projectDir
264+
def generatedOutputDir = new File(ideaPluginProjectDir, "src/main/kotlin/org/utbot/spring/generated")
265+
def hashDir = generatedOutputDir
266+
def sourcesDir = new File(currentProjectDir, "src/main/rdgen/org/utbot/rd/models")
267+
def rdParams = extensions.getByName("params") as RdGenExtension
267268

268-
group = "rdgen"
269-
rdParams.verbose = true
270-
rdParams.sources(sourcesDir)
271-
rdParams.hashFolder = hashDir.canonicalPath
272-
// where to search roots
273-
rdParams.packages = "org.utbot.rd.models"
269+
group = "rdgen"
270+
rdParams.verbose = true
271+
rdParams.sources(sourcesDir)
272+
rdParams.hashFolder = hashDir.canonicalPath
273+
// where to search roots
274+
rdParams.packages = "org.utbot.rd.models"
274275

275-
rdParams.generator {
276-
language = "kotlin"
277-
transform = "symmetric"
278-
root = "org.utbot.rd.models.SpringAnalyzerRoot"
276+
rdParams.generator {
277+
language = "kotlin"
278+
transform = "symmetric"
279+
root = "org.utbot.rd.models.SpringAnalyzerRoot"
279280

280-
directory = generatedOutputDir.canonicalPath
281-
namespace = "org.utbot.spring.generated"
281+
directory = generatedOutputDir.canonicalPath
282+
namespace = "org.utbot.spring.generated"
283+
}
282284
}
283285
}
284286

287+
285288
task generateCSharpModels(type: RdGenTask) {
286289
def currentProjectDir = project.projectDir
287290
def riderPluginProjectDir = project.rootProject.projectDir.toPath().resolve("utbot-rider").toFile()

0 commit comments

Comments
 (0)