mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
76 lines
3.0 KiB
Kotlin
76 lines
3.0 KiB
Kotlin
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
|
package org.jetbrains.plugins.gradle.setup
|
|
|
|
import com.intellij.codeInspection.ex.InspectionProfileImpl
|
|
import com.intellij.ide.actions.ImportProjectAction
|
|
import com.intellij.openapi.externalSystem.action.AttachExternalProjectAction
|
|
import com.intellij.openapi.externalSystem.autolink.ExternalSystemUnlinkedProjectAware.Companion.EP_NAME
|
|
import com.intellij.openapi.externalSystem.autolink.forEachExtensionSafeAsync
|
|
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
|
import com.intellij.openapi.externalSystem.util.performAction
|
|
import com.intellij.openapi.externalSystem.util.performOpenAction
|
|
import com.intellij.openapi.project.Project
|
|
import com.intellij.testFramework.utils.vfs.getDirectory
|
|
import org.jetbrains.plugins.gradle.action.ImportProjectFromScriptAction
|
|
import org.jetbrains.plugins.gradle.testFramework.GradleTestCase
|
|
import org.jetbrains.plugins.gradle.testFramework.util.ProjectInfo
|
|
import org.jetbrains.plugins.gradle.testFramework.util.getSettingsFile
|
|
import org.jetbrains.plugins.gradle.util.GradleConstants
|
|
|
|
abstract class GradleOpenProjectTestCase : GradleTestCase() {
|
|
|
|
suspend fun importProject(projectInfo: ProjectInfo, numProjectSyncs: Int = 1): Project {
|
|
return awaitOpenProjectConfiguration(numProjectSyncs) {
|
|
performOpenAction(
|
|
action = ImportProjectAction(),
|
|
systemId = GradleConstants.SYSTEM_ID,
|
|
selectedFile = testRoot.getSettingsFile(projectInfo.relativePath, projectInfo.useKotlinDsl)
|
|
)
|
|
}
|
|
}
|
|
|
|
suspend fun attachProject(project: Project, relativePath: String) {
|
|
awaitProjectConfiguration(project) {
|
|
performAction(
|
|
action = AttachExternalProjectAction(),
|
|
project = project,
|
|
systemId = GradleConstants.SYSTEM_ID,
|
|
selectedFile = testRoot.getDirectory(relativePath)
|
|
)
|
|
}
|
|
}
|
|
|
|
suspend fun attachMavenProject(project: Project, relativePath: String) {
|
|
val mavenSystemId = ProjectSystemId("MAVEN")
|
|
val projectPath = testRoot.getDirectory(relativePath).toNioPath().toString()
|
|
EP_NAME.forEachExtensionSafeAsync { extension ->
|
|
if (extension.systemId == mavenSystemId) {
|
|
extension.linkAndLoadProjectAsync(project, projectPath)
|
|
}
|
|
}
|
|
}
|
|
|
|
suspend fun attachProjectFromScript(project: Project, relativePath: String) {
|
|
awaitProjectConfiguration(project) {
|
|
performAction(
|
|
action = ImportProjectFromScriptAction(),
|
|
project = project,
|
|
systemId = GradleConstants.SYSTEM_ID,
|
|
selectedFile = testRoot.getDirectory(relativePath)
|
|
)
|
|
}
|
|
}
|
|
|
|
fun InspectionProfileImpl.ensureInitialized(project: Project) {
|
|
if (!wasInitialized()) {
|
|
val oldValue = InspectionProfileImpl.INIT_INSPECTIONS
|
|
try {
|
|
InspectionProfileImpl.INIT_INSPECTIONS = true
|
|
initInspectionTools(project)
|
|
}
|
|
finally {
|
|
InspectionProfileImpl.INIT_INSPECTIONS = oldValue
|
|
}
|
|
}
|
|
}
|
|
} |