From cfd3b137d8ccf7bfd88aedfedeb5ab698390ce50 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Tue, 13 Jun 2017 14:16:08 +0300 Subject: [PATCH] Add support for JS source map source roots to Gradle plugin --- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 17 +++++++++++++ .../build.gradle | 24 +++++++++++++++++++ .../src/main/kotlin/example/main.kt | 5 ++++ .../kotlin/gradle/plugin/KotlinPlugin.kt | 3 +++ 4 files changed, 49 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/src/main/kotlin/example/main.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index c70ade36eb5..d1610755f20 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -6,6 +6,7 @@ import org.junit.Test import java.io.File import java.util.zip.ZipFile import kotlin.test.assertEquals +import kotlin.test.assertTrue class Kotlin2JsGradlePluginIT : BaseGradleIT() { @Test @@ -170,4 +171,20 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() { assertSuccessful() } } + + @Test + fun testKotlinJsSourceMap() { + val project = Project("kotlin2JsProjectWithSourceMap", "2.10") + + project.build("build") { + assertSuccessful() + + val mapFilePath = "build/kotlin2js/main/app.js.map" + assertFileExists(mapFilePath) + val map = fileInWorkingDir(mapFilePath).readText() + + val sourceFilePath = "prefixprefix/example/main.kt" + assertTrue("Source map should contain reference to $sourceFilePath") { map.contains("\"$sourceFilePath\"") } + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/build.gradle new file mode 100644 index 00000000000..c94e3dea0f3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/build.gradle @@ -0,0 +1,24 @@ +buildscript { + repositories { + mavenLocal() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +apply plugin: "kotlin2js" + +repositories { + mavenLocal() +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" +} + +compileKotlin2Js.kotlinOptions.sourceMap = true +compileKotlin2Js.kotlinOptions.sourceMapPrefix = "prefixprefix/" +compileKotlin2Js.kotlinOptions.outputFile = "${buildDir}/kotlin2js/main/app.js" +compileKotlin2Js.kotlinOptions.suppressWarnings = true +compileKotlin2Js.kotlinOptions.verbose = true diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/src/main/kotlin/example/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/src/main/kotlin/example/main.kt new file mode 100644 index 00000000000..963a1c68032 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/src/main/kotlin/example/main.kt @@ -0,0 +1,5 @@ +package example + +fun main(args: Array) { + println("Hello") +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 5054e115b71..1b03458ea28 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -210,6 +210,9 @@ internal class Kotlin2JsSourceSetProcessor( sourceSet.output.setClassesDir(outputDir) kotlinTask.destinationDir = outputDir + + kotlinTask.kotlinOptions.sourceMapSourceRoots = + sourceSet.allSource.srcDirs.joinToString(File.pathSeparator) { it.absolutePath } } }