From 69ec42970ebce34dc4b96c4e8ac934c04279c9d9 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Wed, 10 Aug 2022 19:49:06 +0300 Subject: [PATCH 1/2] UI. Gradle project. Suggest all Test sources roots for test generation #549 --- .../intellij/plugin/ui/GenerateTestsDialogWindow.kt | 3 ++- .../ui/components/TestFolderComboWithBrowseButton.kt | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt index 36af53edd0..27784e949f 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt @@ -130,6 +130,7 @@ import org.utbot.intellij.plugin.ui.utils.addSourceRootIfAbsent import org.utbot.intellij.plugin.ui.utils.allLibraries import org.utbot.intellij.plugin.ui.utils.findFrameworkLibrary import org.utbot.intellij.plugin.ui.utils.getOrCreateTestResourcesPath +import org.utbot.intellij.plugin.ui.utils.isGradle import org.utbot.intellij.plugin.ui.utils.kotlinTargetPlatform import org.utbot.intellij.plugin.ui.utils.parseVersion import org.utbot.intellij.plugin.ui.utils.testResourceRootTypes @@ -435,7 +436,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m val testRoot = getTestRoot() ?: return ValidationInfo("Test source root is not configured", testSourceFolderField.childComponent) - if (findReadOnlyContentEntry(testRoot) == null) { + if (!model.project.isGradle() && findReadOnlyContentEntry(testRoot) == null) { return ValidationInfo("Test source root is located out of content entry", testSourceFolderField.childComponent) } diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/components/TestFolderComboWithBrowseButton.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/components/TestFolderComboWithBrowseButton.kt index 7071657f2a..2d58066366 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/components/TestFolderComboWithBrowseButton.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/components/TestFolderComboWithBrowseButton.kt @@ -13,6 +13,7 @@ import com.intellij.util.ArrayUtil import java.io.File import javax.swing.DefaultComboBoxModel import javax.swing.JList +import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.utbot.common.PathUtil import org.utbot.intellij.plugin.models.GenerateTestsModel import org.utbot.intellij.plugin.ui.utils.addDedicatedTestRoot @@ -50,7 +51,13 @@ class TestFolderComboWithBrowseButton(private val model: GenerateTestsModel) : C } } - val testRoots = model.potentialTestModules.flatMap { it.suitableTestSourceRoots().toMutableList() }.toMutableList() + val testRoots = if (model.project.isGradle()) { + val allRoots = mutableSetOf() + model.project.allModules().map { it.suitableTestSourceRoots() }.forEach(allRoots::addAll) + allRoots.toMutableList() + } else { + model.potentialTestModules.flatMap { it.suitableTestSourceRoots().toMutableList() }.toMutableList() + } // this method is blocked for Gradle, where multiple test modules can exist model.testModule.addDedicatedTestRoot(testRoots) From 9d0880503558655a8ac5b0a4c696a14bfb323850 Mon Sep 17 00:00:00 2001 From: Egor Kulikov Date: Tue, 23 Aug 2022 09:41:49 +0300 Subject: [PATCH 2/2] Attempts to improve the logic --- .../ui/components/TestFolderComboWithBrowseButton.kt | 10 +++------- .../org/utbot/intellij/plugin/ui/utils/ModuleUtils.kt | 5 +++++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/components/TestFolderComboWithBrowseButton.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/components/TestFolderComboWithBrowseButton.kt index 2d58066366..cc1937546a 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/components/TestFolderComboWithBrowseButton.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/components/TestFolderComboWithBrowseButton.kt @@ -51,13 +51,9 @@ class TestFolderComboWithBrowseButton(private val model: GenerateTestsModel) : C } } - val testRoots = if (model.project.isGradle()) { - val allRoots = mutableSetOf() - model.project.allModules().map { it.suitableTestSourceRoots() }.forEach(allRoots::addAll) - allRoots.toMutableList() - } else { - model.potentialTestModules.flatMap { it.suitableTestSourceRoots().toMutableList() }.toMutableList() - } + val testRoots = model.potentialTestModules + .flatMap { it.suitableTestSourceRoots().toList() } + .toMutableList() // this method is blocked for Gradle, where multiple test modules can exist model.testModule.addDedicatedTestRoot(testRoots) diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/utils/ModuleUtils.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/utils/ModuleUtils.kt index 6dd0411941..d8b8e8980e 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/utils/ModuleUtils.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/utils/ModuleUtils.kt @@ -31,6 +31,7 @@ import org.jetbrains.android.sdk.AndroidSdkType import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider import org.jetbrains.kotlin.config.TestResourceKotlinRootType +import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.jetbrains.kotlin.platform.TargetPlatformVersion private val logger = KotlinLogging.logger {} @@ -86,6 +87,10 @@ fun Module.getOrCreateSarifReportsPath(testSourceRoot: VirtualFile?): Path { * Find test modules by current source module. */ fun Module.testModules(project: Project): List { + if (project.isGradle()) { + return project.allModules() + } + var testModules = findPotentialModulesForTests(project, this) val testRootUrls = testModules.flatMap { it.suitableTestSourceRoots() }