Use fir to html in modularized test

This commit is contained in:
Simon Ogorodnik
2019-04-12 21:33:45 +03:00
committed by Mikhail Glukhikh
parent 61b410e276
commit 3cabf490dd
2 changed files with 17 additions and 1 deletions
@@ -21,6 +21,7 @@ dependencies {
testRuntime(project(":kotlin-reflect"))
testCompile(projectTests(":compiler:fir:resolve"))
testCompile(project(":compiler:fir:resolve"))
testCompile(project(":compiler:fir:dump"))
}
sourceSets {
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.dump.MultiModuleHtmlFirDump
import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
@@ -48,6 +49,7 @@ private const val FAIL_FAST = true
private const val DUMP_FIR = true
private const val FIR_DUMP_PATH = "tmp/firDump"
private const val FIR_HTML_DUMP_PATH = "tmp/firDump-html"
private const val FIR_LOGS_PATH = "tmp/fir-logs"
private data class ModuleData(val name: String, val classpath: List<File>, val sources: List<File>, val javaSourceRoots: List<File>)
@@ -58,6 +60,7 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
private lateinit var bench: FirResolveBench
private lateinit var dump: MultiModuleHtmlFirDump
private fun runAnalysis(moduleData: ModuleData, environment: KotlinCoreEnvironment) {
val project = environment.project
@@ -84,6 +87,7 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
bench.processFiles(firFiles, totalTransformer.transformers)
dumpFir(moduleData, firFiles)
dumpFirHtml(moduleData, firFiles)
}
private fun dumpFir(moduleData: ModuleData, firFiles: List<FirFile>) {
@@ -96,6 +100,14 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
}
}
private fun dumpFirHtml(moduleData: ModuleData, firFiles: List<FirFile>) {
if (!DUMP_FIR) return
dump.module(moduleData.name) {
firFiles.forEach(dump::indexFile)
firFiles.forEach(dump::generateFile)
}
}
private fun processModule(moduleData: ModuleData) {
val configurationKind = ConfigurationKind.ALL
val testJdkKind = TestJdkKind.FULL_JDK
@@ -153,6 +165,7 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
private fun runTestOnce(pass: Int) {
if (DUMP_FIR) dump = MultiModuleHtmlFirDump(File(FIR_HTML_DUMP_PATH))
val testDataPath = "/Users/jetbrains/jps"
val root = File(testDataPath)
@@ -160,6 +173,7 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
val modules =
root.listFiles().sortedBy { it.lastModified() }.map { loadModule(it) }
// .sortedByDescending { it.name == "idea" }
for (module in modules.progress(step = 0.0) { "Analyzing ${it.name}" }) {
@@ -177,7 +191,8 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
}
}
fun saveReport() {
private fun saveReport() {
if (DUMP_FIR) dump.finish()
val format = SimpleDateFormat("yyyy-MM-dd__hh-mm")
val logDir = File(FIR_LOGS_PATH)
logDir.mkdirs()