diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeWizard.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeWizard.kt index 5e4e0570313..39be9ca01a3 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeWizard.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeWizard.kt @@ -14,13 +14,15 @@ import kotlin.reflect.KProperty class IdeWizard( createPlugins: PluginsCreator, - initialServices: List + initialServices: List, + isUnitTestMode: Boolean ) : Wizard( createPlugins, ServicesManager(initialServices) { services -> services.firstOrNull { it is IdeaWizardService } ?: services.firstOrNull() - } + }, + isUnitTestMode ) { private val allSettings = plugins.flatMap { it.declaredSettings } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt index 7fe74c1bf09..290cd647549 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt @@ -35,7 +35,7 @@ import com.intellij.openapi.module.Module as IdeaModule class NewProjectWizardModuleBuilder : ModuleBuilder() { - private val wizard = IdeWizard(Plugins.allPlugins, IdeaServices.PROJECT_INDEPENDENT) + private val wizard = IdeWizard(Plugins.allPlugins, IdeaServices.PROJECT_INDEPENDENT, isUnitTestMode = false) companion object { const val MODULE_BUILDER_ID = "kotlin.newProjectWizard.builder" diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/src/org/jetbrains/kotlin/tools/projectWizard/wizard/YamlWizard.kt b/libraries/tools/new-project-wizard/new-project-wizard-cli/src/org/jetbrains/kotlin/tools/projectWizard/wizard/YamlWizard.kt index 6569ba87498..dc2d1a648de 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/src/org/jetbrains/kotlin/tools/projectWizard/wizard/YamlWizard.kt +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/src/org/jetbrains/kotlin/tools/projectWizard/wizard/YamlWizard.kt @@ -14,12 +14,13 @@ import java.nio.file.Paths class YamlWizard( private val yaml: String, private val path: String, - createPlugins: (Context) -> List + createPlugins: (Context) -> List, + isUnitTestMode: Boolean ) : Wizard( createPlugins, ServicesManager(Services.IDEA_INDEPENDENT_SERVICES) { services -> services.firstOrNull { it is IdeaIndependentWizardService } - } + }, isUnitTestMode ) { override fun apply( services: List, diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/settings.yaml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/settings.yaml index 7623b87ff33..bd1ec7d146b 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/settings.yaml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/android/settings.yaml @@ -4,7 +4,7 @@ kotlin: modules: - type: name: android - androidSdkPath: /home/ilya/Android/Sdk + androidSdkPath: /home/user/Android/Sdk kind: singleplatform name: android sourcesets: diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/AbstractBuildFileGenerationTest.kt b/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/AbstractBuildFileGenerationTest.kt index 9f43d89afe5..255dae34734 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/AbstractBuildFileGenerationTest.kt +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/AbstractBuildFileGenerationTest.kt @@ -38,7 +38,7 @@ abstract class AbstractBuildFileGenerationTest : AbstractPluginBasedTest() { defaultStructure + "\n" + buildSystem.yaml val tempDir = Files.createTempDirectory(null) - val wizard = YamlWizard(yaml, tempDir.toString(), testData.createPlugins) + val wizard = YamlWizard(yaml, tempDir.toString(), testData.createPlugins, isUnitTestMode = true) val result = wizard.apply(Services.IDEA_INDEPENDENT_SERVICES, GenerationPhase.ALL) result.onFailure { errors -> errors.forEach { error -> diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/TaskRunningContext.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/TaskRunningContext.kt index e5ff3ad96b3..de3f8f7f6ac 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/TaskRunningContext.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/TaskRunningContext.kt @@ -7,8 +7,9 @@ import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager class TaskRunningContext( context: Context, - servicesManager: ServicesManager -) : ValuesReadingContext(context, servicesManager) { + servicesManager: ServicesManager, + isUnitTestMode: Boolean +) : ValuesReadingContext(context, servicesManager, isUnitTestMode) { fun Task1Reference.execute(value: A): TaskResult { @Suppress("UNCHECKED_CAST") val task = context.taskContext.getEntity(this) as Task1 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ValuesReadingContext.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ValuesReadingContext.kt index 7cc5e7603d0..422b9ce49fc 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ValuesReadingContext.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ValuesReadingContext.kt @@ -6,8 +6,11 @@ import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager import kotlin.reflect.KClass import kotlin.reflect.KProperty1 -@Suppress("UNCHECKED_CAST") -open class ValuesReadingContext(val context: Context, private val servicesManager: ServicesManager) { +open class ValuesReadingContext( + val context: Context, + private val servicesManager: ServicesManager, + val isUnitTestMode: Boolean +) { inline fun service(noinline filter: (S) -> Boolean = { true }) = serviceByClass(S::class, filter) fun serviceByClass(klass: KClass, filter: (S) -> Boolean = { true }) = diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Setting.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Setting.kt index 37dba854e7c..45aa2632a35 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Setting.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Setting.kt @@ -375,6 +375,7 @@ object PathSettingType : SettingType() { } fun shouldExists() = validate { pathValue -> + if (isUnitTestMode) return@validate ValidationResult.OK if (!Files.exists(pathValue)) ValidationResult.ValidationError("File for ${title.capitalize()} should exists") else ValidationResult.OK diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt index 6d7774bdb77..842887a64e3 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt @@ -6,9 +6,9 @@ import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardService import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase -abstract class Wizard(createPlugins: PluginsCreator, val servicesManager: ServicesManager) { +abstract class Wizard(createPlugins: PluginsCreator, val servicesManager: ServicesManager, private val isUnitTestMode: Boolean) { val context = Context(createPlugins, EventManager()) - val valuesReadingContext = ValuesReadingContext(context, servicesManager) + val valuesReadingContext = ValuesReadingContext(context, servicesManager, isUnitTestMode) protected val plugins = context.plugins protected val pluginSettings = plugins.flatMap { it.declaredSettings }.distinctBy { it.path } @@ -34,7 +34,7 @@ abstract class Wizard(createPlugins: PluginsCreator, val servicesManager: Servic onTaskExecuting: (PipelineTask) -> Unit = {} ): TaskResult = computeM { context.checkAllRequiredSettingPresent(phases).ensure() - val taskRunningContext = TaskRunningContext(context, servicesManager.withServices(services)) + val taskRunningContext = TaskRunningContext(context, servicesManager.withServices(services), isUnitTestMode) taskRunningContext.validate(phases).ensure() val (tasksSorted) = context.sortTasks().map { tasks -> tasks.groupBy { it.phase }.toList().sortedBy { it.first }.flatMap { it.second }