Use new kotlin.io.path API in tests

This commit is contained in:
Ilya Gorbunov
2020-11-16 08:30:04 +03:00
parent d38e145529
commit b2b2629e79
27 changed files with 173 additions and 116 deletions
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.test.MockLibraryUtil
import java.io.File
import java.util.*
import java.util.regex.Pattern
import kotlin.io.path.*
const val JSPECIFY_NULLNESS_MISMATCH_MARK = "jspecify_nullness_mismatch"
@@ -30,6 +31,7 @@ abstract class AbstractJspecifyAnnotationsTest : AbstractDiagnosticsTest() {
)
}
@OptIn(ExperimentalPathApi::class)
override fun doTest(filePath: String) {
val ktSourceCode = File(filePath).readText()
val javaSourcesFilename = javaSourcesPathRegex.matcher(ktSourceCode).also { it.find() }.group(1)
@@ -51,7 +53,7 @@ abstract class AbstractJspecifyAnnotationsTest : AbstractDiagnosticsTest() {
appendLine("// FILE: main.kt\n$ktSourceCode")
}
super.doTest(createTempFile().apply { writeText(mergedSourceCode) }.path)
super.doTest(createTempFile().apply { writeText(mergedSourceCode) }.toString())
}
private fun makeJavaClassesPublicAndSeparatedByFiles(javaCode: String): String {
@@ -21,6 +21,7 @@ import com.intellij.openapi.util.text.StringUtil;
import kotlin.Pair;
import kotlin.collections.CollectionsKt;
import kotlin.io.FilesKt;
import kotlin.io.path.PathsKt;
import kotlin.text.Charsets;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.checkers.AbstractForeignAnnotationsTestKt;
@@ -37,12 +38,17 @@ import org.jetbrains.kotlin.test.CompilerTestUtil;
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TestCaseWithTmpdir;
import org.jetbrains.kotlin.utils.ExceptionUtilsKt;
import org.jetbrains.kotlin.utils.JsMetadataVersion;
import org.jetbrains.kotlin.utils.PathUtil;
import org.jetbrains.kotlin.utils.StringsKt;
import org.junit.Assert;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
@@ -232,15 +238,20 @@ public abstract class AbstractCliTest extends TestCaseWithTmpdir {
@NotNull String tempDir
) {
String filePath = kotlin.text.StringsKt.substringAfter(argument, argumentPrefix, argument);
File file = new File(filePath);
if (!file.exists()) return argument;
Path file = Paths.get(filePath);
if (!Files.exists(file)) return argument;
File result = FilesKt.createTempFile(file.getAbsolutePath(), tempFileSuffix, new File(tempDir));
String oldContent = FilesKt.readText(file, Charsets.UTF_8);
String newContent = replaceTestPaths(oldContent, testDataDir, tempDir);
FilesKt.writeText(result, newContent, Charsets.UTF_8);
try {
Path result = Files.createTempFile(Paths.get(tempDir), file.getFileName().toString(), tempFileSuffix);
String oldContent = PathsKt.readText(file, Charsets.UTF_8);
String newContent = replaceTestPaths(oldContent, testDataDir, tempDir);
PathsKt.writeText(result, newContent, Charsets.UTF_8);
return argumentPrefix + result.getAbsolutePath();
return argumentPrefix + result.toAbsolutePath();
}
catch (IOException e) {
throw ExceptionUtilsKt.rethrow(e);
}
}
private static String replaceTestPaths(@NotNull String str, @NotNull String testDataDir, @NotNull String tempDir) {