Skip to content

Follow up fix for PR-705 #776

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ import org.utbot.engine.util.mockListeners.ForceStaticMockListener
import org.utbot.framework.plugin.api.testFlow
import org.utbot.framework.plugin.services.WorkingDirService
import org.utbot.intellij.plugin.settings.Settings
import org.utbot.intellij.plugin.ui.utils.isGradle
import org.utbot.intellij.plugin.ui.utils.isBuildWithGradle
import org.utbot.intellij.plugin.ui.utils.suitableTestSourceRoots
import org.utbot.intellij.plugin.util.PluginWorkingDirProvider
import org.utbot.intellij.plugin.util.isAbstract
Expand Down Expand Up @@ -86,7 +86,7 @@ object UtTestsDialogProcessor {
// we want to start the child process in the same directory as the test runner
WorkingDirService.workingDirProvider = PluginWorkingDirProvider(project)

if (project.isGradle() && testModules.flatMap { it.suitableTestSourceRoots() }.isEmpty()) {
if (project.isBuildWithGradle && testModules.flatMap { it.suitableTestSourceRoots() }.isEmpty()) {
val errorMessage = """
<html>No test source roots found in the project.<br>
Please, <a href="https://www.jetbrains.com/help/idea/testing.html#add-test-root">create or configure</a> at least one test source root.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +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.isBuildWithGradle
import org.utbot.intellij.plugin.ui.utils.kotlinTargetPlatform
import org.utbot.intellij.plugin.ui.utils.parseVersion
import org.utbot.intellij.plugin.ui.utils.testResourceRootTypes
Expand Down Expand Up @@ -436,7 +436,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
val testRoot = getTestRoot()
?: return ValidationInfo("Test source root is not configured", testSourceFolderField.childComponent)

if (!model.project.isGradle() && findReadOnlyContentEntry(testRoot) == null) {
if (!model.project.isBuildWithGradle && findReadOnlyContentEntry(testRoot) == null) {
return ValidationInfo("Test source root is located out of content entry", testSourceFolderField.childComponent)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ 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
import org.utbot.intellij.plugin.ui.utils.isGradle
import org.utbot.intellij.plugin.ui.utils.isBuildWithGradle
import org.utbot.intellij.plugin.ui.utils.suitableTestSourceRoots

class TestFolderComboWithBrowseButton(private val model: GenerateTestsModel) : ComboboxWithBrowseButton() {

private val SET_TEST_FOLDER = "set test folder"

init {
if (model.project.isGradle()) {
if (model.project.isBuildWithGradle) {
setButtonEnabled(false)
button.toolTipText = "Please define custom test source root via Gradle"
}
Expand All @@ -51,10 +51,10 @@ class TestFolderComboWithBrowseButton(private val model: GenerateTestsModel) : C
}
}

val testRoots = model.potentialTestModules
.flatMap { it.suitableTestSourceRoots().toList() }
.toMutableList()
val suggestedModules =
if (model.project.isBuildWithGradle) model.project.allModules() else model.potentialTestModules

val testRoots = suggestedModules.flatMap { it.suitableTestSourceRoots().toList() }.toMutableList()
// this method is blocked for Gradle, where multiple test modules can exist
model.testModule.addDedicatedTestRoot(testRoots)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ 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 {}
Expand Down Expand Up @@ -87,10 +86,6 @@ fun Module.getOrCreateSarifReportsPath(testSourceRoot: VirtualFile?): Path {
* Find test modules by current source module.
*/
fun Module.testModules(project: Project): List<Module> {
if (project.isGradle()) {
return project.allModules()
}

var testModules = findPotentialModulesForTests(project, this)
val testRootUrls = testModules.flatMap { it.suitableTestSourceRoots() }

Expand Down Expand Up @@ -152,12 +147,13 @@ private fun Module.suitableTestSourceFolders(codegenLanguage: CodegenLanguage):
// Heuristics: User is more likely to choose the shorter path
.sortedBy { it.url.length }
}
fun Project.isGradle() = GradleProjectInfo.getInstance(this).isBuildWithGradle
val Project.isBuildWithGradle
get() = GradleProjectInfo.getInstance(this).isBuildWithGradle

private const val dedicatedTestSourceRootName = "utbot_tests"
fun Module.addDedicatedTestRoot(testSourceRoots: MutableList<VirtualFile>): VirtualFile? {
// Don't suggest new test source roots for Gradle project where 'unexpected' test roots won't work
if (project.isGradle()) return null
if (project.isBuildWithGradle) return null
// Dedicated test root already exists
if (testSourceRoots.any { file -> file.name == dedicatedTestSourceRootName }) return null

Expand Down