From 718e9c11f598fca54eb05b4eede9c81b0fba2e69 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Wed, 26 May 2021 14:10:31 +0300 Subject: [PATCH] FIR Tests: Fix FirMetaModularizedTest to run properly on Windows --- .../kotlin/fir/FirMetaModularizedTest.kt | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirMetaModularizedTest.kt b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirMetaModularizedTest.kt index e57404b238a..4fcfc990ec8 100644 --- a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirMetaModularizedTest.kt +++ b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirMetaModularizedTest.kt @@ -5,9 +5,16 @@ package org.jetbrains.kotlin.fir +import com.intellij.openapi.util.SystemInfo +import com.intellij.openapi.util.io.FileUtil import org.junit.Test import java.io.File 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 class FirMetaModularizedTest { @@ -17,21 +24,41 @@ class FirMetaModularizedTest { @Test fun doTest() { 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 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) { val pb = ProcessBuilder() .inheritIO() .command( - jvmCommand, "-cp", runtimeBean.classPath, + jvmCommand, *runtimeBean.inputArguments.filterArguments().toTypedArray(), "-Dfir.bench.report.timestamp=$startTimestamp", - StandaloneModularizedTestRunner::class.java.canonicalName + "-jar", file.toString() ) .directory(File("").absoluteFile)