Fat frameworks: Run tests only on MacOS

This commit is contained in:
Ilya Matveev
2019-10-11 13:59:17 +03:00
parent 919c09d849
commit b7f9694f3a
@@ -8,14 +8,20 @@ package org.jetbrains.kotlin.gradle
import org.jetbrains.kotlin.gradle.util.checkedReplace import org.jetbrains.kotlin.gradle.util.checkedReplace
import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.gradle.util.modify
import org.jetbrains.kotlin.gradle.util.runProcess import org.jetbrains.kotlin.gradle.util.runProcess
import org.jetbrains.kotlin.konan.target.HostManager
import org.junit.Assume
import org.junit.Test import org.junit.Test
import kotlin.test.assertTrue import kotlin.test.assertTrue
class FatFrameworkIT : BaseGradleIT() { class FatFrameworkIT : BaseGradleIT() {
@Test @Test
fun smokeIos() = with(transformProjectWithPluginsDsl("smoke", directoryPrefix = "new-mpp-fat-framework")) { fun smokeIos() {
build("fat") { Assume.assumeTrue(HostManager.hostIsMac)
transformProjectWithPluginsDsl(
"smoke",
directoryPrefix = "new-mpp-fat-framework"
).build("fat") {
checkSmokeBuild( checkSmokeBuild(
archs = listOf("x64", "arm64", "arm32"), archs = listOf("x64", "arm64", "arm32"),
targetPrefix = "ios", targetPrefix = "ios",
@@ -23,7 +29,7 @@ class FatFrameworkIT : BaseGradleIT() {
) )
val binary = fileInWorkingDir("build/fat-framework/smoke.framework/smoke") val binary = fileInWorkingDir("build/fat-framework/smoke.framework/smoke")
with(runProcess(listOf("file", binary.absolutePath), projectDir)) { with(runProcess(listOf("file", binary.absolutePath), project.projectDir)) {
assertTrue(isSuccessful) assertTrue(isSuccessful)
assertTrue(output.contains("\\(for architecture x86_64\\):\\s+Mach-O 64-bit dynamically linked shared library x86_64".toRegex())) assertTrue(output.contains("\\(for architecture x86_64\\):\\s+Mach-O 64-bit dynamically linked shared library x86_64".toRegex()))
assertTrue(output.contains("\\(for architecture armv7\\):\\s+Mach-O dynamically linked shared library arm_v7".toRegex())) assertTrue(output.contains("\\(for architecture armv7\\):\\s+Mach-O dynamically linked shared library arm_v7".toRegex()))
@@ -33,27 +39,30 @@ class FatFrameworkIT : BaseGradleIT() {
} }
@Test @Test
fun smokeWatchos() = with(transformProjectWithPluginsDsl("smoke", directoryPrefix = "new-mpp-fat-framework")) { fun smokeWatchos() {
gradleBuildScript().modify { Assume.assumeTrue(HostManager.hostIsMac)
it.checkedReplace("iosArm32()", "watchosArm32()") with(transformProjectWithPluginsDsl("smoke", directoryPrefix = "new-mpp-fat-framework")) {
.checkedReplace("iosArm64()", "watchosArm64()")
.checkedReplace("iosX64()", "watchosX86()")
}
gradleBuildScript().modify {
it.checkedReplace("iosArm32()", "watchosArm32()")
.checkedReplace("iosArm64()", "watchosArm64()")
.checkedReplace("iosX64()", "watchosX86()")
}
build("fat") { build("fat") {
checkSmokeBuild( checkSmokeBuild(
archs = listOf("x86", "arm64", "arm32"), archs = listOf("x86", "arm64", "arm32"),
targetPrefix = "watchos", targetPrefix = "watchos",
expectedPlistPlatform = "WatchOS" expectedPlistPlatform = "WatchOS"
) )
val binary = fileInWorkingDir("build/fat-framework/smoke.framework/smoke") val binary = fileInWorkingDir("build/fat-framework/smoke.framework/smoke")
with(runProcess(listOf("file", binary.absolutePath), projectDir)) { with(runProcess(listOf("file", binary.absolutePath), projectDir)) {
assertTrue(isSuccessful) assertTrue(isSuccessful)
assertTrue(output.contains("\\(for architecture i386\\):\\s+Mach-O dynamically linked shared library i386".toRegex())) assertTrue(output.contains("\\(for architecture i386\\):\\s+Mach-O dynamically linked shared library i386".toRegex()))
assertTrue(output.contains("\\(for architecture armv7k\\):\\s+Mach-O dynamically linked shared library arm_v7k".toRegex())) assertTrue(output.contains("\\(for architecture armv7k\\):\\s+Mach-O dynamically linked shared library arm_v7k".toRegex()))
assertTrue(output.contains("\\(for architecture arm64_32\\):\\s+Mach-O dynamically linked shared library arm64_32_v8".toRegex())) assertTrue(output.contains("\\(for architecture arm64_32\\):\\s+Mach-O dynamically linked shared library arm64_32_v8".toRegex()))
}
} }
} }
} }
@@ -97,40 +106,41 @@ class FatFrameworkIT : BaseGradleIT() {
} }
@Test @Test
fun testDuplicatedArchitecture()= with( fun testDuplicatedArchitecture() {
transformProjectWithPluginsDsl("smoke", directoryPrefix = "new-mpp-fat-framework") Assume.assumeTrue(HostManager.hostIsMac)
) { with(transformProjectWithPluginsDsl("smoke", directoryPrefix = "new-mpp-fat-framework")) {
gradleBuildScript().modify { gradleBuildScript().modify {
it + """ it + """
val anotherDeviceTarget = kotlin.iosArm64("another") { val anotherDeviceTarget = kotlin.iosArm64("another") {
binaries.framework("DEBUG") binaries.framework("DEBUG")
} }
fat.from(anotherDeviceTarget.binaries.getFramework("DEBUG")) fat.from(anotherDeviceTarget.binaries.getFramework("DEBUG"))
""".trimIndent() """.trimIndent()
} }
build("fat") { build("fat") {
assertFailed() assertFailed()
assertContains("This fat framework already has a binary for architecture `arm64`") assertContains("This fat framework already has a binary for architecture `arm64`")
}
} }
} }
@Test @Test
fun testIncorrectFamily() = with( fun testIncorrectFamily() {
transformProjectWithPluginsDsl("smoke", directoryPrefix = "new-mpp-fat-framework") Assume.assumeTrue(HostManager.hostIsMac)
) { with(transformProjectWithPluginsDsl("smoke", directoryPrefix = "new-mpp-fat-framework")) {
gradleBuildScript().modify { gradleBuildScript().modify {
it + """ it + """
val macos = kotlin.macosX64 { val macos = kotlin.macosX64 {
binaries.framework("DEBUG") binaries.framework("DEBUG")
} }
fat.from(macos.binaries.getFramework("DEBUG")) fat.from(macos.binaries.getFramework("DEBUG"))
""".trimIndent() """.trimIndent()
} }
build("fat") { build("fat") {
assertFailed() assertFailed()
assertContains("Cannot add a binary with platform family 'osx' to the fat framework") assertContains("Cannot add a binary with platform family 'osx' to the fat framework")
}
} }
} }
} }