Fix reimport of Kotlin projects created via wizard
#KT-27941 Fixed
This commit is contained in:
+22
@@ -7,7 +7,11 @@ package org.jetbrains.kotlin.idea.configuration
|
||||
|
||||
import com.intellij.ide.util.projectWizard.ModuleWizardStep
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.openapi.externalSystem.ExternalSystemModulePropertyManager
|
||||
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
||||
import com.intellij.openapi.externalSystem.model.project.ModuleData
|
||||
import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.roots.ui.configuration.ModulesProvider
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
@@ -21,6 +25,7 @@ import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
|
||||
import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder
|
||||
import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl
|
||||
import org.jetbrains.plugins.gradle.settings.DistributionType
|
||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||
import javax.swing.Icon
|
||||
|
||||
abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
|
||||
@@ -106,6 +111,23 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
|
||||
}
|
||||
|
||||
if (notImportedCommonSourceSets) GradlePropertiesFileFacade.forProject(module.project).addNotImportedCommonSourceSetsProperty()
|
||||
// Ensure project root path is set
|
||||
val propertyManager = ExternalSystemModulePropertyManager.getInstance(module)
|
||||
val path = externalProjectSettings.externalProjectPath
|
||||
val externalSystemId = propertyManager.getExternalSystemId()
|
||||
if (ExternalSystemApiUtil.getExternalRootProjectPath(module) == null && externalSystemId != null) {
|
||||
val projectSystemId = ProjectSystemId(externalSystemId)
|
||||
val projectData = ProjectData(projectSystemId, module.name, path, path)
|
||||
val moduleData = ModuleData(
|
||||
propertyManager.getLinkedProjectId() ?: "",
|
||||
projectSystemId,
|
||||
propertyManager.getExternalModuleType() ?: "",
|
||||
module.name,
|
||||
path,
|
||||
path
|
||||
)
|
||||
propertyManager.setExternalOptions(projectSystemId, moduleData, projectData)
|
||||
}
|
||||
} finally {
|
||||
flushSettingsGradleCopy(module)
|
||||
}
|
||||
|
||||
+5
-3
@@ -83,7 +83,8 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase<Abs
|
||||
builder: KotlinGradleAbstractMultiplatformModuleBuilder,
|
||||
vararg testClassNames: String,
|
||||
metadataInside: Boolean = false,
|
||||
performImport: Boolean = true
|
||||
performImport: Boolean = true,
|
||||
useQualifiedModuleNames: Boolean = false
|
||||
): Project {
|
||||
// TODO: check whether it's necessary to have templates in sources
|
||||
// Temporary workaround for duplicated bundled template
|
||||
@@ -133,7 +134,7 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase<Abs
|
||||
println(buildScriptText)
|
||||
|
||||
if (!performImport) return project
|
||||
doImportProject(project)
|
||||
doImportProject(project, useQualifiedModuleNames)
|
||||
if (testClassNames.isNotEmpty()) {
|
||||
doTestProject(project, *testClassNames)
|
||||
}
|
||||
@@ -175,7 +176,7 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase<Abs
|
||||
}.execute()
|
||||
}
|
||||
|
||||
private fun doImportProject(project: Project) {
|
||||
private fun doImportProject(project: Project, useQualifiedModuleNames: Boolean = false) {
|
||||
ExternalSystemApiUtil.subscribe(
|
||||
project,
|
||||
GradleConstants.SYSTEM_ID,
|
||||
@@ -199,6 +200,7 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase<Abs
|
||||
distributionType = DistributionType.DEFAULT_WRAPPED
|
||||
externalProjectPath = project.basePath!!
|
||||
gradleJvm = DEFAULT_SDK
|
||||
isUseQualifiedModuleNames = useQualifiedModuleNames
|
||||
}
|
||||
|
||||
val error = Ref.create<Couple<String>>()
|
||||
|
||||
@@ -44,6 +44,14 @@ class GradleMultiplatformWizardTest : AbstractGradleMultiplatformWizardTest() {
|
||||
runTaskInProject(project, builder.nativeTestName)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSharedWithQualifiedName() {
|
||||
val builder = KotlinGradleSharedMultiplatformModuleBuilder()
|
||||
val project = testImportFromBuilder(builder, "SampleTests", "SampleTestsJVM", "SampleTestsNative", metadataInside = true, useQualifiedModuleNames = true)
|
||||
runTaskInProject(project, builder.nativeTestName)
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun testWeb() {
|
||||
testImportFromBuilder(KotlinGradleWebMultiplatformModuleBuilder(), "SampleTests", "SampleTestsJVM")
|
||||
|
||||
Reference in New Issue
Block a user