MPP wizard tests: add tests run #KT-27492 Fixed
This commit is contained in:
+30
-11
@@ -47,7 +47,9 @@ import org.jetbrains.kotlin.ide.konan.gradle.KotlinGradleNativeMultiplatformModu
|
|||||||
import org.jetbrains.kotlin.idea.codeInsight.gradle.GradleImportingTestCase
|
import org.jetbrains.kotlin.idea.codeInsight.gradle.GradleImportingTestCase
|
||||||
import org.jetbrains.kotlin.idea.configuration.*
|
import org.jetbrains.kotlin.idea.configuration.*
|
||||||
import org.jetbrains.kotlin.utils.PrintingLogger
|
import org.jetbrains.kotlin.utils.PrintingLogger
|
||||||
|
import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper
|
||||||
import org.jetbrains.plugins.gradle.settings.DistributionType
|
import org.jetbrains.plugins.gradle.settings.DistributionType
|
||||||
|
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleSettings
|
import org.jetbrains.plugins.gradle.settings.GradleSettings
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||||
@@ -78,7 +80,9 @@ class GradleMultiplatformWizardTest : ProjectWizardTestCase<AbstractProjectWizar
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun testImportFromBuilder(
|
private fun testImportFromBuilder(
|
||||||
builder: KotlinGradleAbstractMultiplatformModuleBuilder, nameRoot: String, metadataInside: Boolean = false
|
builder: KotlinGradleAbstractMultiplatformModuleBuilder,
|
||||||
|
vararg testClassNames: String,
|
||||||
|
metadataInside: Boolean = false
|
||||||
) {
|
) {
|
||||||
// Temporary workaround for duplicated bundled template
|
// Temporary workaround for duplicated bundled template
|
||||||
class PrintingFactory : Logger.Factory {
|
class PrintingFactory : Logger.Factory {
|
||||||
@@ -88,8 +92,6 @@ class GradleMultiplatformWizardTest : ProjectWizardTestCase<AbstractProjectWizar
|
|||||||
}
|
}
|
||||||
Logger.setFactory(PrintingFactory::class.java)
|
Logger.setFactory(PrintingFactory::class.java)
|
||||||
|
|
||||||
// For some reason with any other name it does not work (???)
|
|
||||||
val projectName = "test${nameRoot}new"
|
|
||||||
val project = createProject { step ->
|
val project = createProject { step ->
|
||||||
if (step is ProjectTypeStep) {
|
if (step is ProjectTypeStep) {
|
||||||
TestCase.assertTrue(step.setSelectedTemplate("Kotlin", builder.presentableName))
|
TestCase.assertTrue(step.setSelectedTemplate("Kotlin", builder.presentableName))
|
||||||
@@ -98,7 +100,6 @@ class GradleMultiplatformWizardTest : ProjectWizardTestCase<AbstractProjectWizar
|
|||||||
val projectBuilder = myWizard.projectBuilder
|
val projectBuilder = myWizard.projectBuilder
|
||||||
UsefulTestCase.assertInstanceOf(projectBuilder, builder::class.java)
|
UsefulTestCase.assertInstanceOf(projectBuilder, builder::class.java)
|
||||||
with(projectBuilder as KotlinGradleAbstractMultiplatformModuleBuilder) {
|
with(projectBuilder as KotlinGradleAbstractMultiplatformModuleBuilder) {
|
||||||
name = projectName
|
|
||||||
explicitPluginVersion = pluginVersion
|
explicitPluginVersion = pluginVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,19 +109,17 @@ class GradleMultiplatformWizardTest : ProjectWizardTestCase<AbstractProjectWizar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TestCase.assertEquals(projectName, project.name)
|
|
||||||
val modules = ModuleManager.getInstance(project).modules
|
val modules = ModuleManager.getInstance(project).modules
|
||||||
TestCase.assertEquals(1, modules.size)
|
TestCase.assertEquals(1, modules.size)
|
||||||
val module = modules[0]
|
val module = modules[0]
|
||||||
TestCase.assertTrue(ModuleRootManager.getInstance(module).isSdkInherited)
|
TestCase.assertTrue(ModuleRootManager.getInstance(module).isSdkInherited)
|
||||||
TestCase.assertEquals(projectName, module.name)
|
|
||||||
|
|
||||||
val root = ProjectRootManager.getInstance(project).contentRoots[0]
|
val root = ProjectRootManager.getInstance(project).contentRoots[0]
|
||||||
|
|
||||||
val settingsScript = VfsUtilCore.findRelativeFile("settings.gradle", root)
|
val settingsScript = VfsUtilCore.findRelativeFile("settings.gradle", root)
|
||||||
TestCase.assertNotNull(settingsScript)
|
TestCase.assertNotNull(settingsScript)
|
||||||
val settingsScriptText = StringUtil.convertLineSeparators(VfsUtilCore.loadText(settingsScript!!))
|
val settingsScriptText = StringUtil.convertLineSeparators(VfsUtilCore.loadText(settingsScript!!))
|
||||||
TestCase.assertTrue(String.format("rootProject.name = '%s'\n\n", projectName) in settingsScriptText)
|
TestCase.assertTrue("rootProject.name = " in settingsScriptText)
|
||||||
if (metadataInside) {
|
if (metadataInside) {
|
||||||
TestCase.assertTrue("enableFeaturePreview('GRADLE_METADATA')" in settingsScriptText)
|
TestCase.assertTrue("enableFeaturePreview('GRADLE_METADATA')" in settingsScriptText)
|
||||||
}
|
}
|
||||||
@@ -130,6 +129,9 @@ class GradleMultiplatformWizardTest : ProjectWizardTestCase<AbstractProjectWizar
|
|||||||
println(buildScriptText)
|
println(buildScriptText)
|
||||||
|
|
||||||
doImportProject(project)
|
doImportProject(project)
|
||||||
|
if (testClassNames.isNotEmpty()) {
|
||||||
|
doTestProject(project, *testClassNames)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
@@ -210,26 +212,43 @@ class GradleMultiplatformWizardTest : ProjectWizardTestCase<AbstractProjectWizar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun doTestProject(project: Project, vararg testClassNames: String) {
|
||||||
|
val settings = GradleExecutionSettings(null, null, DistributionType.DEFAULT_WRAPPED, false)
|
||||||
|
GradleExecutionHelper().execute(project.basePath!!, settings) {
|
||||||
|
val testLauncher = it.newTestLauncher()
|
||||||
|
testLauncher.withJvmTestClasses(*testClassNames).run()
|
||||||
|
it.close()
|
||||||
|
// TODO: fix "Failed to delete" problem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: add testMobile when we will be able to locate Android SDK automatically
|
// TODO: add testMobile when we will be able to locate Android SDK automatically
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testMobileShared() {
|
fun testMobileShared() {
|
||||||
testImportFromBuilder(KotlinGradleMobileSharedMultiplatformModuleBuilder(), "MobileShared", metadataInside = true)
|
testImportFromBuilder(
|
||||||
|
KotlinGradleMobileSharedMultiplatformModuleBuilder(),
|
||||||
|
"SampleTests", "SampleTestsJVM", "SampleTestsNative", metadataInside = true
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testNative() {
|
fun testNative() {
|
||||||
testImportFromBuilder(KotlinGradleNativeMultiplatformModuleBuilder(), "Native")
|
// TODO: add test run here (probably after fix of KT-27599)
|
||||||
|
testImportFromBuilder(KotlinGradleNativeMultiplatformModuleBuilder())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testShared() {
|
fun testShared() {
|
||||||
testImportFromBuilder(KotlinGradleSharedMultiplatformModuleBuilder(), "Shared", metadataInside = true)
|
testImportFromBuilder(
|
||||||
|
KotlinGradleSharedMultiplatformModuleBuilder(),
|
||||||
|
"SampleTests", "SampleTestsJVM", "SampleTestsNative", metadataInside = true
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testWeb() {
|
fun testWeb() {
|
||||||
testImportFromBuilder(KotlinGradleWebMultiplatformModuleBuilder(), "Web")
|
testImportFromBuilder(KotlinGradleWebMultiplatformModuleBuilder(), "SampleTests", "SampleTestsJVM")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setUp() {
|
override fun setUp() {
|
||||||
|
|||||||
Reference in New Issue
Block a user