Skip to content

Get rid of "Android" plugin dependency #934 #935

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
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
@@ -1,13 +1,14 @@
package org.utbot.intellij.plugin.ui.utils

import com.android.tools.idea.gradle.project.GradleProjectInfo
import org.utbot.common.PathUtil.toPath
import org.utbot.common.WorkaroundReason
import org.utbot.common.workaround
import org.utbot.framework.plugin.api.CodegenLanguage
import org.utbot.intellij.plugin.ui.CommonErrorNotifier
import org.utbot.intellij.plugin.ui.UnsupportedJdkNotifier
import com.intellij.openapi.command.WriteCommandAction
import com.intellij.openapi.externalSystem.model.ProjectSystemId
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleUtilCore
Expand Down Expand Up @@ -147,8 +148,12 @@ private fun Module.suitableTestSourceFolders(codegenLanguage: CodegenLanguage):
// Heuristics: User is more likely to choose the shorter path
.sortedBy { it.url.length }
}
val Project.isBuildWithGradle
get() = GradleProjectInfo.getInstance(this).isBuildWithGradle
private val GRADLE_SYSTEM_ID = ProjectSystemId("GRADLE")

val Project.isBuildWithGradle get() =
ModuleManager.getInstance(this).modules.any {
ExternalSystemApiUtil.isExternalSystemAwareModule(GRADLE_SYSTEM_ID, it)
}

private const val dedicatedTestSourceRootName = "utbot_tests"
fun Module.addDedicatedTestRoot(testSourceRoots: MutableList<VirtualFile>): VirtualFile? {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package org.utbot.intellij.plugin.util

import com.android.tools.idea.IdeInfo
import com.android.tools.idea.gradle.util.GradleProjectSettingsFinder
import com.intellij.ide.plugins.PluginManagerCore
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.project.Project
import com.intellij.util.PlatformUtils
import com.intellij.util.ReflectionUtil
import com.intellij.util.concurrency.AppExecutorUtil
import org.jetbrains.kotlin.idea.util.application.invokeLater
import org.utbot.framework.plugin.api.util.UtContext
Expand Down Expand Up @@ -37,10 +37,19 @@ object IntelliJApiHelper {
private val isAndroidPluginAvailable: Boolean = !PluginManagerCore.isDisabled(PluginId.getId("org.jetbrains.android"))

fun isAndroidStudio(): Boolean =
isAndroidPluginAvailable && IdeInfo.getInstance().isAndroidStudio
isAndroidPluginAvailable && ("AndroidStudio" == PlatformUtils.getPlatformPrefix())
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to move AS-specific code in a separate Gradle sub-project in future.


fun androidGradleSDK(project: Project): String? {
return if (isAndroidPluginAvailable) GradleProjectSettingsFinder.getInstance().findGradleProjectSettings(project)?.gradleJvm
else null
if (!isAndroidPluginAvailable) return null
try {
val finderClass = Class.forName("com.android.tools.idea.gradle.util.GradleProjectSettingsFinder")
var method = ReflectionUtil.getMethod(finderClass, "findGradleProjectSettings", Project::class.java)?: return null
val gradleProjectSettings = method.invoke(project)?: return null
method = ReflectionUtil.getMethod(gradleProjectSettings.javaClass, "getGradleJvm")?: return null
val gradleJvm = method.invoke(gradleProjectSettings)
return if (gradleJvm is String) gradleJvm else null
} catch (e: Exception) {
return null
}
}
}