[Gradle, JS] Fix parallel tasks test

This commit is contained in:
Ilya Goncharov
2020-01-30 17:16:35 +03:00
parent 5ff07baf53
commit d69266de50
@@ -67,17 +67,35 @@ class NewMultiplatformIT : BaseGradleIT() {
@Test @Test
fun testLibAndApp() = doTestLibAndApp( fun testLibAndApp() = doTestLibAndApp(
"sample-lib", "sample-lib",
"sample-app" "sample-app",
JsMode.LEGACY
)
@Test
fun testLibAndAppJsIr() = doTestLibAndApp(
"sample-lib",
"sample-app",
JsMode.IR
) )
@Test @Test
fun testLibAndAppWithGradleKotlinDsl() = doTestLibAndApp( fun testLibAndAppWithGradleKotlinDsl() = doTestLibAndApp(
"sample-lib-gradle-kotlin-dsl", "sample-lib-gradle-kotlin-dsl",
"sample-app-gradle-kotlin-dsl" "sample-app-gradle-kotlin-dsl",
JsMode.LEGACY
)
@Test
fun testLibAndAppWithGradleKotlinDslJsIr() = doTestLibAndApp(
"sample-lib-gradle-kotlin-dsl",
"sample-app-gradle-kotlin-dsl",
JsMode.IR
) )
private fun doTestLibAndApp( private fun doTestLibAndApp(
libProjectName: String, appProjectName: String libProjectName: String,
appProjectName: String,
jsMode: JsMode
) { ) {
val libProject = transformProjectWithPluginsDsl(libProjectName, directoryPrefix = "new-mpp-lib-and-app") val libProject = transformProjectWithPluginsDsl(libProjectName, directoryPrefix = "new-mpp-lib-and-app")
val appProject = transformProjectWithPluginsDsl(appProjectName, directoryPrefix = "new-mpp-lib-and-app") val appProject = transformProjectWithPluginsDsl(appProjectName, directoryPrefix = "new-mpp-lib-and-app")
@@ -87,13 +105,17 @@ class NewMultiplatformIT : BaseGradleIT() {
listOf("Jvm6", "NodeJs", "Metadata", "Wasm32", nativeHostTargetName.capitalize()).map { ":compileKotlin$it" } listOf("Jvm6", "NodeJs", "Metadata", "Wasm32", nativeHostTargetName.capitalize()).map { ":compileKotlin$it" }
with(libProject) { with(libProject) {
build("publish") { build(
"publish",
options = defaultBuildOptions().copy(jsMode = jsMode)
) {
assertSuccessful() assertSuccessful()
assertTasksExecuted(*compileTasksNames.toTypedArray(), ":jvm6Jar", ":nodeJsJar", ":metadataJar") assertTasksExecuted(*compileTasksNames.toTypedArray(), ":jvm6Jar", ":nodeJsJar", ":metadataJar")
val groupDir = projectDir.resolve("repo/com/example") val groupDir = projectDir.resolve("repo/com/example")
val jvmJarName = "sample-lib-jvm6/1.0/sample-lib-jvm6-1.0.jar" val jvmJarName = "sample-lib-jvm6/1.0/sample-lib-jvm6-1.0.jar"
val jsJarName = "sample-lib-nodejs/1.0/sample-lib-nodejs-1.0.jar" val jsExtension = if (jsMode == JsMode.LEGACY) "jar" else "klib"
val jsJarName = "sample-lib-nodejs/1.0/sample-lib-nodejs-1.0.$jsExtension"
val metadataJarName = "sample-lib-metadata/1.0/sample-lib-metadata-1.0.jar" val metadataJarName = "sample-lib-metadata/1.0/sample-lib-metadata-1.0.jar"
val wasmKlibName = "sample-lib-wasm32/1.0/sample-lib-wasm32-1.0.klib" val wasmKlibName = "sample-lib-wasm32/1.0/sample-lib-wasm32-1.0.klib"
val nativeKlibName = "sample-lib-$nativeHostTargetName/1.0/sample-lib-$nativeHostTargetName-1.0.klib" val nativeKlibName = "sample-lib-$nativeHostTargetName/1.0/sample-lib-$nativeHostTargetName-1.0.klib"
@@ -121,12 +143,19 @@ class NewMultiplatformIT : BaseGradleIT() {
Assert.assertTrue("com/example/lib/CommonKt.class" in jvmJarEntries) Assert.assertTrue("com/example/lib/CommonKt.class" in jvmJarEntries)
Assert.assertTrue("com/example/lib/MainKt.class" in jvmJarEntries) Assert.assertTrue("com/example/lib/MainKt.class" in jvmJarEntries)
val jsJar = ZipFile(groupDir.resolve(jsJarName)) when (jsMode) {
val compiledJs = jsJar.getInputStream(jsJar.getEntry("sample-lib.js")).reader().readText() JsMode.LEGACY -> {
Assert.assertTrue("function id(" in compiledJs) val jsJar = ZipFile(groupDir.resolve(jsJarName))
Assert.assertTrue("function idUsage(" in compiledJs) val compiledJs = jsJar.getInputStream(jsJar.getEntry("sample-lib.js")).reader().readText()
Assert.assertTrue("function expectedFun(" in compiledJs) Assert.assertTrue("function id(" in compiledJs)
Assert.assertTrue("function main(" in compiledJs) Assert.assertTrue("function idUsage(" in compiledJs)
Assert.assertTrue("function expectedFun(" in compiledJs)
Assert.assertTrue("function main(" in compiledJs)
}
JsMode.IR -> {
groupDir.resolve(jsJarName).exists()
}
}
val metadataJarEntries = ZipFile(groupDir.resolve(metadataJarName)).entries().asSequence().map { it.name }.toSet() val metadataJarEntries = ZipFile(groupDir.resolve(metadataJarName)).entries().asSequence().map { it.name }.toSet()
Assert.assertTrue("com/example/lib/CommonKt.kotlin_metadata" in metadataJarEntries) Assert.assertTrue("com/example/lib/CommonKt.kotlin_metadata" in metadataJarEntries)
@@ -171,9 +200,11 @@ class NewMultiplatformIT : BaseGradleIT() {
Assert.assertTrue(resolve("com/example/app/AKt.kotlin_metadata").exists()) Assert.assertTrue(resolve("com/example/app/AKt.kotlin_metadata").exists())
} }
projectDir.resolve(targetClassesDir("nodeJs")).resolve("sample-app.js").readText().run { if (jsMode == JsMode.LEGACY) {
Assert.assertTrue(contains("console.info")) projectDir.resolve(targetClassesDir("nodeJs")).resolve("sample-app.js").readText().run {
Assert.assertTrue(contains("function nodeJsMain(")) Assert.assertTrue(contains("console.info"))
Assert.assertTrue(contains("function nodeJsMain("))
}
} }
projectDir.resolve(targetClassesDir("wasm32")).run { projectDir.resolve(targetClassesDir("wasm32")).run {
@@ -209,11 +240,18 @@ class NewMultiplatformIT : BaseGradleIT() {
it.replace(Regex("""\.version\(.*\)"""), "") it.replace(Regex("""\.version\(.*\)"""), "")
} }
build("clean", "assemble", "--rerun-tasks") { build(
"clean",
"assemble",
"--rerun-tasks",
options = defaultBuildOptions().copy(jsMode = jsMode)
) {
checkAppBuild() checkAppBuild()
} }
} }
if (jsMode != JsMode.LEGACY) return
with(oldStyleAppProject) { with(oldStyleAppProject) {
setupWorkingDir() setupWorkingDir()
gradleBuildScript().appendText("\nallprojects { repositories { maven { url '$libLocalRepoUri' } } }") gradleBuildScript().appendText("\nallprojects { repositories { maven { url '$libLocalRepoUri' } } }")