MPP wizard tests: run Native tests using correct task name

This commit is contained in:
Mikhail Glukhikh
2018-10-17 18:10:55 +03:00
parent 3a105debb3
commit c770a80ab9
6 changed files with 28 additions and 17 deletions
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.ide.konan.gradle package org.jetbrains.kotlin.ide.konan.gradle
import com.intellij.openapi.module.Module
import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.idea.configuration.KotlinGradleAbstractMultiplatformModuleBuilder import org.jetbrains.kotlin.idea.configuration.KotlinGradleAbstractMultiplatformModuleBuilder
import org.jetbrains.kotlin.konan.target.presetName import org.jetbrains.kotlin.konan.target.presetName
@@ -16,7 +15,7 @@ class KotlinGradleNativeMultiplatformModuleBuilder : KotlinGradleAbstractMultipl
private val nativeTargetName = defaultNativeTarget.userTargetName private val nativeTargetName = defaultNativeTarget.userTargetName
private val nativeSourceName get() = "$nativeTargetName$productionSuffix" private val nativeSourceName get() = "$nativeTargetName$productionSuffix"
private val nativeTestName get() = "$nativeTargetName$testSuffix" val nativeTestName get() = "$nativeTargetName$testSuffix"
override fun getBuilderId() = "kotlin.gradle.multiplatform.native" override fun getBuilderId() = "kotlin.gradle.multiplatform.native"
@@ -19,7 +19,7 @@ class KotlinGradleMobileSharedMultiplatformModuleBuilder : KotlinGradleAbstractM
private val jvmSourceName get() = "$jvmTargetName$productionSuffix" private val jvmSourceName get() = "$jvmTargetName$productionSuffix"
private val jvmTestName get() = "$jvmTargetName$testSuffix" private val jvmTestName get() = "$jvmTargetName$testSuffix"
private val nativeSourceName get() = "$nativeTargetName$productionSuffix" private val nativeSourceName get() = "$nativeTargetName$productionSuffix"
private val nativeTestName get() = "$nativeTargetName$testSuffix" val nativeTestName get() = "$nativeTargetName$testSuffix"
override val shouldEnableGradleMetadataPreview: Boolean = true override val shouldEnableGradleMetadataPreview: Boolean = true
@@ -23,7 +23,7 @@ class KotlinGradleSharedMultiplatformModuleBuilder : KotlinGradleAbstractMultipl
private val jsSourceName get() = "$jsTargetName$productionSuffix" private val jsSourceName get() = "$jsTargetName$productionSuffix"
private val jsTestName get() = "$jsTargetName$testSuffix" private val jsTestName get() = "$jsTargetName$testSuffix"
private val nativeSourceName get() = "$nativeTargetName$productionSuffix" private val nativeSourceName get() = "$nativeTargetName$productionSuffix"
private val nativeTestName get() = "$nativeTargetName$testSuffix" val nativeTestName get() = "$nativeTargetName$testSuffix"
override val shouldEnableGradleMetadataPreview: Boolean = true override val shouldEnableGradleMetadataPreview: Boolean = true
@@ -84,7 +84,7 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase<Abs
vararg testClassNames: String, vararg testClassNames: String,
metadataInside: Boolean = false, metadataInside: Boolean = false,
performImport: Boolean = true performImport: Boolean = true
) { ): Project {
// TODO: check whether it's necessary to have templates in sources // TODO: check whether it's necessary to have templates in sources
// Temporary workaround for duplicated bundled template // Temporary workaround for duplicated bundled template
class PrintingFactory : Logger.Factory { class PrintingFactory : Logger.Factory {
@@ -132,11 +132,12 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase<Abs
val buildScriptText = StringUtil.convertLineSeparators(VfsUtilCore.loadText(buildScript)) val buildScriptText = StringUtil.convertLineSeparators(VfsUtilCore.loadText(buildScript))
println(buildScriptText) println(buildScriptText)
if (!performImport) return if (!performImport) return project
doImportProject(project) doImportProject(project)
if (testClassNames.isNotEmpty()) { if (testClassNames.isNotEmpty()) {
doTestProject(project, *testClassNames) doTestProject(project, *testClassNames)
} }
return project
} }
private fun File.assertNoEmptyChildren() { private fun File.assertNoEmptyChildren() {
@@ -242,6 +243,14 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase<Abs
} }
} }
protected fun runTaskInProject(project: Project, taskName: String) {
val settings = GradleExecutionSettings(null, null, DistributionType.DEFAULT_WRAPPED, false)
println("Running project task: $taskName")
GradleExecutionHelper().execute(project.basePath!!, settings) {
it.newBuild().forTasks(taskName).run()
}
}
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
val javaHome = IdeaTestUtil.requireRealJdkHome() val javaHome = IdeaTestUtil.requireRealJdkHome()
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.idea.configuration.KotlinGradleMobileMultiplatformMo
import org.jetbrains.kotlin.idea.configuration.KotlinGradleMobileSharedMultiplatformModuleBuilder import org.jetbrains.kotlin.idea.configuration.KotlinGradleMobileSharedMultiplatformModuleBuilder
import org.jetbrains.kotlin.idea.configuration.KotlinGradleSharedMultiplatformModuleBuilder import org.jetbrains.kotlin.idea.configuration.KotlinGradleSharedMultiplatformModuleBuilder
import org.jetbrains.kotlin.idea.configuration.KotlinGradleWebMultiplatformModuleBuilder import org.jetbrains.kotlin.idea.configuration.KotlinGradleWebMultiplatformModuleBuilder
import org.jetbrains.kotlin.konan.target.HostManager
import org.junit.Test import org.junit.Test
class GradleMultiplatformWizardTest : AbstractGradleMultiplatformWizardTest() { class GradleMultiplatformWizardTest : AbstractGradleMultiplatformWizardTest() {
@@ -21,24 +22,26 @@ class GradleMultiplatformWizardTest : AbstractGradleMultiplatformWizardTest() {
@Test @Test
fun testMobileShared() { fun testMobileShared() {
testImportFromBuilder( val builder = KotlinGradleMobileSharedMultiplatformModuleBuilder()
KotlinGradleMobileSharedMultiplatformModuleBuilder(), val project = testImportFromBuilder(builder, "SampleTests", "SampleTestsJVM", metadataInside = true)
"SampleTests", "SampleTestsJVM", "SampleTestsNative", metadataInside = true // Native tests can be run on Mac only
) if (HostManager.hostIsMac) {
runTaskInProject(project, builder.nativeTestName)
}
} }
@Test @Test
fun testNative() { fun testNative() {
// TODO: add test run here (probably after fix of KT-27599) val builder = KotlinGradleNativeMultiplatformModuleBuilder()
testImportFromBuilder(KotlinGradleNativeMultiplatformModuleBuilder()) val project = testImportFromBuilder(builder)
runTaskInProject(project, builder.nativeTestName)
} }
@Test @Test
fun testShared() { fun testShared() {
testImportFromBuilder( val builder = KotlinGradleSharedMultiplatformModuleBuilder()
KotlinGradleSharedMultiplatformModuleBuilder(), val project = testImportFromBuilder(builder, "SampleTests", "SampleTestsJVM", "SampleTestsNative", metadataInside = true)
"SampleTests", "SampleTestsJVM", "SampleTestsNative", metadataInside = true runTaskInProject(project, builder.nativeTestName)
)
} }
@Test @Test
@@ -15,7 +15,7 @@ class GradleMultiplatformWizardTest : AbstractGradleMultiplatformWizardTest() {
// NB: I'm not quite sure this thing really works in 181 (Native is inside) // NB: I'm not quite sure this thing really works in 181 (Native is inside)
testImportFromBuilder( testImportFromBuilder(
KotlinGradleSharedMultiplatformModuleBuilder(), KotlinGradleSharedMultiplatformModuleBuilder(),
"SampleTests", "SampleTestsJVM", "SampleTestsNative", metadataInside = true "SampleTests", "SampleTestsJVM", metadataInside = true
) )
} }