All but one

This commit is contained in:
Kirill Shmakov
2019-02-25 13:46:34 +03:00
parent b695f20526
commit fb14128cbd
4 changed files with 31 additions and 23 deletions
@@ -72,6 +72,6 @@ public class KotlinVersion(val major: Int, val minor: Int, val patch: Int) : Com
* Returns the current version of the Kotlin standard library. * Returns the current version of the Kotlin standard library.
*/ */
@kotlin.jvm.JvmField @kotlin.jvm.JvmField
public val CURRENT: KotlinVersion = KotlinVersion(1, 3, 0) // value is written here automatically during build public val CURRENT: KotlinVersion = KotlinVersion(1, 3, 30) // value is written here automatically during build
} }
} }
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.HostManager
import org.junit.Assert import org.junit.Assert
import org.junit.Test import org.junit.Test
import java.lang.StringBuilder
import java.util.jar.JarFile import java.util.jar.JarFile
import java.util.zip.ZipFile import java.util.zip.ZipFile
import kotlin.test.assertEquals import kotlin.test.assertEquals
@@ -34,6 +35,13 @@ class NewMultiplatformIT : BaseGradleIT() {
else -> error("Unknown host") else -> error("Unknown host")
} }
val supportedNativeTargets = when {
HostManager.hostIsMingw -> listOf("linux64", "mingw64", "wasm32")
HostManager.hostIsLinux -> listOf("linux64", "mingw64", "wasm32")
HostManager.hostIsMac -> listOf("linux64", "macos64", "wasm32")
else -> error("Unknown host")
}
private fun Project.targetClassesDir(targetName: String, sourceSetName: String = "main") = private fun Project.targetClassesDir(targetName: String, sourceSetName: String = "main") =
classesDir(sourceSet = "$targetName/$sourceSetName") classesDir(sourceSet = "$targetName/$sourceSetName")
@@ -615,19 +623,21 @@ class NewMultiplatformIT : BaseGradleIT() {
projectDir.resolve("repo") projectDir.resolve("repo")
} }
val dependencyBuilder = StringBuilder()
dependencyBuilder.append("dependencies {\n")
dependencyBuilder.append(" allJvmImplementation 'com.example:sample-lib-jvm6:1.0'\n")
dependencyBuilder.append(" nodeJsMainImplementation 'com.example:sample-lib-nodejs:1.0'\n")
for (target in supportedNativeTargets) {
dependencyBuilder.append(" ${target}MainImplementation 'com.example:sample-lib-$target:1.0'\n")
}
dependencyBuilder.append("}")
with(Project("sample-app", gradleVersion, "new-mpp-lib-and-app")) { with(Project("sample-app", gradleVersion, "new-mpp-lib-and-app")) {
setupWorkingDir() setupWorkingDir()
gradleBuildScript().modify { gradleBuildScript().modify {
it.replace("implementation 'com.example:sample-lib:1.0'", "implementation 'com.example:sample-lib-metadata:1.0'") + "\n" + """ it.replace("implementation 'com.example:sample-lib:1.0'", "implementation 'com.example:sample-lib-metadata:1.0'") +
repositories { maven { url '${repoDir.toURI()}' } } "\nrepositories { maven { url '${repoDir.toURI()}' } }\n\n" + dependencyBuilder.toString()
dependencies {
allJvmImplementation 'com.example:sample-lib-jvm6:1.0'
nodeJsMainImplementation 'com.example:sample-lib-nodejs:1.0'
wasm32MainImplementation 'com.example:sample-lib-wasm32:1.0'
${nativeHostTargetName}MainImplementation 'com.example:sample-lib-${nativeHostTargetName.toLowerCase()}:1.0'
}
""".trimIndent()
} }
build("assemble") { build("assemble") {
@@ -1092,9 +1102,13 @@ class NewMultiplatformIT : BaseGradleIT() {
} }
val host = nativeHostTargetName val host = nativeHostTargetName
val libraryCinteropTask = ":projectLibrary:cinteropStdio${host.capitalize()}"
val libraryCompileTask = ":projectLibrary:compileKotlin${host.capitalize()}"
build(":projectLibrary:build") { build(":projectLibrary:build") {
assertSuccessful() assertSuccessful()
assertTasksExecuted(":projectLibrary:cinteropStdio${host.capitalize()}") assertTasksExecuted(libraryCinteropTask)
assertTrue(output.contains("Project test"), "No test output found") assertTrue(output.contains("Project test"), "No test output found")
assertFileExists("projectLibrary/build/classes/kotlin/$host/main/projectLibrary-cinterop-stdio.klib") assertFileExists("projectLibrary/build/classes/kotlin/$host/main/projectLibrary-cinterop-stdio.klib")
} }
@@ -1116,18 +1130,12 @@ class NewMultiplatformIT : BaseGradleIT() {
// Check that changing the compiler version in properties causes interop reprocessing and source recompilation. // Check that changing the compiler version in properties causes interop reprocessing and source recompilation.
build(":projectLibrary:build") { build(":projectLibrary:build") {
assertSuccessful() assertSuccessful()
assertTasksUpToDate( assertTasksUpToDate(libraryCinteropTask, libraryCompileTask)
":projectLibrary:cinteropStdio${host.capitalize()}",
":projectLibrary:compileKotlin${host.capitalize()}"
)
} }
build(":projectLibrary:build", "-Porg.jetbrains.kotlin.native.version=0.9.2") { build(libraryCinteropTask, libraryCompileTask, "-Porg.jetbrains.kotlin.native.version=1.1.0") {
assertSuccessful() assertSuccessful()
assertTasksExecuted( assertTasksExecuted(libraryCinteropTask, libraryCompileTask)
":projectLibrary:cinteropStdio${host.capitalize()}",
":projectLibrary:compileKotlin${host.capitalize()}"
)
} }
} }
} }
@@ -518,7 +518,7 @@ open class CInteropProcess : DefaultTask() {
} }
libraries.files.filterExternalKlibs(project).forEach { library -> libraries.files.filterExternalKlibs(project).forEach { library ->
addArg("-l", library.absolutePath) addArg("-library", library.absolutePath)
} }
addArgs("-copt", allHeadersDirs.map { "-I${it.absolutePath}" }) addArgs("-copt", allHeadersDirs.map { "-I${it.absolutePath}" })
@@ -25,7 +25,7 @@ class NativeCompilerDownloader(
) { ) {
internal companion object { internal companion object {
val DEFAULT_KONAN_VERSION = KonanVersionImpl(MetaVersion.RC1, 1, 1, 0, 5227) val DEFAULT_KONAN_VERSION = KonanVersionImpl(MetaVersion.RC1, 1, 2, 0, 7773)
const val BASE_DOWNLOAD_URL = "https://download.jetbrains.com/kotlin/native/builds" const val BASE_DOWNLOAD_URL = "https://download.jetbrains.com/kotlin/native/builds"
} }