[JS] Add basic optional logs to test runner

This commit is contained in:
Svyatoslav Kuzmich
2020-12-08 19:28:21 +03:00
parent c6242ad167
commit ae738e9c59
2 changed files with 26 additions and 3 deletions
@@ -96,6 +96,9 @@ abstract class BasicBoxTest(
protected open val testChecker get() = if (runTestInNashorn) NashornJsTestChecker else V8JsTestChecker
protected val logger = KotlinJsTestLogger()
fun doTest(filePath: String) {
doTestWithIgnoringByFailFile(filePath, coroutinesPackage = "")
}
@@ -119,6 +122,9 @@ abstract class BasicBoxTest(
open fun doTest(filePath: String, expectedResult: String, mainCallParameters: MainCallParameters, coroutinesPackage: String = "") {
val file = File(filePath)
logger.logFile("Test file", file)
val outputDir = getOutputDir(file)
val dceOutputDir = getOutputDir(file, testGroupOutputDirForMinification)
val pirOutputDir = getOutputDir(file, testGroupOutputDirForPir)
@@ -188,6 +194,8 @@ abstract class BasicBoxTest(
val dceOutputFileName = module.outputFileName(dceOutputDir) + ".js"
val pirOutputFileName = module.outputFileName(pirOutputDir) + ".js"
val isMainModule = mainModuleName == module.name
logger.logFile("Output JS", File(outputFileName))
generateJavaScriptFile(
testFactory.tmpDir,
file.parent,
@@ -1115,3 +1123,13 @@ fun KotlinTestWithEnvironment.createPsiFile(fileName: String): KtFile {
}
fun KotlinTestWithEnvironment.createPsiFiles(fileNames: List<String>): List<KtFile> = fileNames.map(this::createPsiFile)
class KotlinJsTestLogger {
val verbose = getBoolean("kotlin.js.test.verbose")
fun logFile(description: String, file: File) {
if (verbose) {
println("TEST_LOG: $description file://${file.absolutePath}")
}
}
}
@@ -110,12 +110,14 @@ abstract class BasicIrBoxTest(
}
if (isMainModule) {
logger.logFile("Output JS", outputFile)
val debugMode = getBoolean("kotlin.js.debugMode")
val phaseConfig = if (debugMode) {
val allPhasesSet = jsPhases.toPhaseMap().values.toSet()
val dumpOutputDir = File(outputFile.parent, outputFile.nameWithoutExtension + "-irdump")
println("\n ------ Dumping phases to file://$dumpOutputDir")
logger.logFile("Dumping phasesTo", dumpOutputDir)
PhaseConfig(
jsPhases,
dumpToDirectory = dumpOutputDir.path,
@@ -150,8 +152,9 @@ abstract class BasicIrBoxTest(
compiledModule.dceJsCode?.writeTo(dceOutputFile, config)
if (generateDts) {
val dtsFile = outputFile.withReplacedExtensionOrNull("_v5.js", ".d.ts")
dtsFile?.write(compiledModule.tsDefinitions ?: error("No ts definitions"))
val dtsFile = outputFile.withReplacedExtensionOrNull("_v5.js", ".d.ts")!!
logger.logFile("Output d.ts", dtsFile)
dtsFile.write(compiledModule.tsDefinitions ?: error("No ts definitions"))
}
}
@@ -185,6 +188,8 @@ abstract class BasicIrBoxTest(
nopack = true
)
logger.logFile("Output klib", File(actualOutputFile))
compilationCache[outputFile.name.replace(".js", ".meta.js")] = actualOutputFile
}
}