Skip to content

Commit 1d2e177

Browse files
UTBot doesn't show test source from other modules for Gradle project #1060
1 parent cb8474d commit 1d2e177

File tree

3 files changed

+23
-20
lines changed

3 files changed

+23
-20
lines changed

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/CodeGenerationController.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.intellij.openapi.module.Module
1919
import com.intellij.openapi.project.DumbService
2020
import com.intellij.openapi.project.Project
2121
import com.intellij.openapi.util.Computable
22+
import com.intellij.openapi.vfs.VirtualFile
2223
import com.intellij.openapi.wm.ToolWindowManager
2324
import com.intellij.psi.*
2425
import com.intellij.psi.codeStyle.CodeStyleManager
@@ -69,6 +70,8 @@ import org.utbot.sarif.SarifReport
6970
import java.nio.file.Path
7071
import java.util.concurrent.CountDownLatch
7172
import java.util.concurrent.TimeUnit
73+
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
74+
import org.utbot.intellij.plugin.ui.utils.isBuildWithGradle
7275

7376
object CodeGenerationController {
7477
private val logger = KotlinLogging.logger {}
@@ -376,6 +379,12 @@ object CodeGenerationController {
376379
}
377380
}
378381

382+
fun GenerateTestsModel.getAllTestSourceRoots() : MutableList<VirtualFile> {
383+
with(if (project.isBuildWithGradle) project.allModules() else potentialTestModules) {
384+
return this.flatMap { it.suitableTestSourceRoots().toList() }.toMutableList()
385+
}
386+
}
387+
379388
private val CodegenLanguage.utilClassFileName: String
380389
get() = "$UT_UTILS_CLASS_NAME${this.extension}"
381390

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@ import org.utbot.intellij.plugin.process.EngineProcess
3939
import org.utbot.intellij.plugin.process.RdTestGenerationResult
4040
import org.utbot.intellij.plugin.settings.Settings
4141
import org.utbot.intellij.plugin.ui.GenerateTestsDialogWindow
42-
import org.utbot.intellij.plugin.ui.utils.isBuildWithGradle
4342
import org.utbot.intellij.plugin.ui.utils.showErrorDialogLater
44-
import org.utbot.intellij.plugin.ui.utils.suitableTestSourceRoots
4543
import org.utbot.intellij.plugin.ui.utils.testModules
4644
import org.utbot.intellij.plugin.util.*
4745
import org.utbot.rd.terminateOnException
@@ -50,6 +48,7 @@ import java.nio.file.Path
5048
import java.nio.file.Paths
5149
import java.util.concurrent.TimeUnit
5250
import kotlin.io.path.pathString
51+
import org.utbot.intellij.plugin.generator.CodeGenerationController.getAllTestSourceRoots
5352

5453
object UtTestsDialogProcessor {
5554

@@ -79,7 +78,16 @@ object UtTestsDialogProcessor {
7978
// we want to start the child process in the same directory as the test runner
8079
WorkingDirService.workingDirProvider = PluginWorkingDirProvider(project)
8180

82-
if (project.isBuildWithGradle && testModules.flatMap { it.suitableTestSourceRoots() }.isEmpty()) {
81+
val model = GenerateTestsModel(
82+
project,
83+
srcModule,
84+
testModules,
85+
srcClasses,
86+
extractMembersFromSrcClasses,
87+
focusedMethods,
88+
UtSettings.utBotGenerationTimeoutInMillis,
89+
)
90+
if (model.getAllTestSourceRoots().isEmpty()) {
8391
val errorMessage = """
8492
<html>No test source roots found in the project.<br>
8593
Please, <a href="https://www.jetbrains.com/help/idea/testing.html#add-test-root">create or configure</a> at least one test source root.
@@ -88,17 +96,7 @@ object UtTestsDialogProcessor {
8896
return null
8997
}
9098

91-
return GenerateTestsDialogWindow(
92-
GenerateTestsModel(
93-
project,
94-
srcModule,
95-
testModules,
96-
srcClasses,
97-
extractMembersFromSrcClasses,
98-
focusedMethods,
99-
UtSettings.utBotGenerationTimeoutInMillis,
100-
)
101-
)
99+
return GenerateTestsDialogWindow(model)
102100
}
103101

104102
private fun createTests(project: Project, model: GenerateTestsModel) {

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ import com.intellij.util.ui.UIUtil
1616
import java.io.File
1717
import javax.swing.DefaultComboBoxModel
1818
import javax.swing.JList
19-
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
2019
import org.utbot.common.PathUtil
20+
import org.utbot.intellij.plugin.generator.CodeGenerationController.getAllTestSourceRoots
2121
import org.utbot.intellij.plugin.models.GenerateTestsModel
2222
import org.utbot.intellij.plugin.ui.utils.addDedicatedTestRoot
2323
import org.utbot.intellij.plugin.ui.utils.isBuildWithGradle
24-
import org.utbot.intellij.plugin.ui.utils.suitableTestSourceRoots
2524

2625
class TestFolderComboWithBrowseButton(private val model: GenerateTestsModel) :
2726
ComponentWithBrowseButton<ComboBox<Any>>(ComboBox(), null) {
@@ -55,10 +54,7 @@ class TestFolderComboWithBrowseButton(private val model: GenerateTestsModel) :
5554
}
5655
}
5756

58-
val suggestedModules =
59-
if (model.project.isBuildWithGradle) model.project.allModules() else model.potentialTestModules
60-
61-
val testRoots = suggestedModules.flatMap { it.suitableTestSourceRoots().toList() }.toMutableList()
57+
val testRoots = model.getAllTestSourceRoots()
6258
// this method is blocked for Gradle, where multiple test modules can exist
6359
model.testModule.addDedicatedTestRoot(testRoots)
6460

0 commit comments

Comments
 (0)