[JS IR] Add Gradle integration tests for names in sourcemaps
This commit is contained in:
committed by
Space Team
parent
d9681caf0c
commit
c1f14d80fd
+96
-10
@@ -313,6 +313,76 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("fully qualified names can be used in the sourcemap")
|
||||||
|
@GradleTest
|
||||||
|
fun testKotlinJsSourceMapGenerateFqNames(gradleVersion: GradleVersion) {
|
||||||
|
project("kotlin2JsProjectWithSourceMap", gradleVersion) {
|
||||||
|
buildGradleKts.appendText(
|
||||||
|
"""
|
||||||
|
|allprojects {
|
||||||
|
| tasks.withType<KotlinJsCompile> {
|
||||||
|
| kotlinOptions.sourceMapNamesPolicy = "fully-qualified-names"
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
|
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
build("compileDevelopmentExecutableKotlinJs") {
|
||||||
|
assertFileContains(
|
||||||
|
subProject("app").projectPath
|
||||||
|
.resolve("build/compileSync/js/main/developmentExecutable/kotlin/$projectName-app.js.map"),
|
||||||
|
"app.C.somewhereOverTheRainbow"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("simple names can be used in the sourcemap")
|
||||||
|
@GradleTest
|
||||||
|
fun testKotlinJsSourceMapGenerateSimpleNames(gradleVersion: GradleVersion) {
|
||||||
|
project("kotlin2JsProjectWithSourceMap", gradleVersion) {
|
||||||
|
buildGradleKts.appendText(
|
||||||
|
"""
|
||||||
|
|allprojects {
|
||||||
|
| tasks.withType<KotlinJsCompile> {
|
||||||
|
| kotlinOptions.sourceMapNamesPolicy = "simple-names"
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
|
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
build("compileDevelopmentExecutableKotlinJs") {
|
||||||
|
val sourceMap = subProject("app").projectPath
|
||||||
|
.resolve("build/compileSync/js/main/developmentExecutable/kotlin/$projectName-app.js.map")
|
||||||
|
assertFileContains(sourceMap, "somewhereOverTheRainbow")
|
||||||
|
assertFileDoesNotContain(sourceMap, "app.C.somewhereOverTheRainbow")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("don't generate names in the sourcemap")
|
||||||
|
@GradleTest
|
||||||
|
fun testKotlinJsSourceMapGenerateNoNames(gradleVersion: GradleVersion) {
|
||||||
|
project("kotlin2JsProjectWithSourceMap", gradleVersion) {
|
||||||
|
buildGradleKts.appendText(
|
||||||
|
"""
|
||||||
|
|allprojects {
|
||||||
|
| tasks.withType<KotlinJsCompile> {
|
||||||
|
| kotlinOptions.sourceMapNamesPolicy = "no"
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
|
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
build("compileDevelopmentExecutableKotlinJs") {
|
||||||
|
val sourceMap = subProject("app").projectPath
|
||||||
|
.resolve("build/compileSync/js/main/developmentExecutable/kotlin/$projectName-app.js.map")
|
||||||
|
assertFileContains(sourceMap, "\"names\":[]")
|
||||||
|
assertFileDoesNotContain(sourceMap, "app.C.somewhereOverTheRainbow")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsGradlePluginTests
|
@JsGradlePluginTests
|
||||||
@@ -585,25 +655,41 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
|||||||
project("kotlin2JsProjectWithSourceMap", gradleVersion) {
|
project("kotlin2JsProjectWithSourceMap", gradleVersion) {
|
||||||
build(if (irBackend) "compileDevelopmentExecutableKotlinJs" else "compileKotlinJs") {
|
build(if (irBackend) "compileDevelopmentExecutableKotlinJs" else "compileKotlinJs") {
|
||||||
if (irBackend) {
|
if (irBackend) {
|
||||||
|
val appSourceMap = subProject("app").projectPath
|
||||||
|
.resolve("build/compileSync/js/main/developmentExecutable/kotlin/$projectName-app.js.map")
|
||||||
assertFileContains(
|
assertFileContains(
|
||||||
subProject("app").projectPath
|
appSourceMap,
|
||||||
.resolve("build/compileSync/js/main/developmentExecutable/kotlin/$projectName-app.js.map"),
|
|
||||||
"\"../../../../../../src/main/kotlin/main.kt\"",
|
"\"../../../../../../src/main/kotlin/main.kt\"",
|
||||||
"\"../../../../../../../lib/src/main/kotlin/foo.kt\"",
|
"\"../../../../../../../lib/src/main/kotlin/foo.kt\"",
|
||||||
"\"sourcesContent\":[null",
|
"\"sourcesContent\":[null",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// The default should be generating simple names.
|
||||||
|
assertFileContains(appSourceMap, "somewhereOverTheRainbow")
|
||||||
|
assertFileDoesNotContain(appSourceMap, "\"names\":[]")
|
||||||
|
assertFileDoesNotContain(appSourceMap, "app.C.somewhereOverTheRainbow")
|
||||||
|
|
||||||
|
val libSourceMap = subProject("app").projectPath
|
||||||
|
.resolve("build/compileSync/js/main/developmentExecutable/kotlin/$projectName-lib.js.map")
|
||||||
assertFileContains(
|
assertFileContains(
|
||||||
subProject("app").projectPath
|
libSourceMap,
|
||||||
.resolve("build/compileSync/js/main/developmentExecutable/kotlin/$projectName-lib.js.map"),
|
|
||||||
"\"../../../../../../../lib/src/main/kotlin/foo.kt\"",
|
"\"../../../../../../../lib/src/main/kotlin/foo.kt\"",
|
||||||
"\"sourcesContent\":[null",
|
"\"sourcesContent\":[null",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// The default should be generating simple names.
|
||||||
|
assertFileDoesNotContain(libSourceMap, "\"names\":[]")
|
||||||
|
|
||||||
|
val libSourceMap2 = projectPath
|
||||||
|
.resolve("build/js/packages/$projectName-app/kotlin/$projectName-lib.js.map")
|
||||||
assertFileContains(
|
assertFileContains(
|
||||||
projectPath
|
libSourceMap2,
|
||||||
.resolve("build/js/packages/$projectName-app/kotlin/$projectName-lib.js.map"),
|
|
||||||
"\"../../../../../lib/src/main/kotlin/foo.kt\"",
|
"\"../../../../../lib/src/main/kotlin/foo.kt\"",
|
||||||
"\"sourcesContent\":[null",
|
"\"sourcesContent\":[null",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// The default should be generating simple names.
|
||||||
|
assertFileDoesNotContain(libSourceMap2, "\"names\":[]")
|
||||||
}
|
}
|
||||||
assertFileContains(
|
assertFileContains(
|
||||||
projectPath
|
projectPath
|
||||||
@@ -733,8 +819,8 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
|||||||
val mapFilePath = projectPath.resolve("build/js/packages/$projectName-app/kotlin/$projectName-app.js.map")
|
val mapFilePath = projectPath.resolve("build/js/packages/$projectName-app/kotlin/$projectName-app.js.map")
|
||||||
assertFileContains(
|
assertFileContains(
|
||||||
mapFilePath,
|
mapFilePath,
|
||||||
"\"fun main(args: Array<String>) {",
|
"fun main(args: Array<String>) {",
|
||||||
"\"inline fun foo(): String {",
|
"inline fun foo(): String {",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -766,11 +852,11 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
|||||||
val mapFilePath = projectPath.resolve("build/js/packages/$projectName-app/kotlin/$projectName-app.js.map")
|
val mapFilePath = projectPath.resolve("build/js/packages/$projectName-app/kotlin/$projectName-app.js.map")
|
||||||
assertFileDoesNotContain(
|
assertFileDoesNotContain(
|
||||||
mapFilePath,
|
mapFilePath,
|
||||||
"\"fun main(args: Array<String>) {"
|
"fun main(args: Array<String>) {"
|
||||||
)
|
)
|
||||||
assertFileContains(
|
assertFileContains(
|
||||||
mapFilePath,
|
mapFilePath,
|
||||||
"\"inline fun foo(): String {",
|
"inline fun foo(): String {",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
@@ -1,3 +1,14 @@
|
|||||||
|
@file:Suppress("PackageDirectoryMismatch")
|
||||||
|
|
||||||
|
package app
|
||||||
|
|
||||||
|
import lib.foo
|
||||||
|
|
||||||
|
class C {
|
||||||
|
fun somewhereOverTheRainbow() = "🌈"
|
||||||
|
}
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
|
println(C().somewhereOverTheRainbow())
|
||||||
println(foo())
|
println(foo())
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -1,3 +1,8 @@
|
|||||||
|
@file:Suppress("PackageDirectoryMismatch")
|
||||||
|
|
||||||
|
package lib
|
||||||
|
|
||||||
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
inline fun foo(): String {
|
inline fun foo(): String {
|
||||||
return "OK"
|
return "OK"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user