diff --git a/idea/testData/coverage/outputFiles/NotInlinedLambda.classes.txt b/idea/testData/coverage/outputFiles/NotInlinedLambda.classes.txt new file mode 100644 index 00000000000..8b489ae9deb --- /dev/null +++ b/idea/testData/coverage/outputFiles/NotInlinedLambda.classes.txt @@ -0,0 +1,2 @@ +org/demo/coverage/Foo.class +org/demo/coverage/Foo$bar$1.class diff --git a/idea/testData/coverage/outputFiles/NotInlinedLambda.kt.out/org/demo/coverage/Foo$bar$1.class b/idea/testData/coverage/outputFiles/NotInlinedLambda.kt.out/org/demo/coverage/Foo$bar$1.class deleted file mode 100644 index 175d65c2751..00000000000 Binary files a/idea/testData/coverage/outputFiles/NotInlinedLambda.kt.out/org/demo/coverage/Foo$bar$1.class and /dev/null differ diff --git a/idea/testData/coverage/outputFiles/NotInlinedLambda.kt.out/org/demo/coverage/Foo.class b/idea/testData/coverage/outputFiles/NotInlinedLambda.kt.out/org/demo/coverage/Foo.class deleted file mode 100644 index d6b80fbdbb9..00000000000 Binary files a/idea/testData/coverage/outputFiles/NotInlinedLambda.kt.out/org/demo/coverage/Foo.class and /dev/null differ diff --git a/idea/tests/org/jetbrains/kotlin/idea/coverage/AbstractKotlinCoverageOutputFilesTest.kt b/idea/tests/org/jetbrains/kotlin/idea/coverage/AbstractKotlinCoverageOutputFilesTest.kt index 1e61f26a57c..fbadb9ec262 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/coverage/AbstractKotlinCoverageOutputFilesTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/coverage/AbstractKotlinCoverageOutputFilesTest.kt @@ -21,8 +21,9 @@ import org.jetbrains.kotlin.idea.PluginTestCaseBase import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.test.JetTestUtils import java.io.File -import com.intellij.openapi.vfs.LocalFileSystem -import kotlin.test.assertNotNull +import com.intellij.openapi.util.io.FileUtil +import com.intellij.openapi.vfs.VirtualFile +import org.jetbrains.kotlin.idea.util.application.runWriteAction public abstract class AbstractKotlinCoverageOutputFilesTest(): JetLightCodeInsightFixtureTestCase() { private val TEST_DATA_PATH = PluginTestCaseBase.getTestDataPathBase() + "/coverage/outputFiles" @@ -31,9 +32,33 @@ public abstract class AbstractKotlinCoverageOutputFilesTest(): JetLightCodeInsig public fun doTest(path: String) { val kotlinFile = myFixture.configureByFile(path) as JetFile - val outputRoot = LocalFileSystem.getInstance().findFileByPath("$path.out") - assertNotNull(outputRoot) - val actualClasses = KotlinCoverageExtension.collectGeneratedClassQualifiedNames(outputRoot, kotlinFile) - JetTestUtils.assertEqualsToFile(File(path.replace(".kt", ".expected.txt")), actualClasses!!.join("\n")) + val outDir = myFixture.getTempDirFixture().findOrCreateDir("coverageTestOut") + try { + FileUtil.loadLines(File(path.replace(".kt", ".classes.txt"))).forEach { + runWriteAction { + createEmptyFile(outDir, it) + } + } + + val actualClasses = KotlinCoverageExtension.collectGeneratedClassQualifiedNames(outDir, kotlinFile) + JetTestUtils.assertEqualsToFile(File(path.replace(".kt", ".expected.txt")), actualClasses!!.join("\n")) + } + finally { + runWriteAction { + outDir.delete(null) + } + } + } +} + +private fun createEmptyFile(dir: VirtualFile, relativePath: String) { + var currentDir = dir + val segments = relativePath.split('/') + segments.forEachIndexed {(i, s) -> + if (i < segments.size() - 1) { + currentDir = currentDir.createChildDirectory(null, s) + } else { + currentDir.createChildData(null, s) + } } }