From 25e56874c121a66864131c7a1069a7931125efaa Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Fri, 8 Dec 2017 15:30:48 +0300 Subject: [PATCH] JS: readable error when source maps change in IC tests --- .../jetbrains/kotlin/js/test/BasicBoxTest.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt index dc6826b9817..346f7b1b929 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt @@ -46,10 +46,7 @@ import org.jetbrains.kotlin.js.dce.InputFile import org.jetbrains.kotlin.js.dce.InputResource import org.jetbrains.kotlin.js.facade.* import org.jetbrains.kotlin.js.parser.parse -import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapError -import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapLocationRemapper -import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapParser -import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapSuccess +import org.jetbrains.kotlin.js.parser.sourcemaps.* import org.jetbrains.kotlin.js.sourceMap.SourceFilePathResolver import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder import org.jetbrains.kotlin.js.test.utils.* @@ -355,7 +352,16 @@ abstract class BasicBoxTest( val originalSourceMap = FileUtil.loadFile(File(outputFile.parentFile, outputFile.name + ".map")) val recompiledSourceMap = removeRecompiledSuffix( FileUtil.loadFile(File(recompiledOutputFile.parentFile, recompiledOutputFile.name + ".map"))) - assertEquals("Source map file changed after recompilation", originalSourceMap, recompiledSourceMap) + if (originalSourceMap != recompiledSourceMap) { + val originalSourceMapParse = SourceMapParser.parse(StringReader(originalSourceMap)) + val recompiledSourceMapParse = SourceMapParser.parse(StringReader(recompiledSourceMap)) + if (originalSourceMapParse is SourceMapSuccess && recompiledSourceMapParse is SourceMapSuccess) { + assertEquals("Source map file changed after recompilation", + originalSourceMapParse.toDebugString(), + recompiledSourceMapParse.toDebugString()) + } + assertEquals("Source map file changed after recompilation", originalSourceMap, recompiledSourceMap) + } if (multiModule) { val originalMetadata = FileUtil.loadFile(File(outputFile.parentFile, outputFile.nameWithoutExtension + ".meta.js")) @@ -367,6 +373,12 @@ abstract class BasicBoxTest( } } + private fun SourceMapSuccess.toDebugString(): String { + val out = ByteArrayOutputStream() + PrintStream(out).use { value.debug(it) } + return String(out.toByteArray(), Charset.forName("UTF-8")) + } + private fun metadataAsString(metadata: String, moduleName: String): String { val containers = mutableListOf() KotlinJavascriptMetadataUtils.parseMetadata(metadata, containers)