FIR Tests: Fix FirMetaModularizedTest to run properly on Windows

This commit is contained in:
Simon Ogorodnik
2021-05-26 14:10:31 +03:00
parent 97a38ba0a9
commit 718e9c11f5
@@ -5,9 +5,16 @@
package org.jetbrains.kotlin.fir package org.jetbrains.kotlin.fir
import com.intellij.openapi.util.SystemInfo
import com.intellij.openapi.util.io.FileUtil
import org.junit.Test import org.junit.Test
import java.io.File import java.io.File
import java.lang.management.ManagementFactory import java.lang.management.ManagementFactory
import java.nio.file.Files
import java.util.jar.Attributes
import java.util.jar.JarFile
import java.util.jar.JarOutputStream
import java.util.jar.Manifest
import kotlin.test.assertEquals import kotlin.test.assertEquals
class FirMetaModularizedTest { class FirMetaModularizedTest {
@@ -17,21 +24,41 @@ class FirMetaModularizedTest {
@Test @Test
fun doTest() { fun doTest() {
val runtimeBean = ManagementFactory.getRuntimeMXBean() val runtimeBean = ManagementFactory.getRuntimeMXBean()
val jvmCommand = System.getProperty("java.home") + "/bin/java" val javaExePath = when {
SystemInfo.isWindows -> "\\bin\\java.exe"
else -> "/bin/java"
}
val jvmCommand = System.getProperty("java.home") + javaExePath
val runCount = System.getProperty("fir.bench.multirun.count").toInt() val runCount = System.getProperty("fir.bench.multirun.count").toInt()
val startTimestamp = System.currentTimeMillis() val startTimestamp = System.currentTimeMillis()
val file = FileUtil.createTempFile("classpath_container", ".jar")
file.deleteOnExit()
val manifest = Manifest()
manifest.mainAttributes.putValue(Attributes.Name.MANIFEST_VERSION.toString(), "1.0")
manifest.mainAttributes.putValue(Attributes.Name.MAIN_CLASS.toString(), StandaloneModularizedTestRunner::class.java.canonicalName)
manifest.mainAttributes.putValue(
Attributes.Name.CLASS_PATH.toString(),
runtimeBean.classPath.split(File.pathSeparator).joinToString(" ") {
val f = File(it)
f.toURI().toString()
}
)
JarOutputStream(file.outputStream(), manifest).close()
for (i in 0 until runCount) { for (i in 0 until runCount) {
val pb = ProcessBuilder() val pb = ProcessBuilder()
.inheritIO() .inheritIO()
.command( .command(
jvmCommand, "-cp", runtimeBean.classPath, jvmCommand,
*runtimeBean.inputArguments.filterArguments().toTypedArray(), *runtimeBean.inputArguments.filterArguments().toTypedArray(),
"-Dfir.bench.report.timestamp=$startTimestamp", "-Dfir.bench.report.timestamp=$startTimestamp",
StandaloneModularizedTestRunner::class.java.canonicalName "-jar", file.toString()
) )
.directory(File("").absoluteFile) .directory(File("").absoluteFile)