[TEST] Introduce test-infrastructure-utils module and extract common test utilities here

This commit is contained in:
Dmitriy Novozhilov
2020-12-02 16:00:43 +03:00
parent 1c91b74ff0
commit c8f3a4802e
189 changed files with 791 additions and 630 deletions
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClass;
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRootsKt;
import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import java.io.File;
import java.util.Collections;
@@ -40,7 +41,7 @@ public class LightClassAnnotationsTest extends KotlinAsJavaTestBase {
@Override
protected void extraConfiguration(@NotNull CompilerConfiguration configuration) {
JvmContentRootsKt.addJvmClasspathRoot(configuration, KotlinTestUtils.getAnnotationsJar());
JvmContentRootsKt.addJvmClasspathRoot(configuration, KtTestUtil.getAnnotationsJar());
}
public void testExtraAnnotations() throws Exception {
@@ -20,9 +20,10 @@ import com.intellij.openapi.util.SystemInfo
import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestCaseWithTmpdir
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.kotlin.utils.PathUtil
import org.jetbrains.kotlin.utils.addToStdlib.cast
import java.io.*
import java.io.File
import java.util.concurrent.TimeUnit
class LauncherScriptTest : TestCaseWithTmpdir() {
@@ -75,7 +76,7 @@ class LauncherScriptTest : TestCaseWithTmpdir() {
else args.cast()
private val testDataDirectory: String
get() = KotlinTestUtils.getTestDataPathBase() + "/launcher"
get() = KtTestUtil.getTestDataPathBase() + "/launcher"
fun testKotlincSimple() {
runProcess(
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmBytecodeBinaryVersion
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.org.objectweb.asm.*
import java.io.File
@@ -31,11 +32,11 @@ class WrongBytecodeVersionTest : KtUsefulTestCase() {
private val incompatibleVersion = JvmBytecodeBinaryVersion(42, 0, 0).toArray()
private fun doTest(relativeDirectory: String, version: IntArray = incompatibleVersion) {
val directory = KotlinTestUtils.getTestDataPathBase() + relativeDirectory
val directory = KtTestUtil.getTestDataPathBase() + relativeDirectory
val librarySource = File(directory, "A.kt")
val usageSource = File(directory, "B.kt")
val tmpdir = KotlinTestUtils.tmpDir(this::class.java.simpleName)
val tmpdir = KtTestUtil.tmpDir(this::class.java.simpleName)
val environment = KotlinTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations(testRootDisposable)
LoadDescriptorUtil.compileKotlinToDirAndGetModule(listOf(librarySource), tmpdir, environment)
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
class KotlinCliJavaFileManagerTest : KotlinTestWithEnvironment() {
@@ -182,7 +183,7 @@ class KotlinCliJavaFileManagerTest : KotlinTestWithEnvironment() {
}
override fun createEnvironment(): KotlinCoreEnvironment {
javaFilesDir = KotlinTestUtils.tmpDir("java-file-manager-test")
javaFilesDir = KtTestUtil.tmpDir("java-file-manager-test")
val configuration = KotlinTestUtils.newConfiguration(
ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, emptyList(), listOf(javaFilesDir)
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration
import org.jetbrains.kotlin.test.CompilerTestUtil
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
class JvmModuleProtoBufTest : KtUsefulTestCase() {
@@ -35,8 +36,8 @@ class JvmModuleProtoBufTest : KtUsefulTestCase() {
loadWith: LanguageVersion = LanguageVersion.LATEST_STABLE,
extraOptions: List<String> = emptyList()
) {
val directory = KotlinTestUtils.getTestDataPathBase() + relativeDirectory
val tmpdir = KotlinTestUtils.tmpDir(this::class.simpleName)
val directory = KtTestUtil.getTestDataPathBase() + relativeDirectory
val tmpdir = KtTestUtil.tmpDir(this::class.simpleName)
val moduleName = "main"
CompilerTestUtil.executeCompilerAssertSuccessful(
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.backend.common.output.OutputFile;
import org.jetbrains.kotlin.backend.common.output.OutputFileCollection;
import org.jetbrains.kotlin.name.SpecialNames;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.utils.StringsKt;
import org.jetbrains.org.objectweb.asm.ClassReader;
import org.jetbrains.org.objectweb.asm.ClassVisitor;
@@ -156,7 +156,7 @@ public class OuterClassGenTest extends CodegenTestCase {
private void doTest(@NotNull String classFqName, @NotNull String javaClassName, @NotNull String testDataFile) {
File javaOut = CodegenTestUtil.compileJava(
Collections.singletonList(KotlinTestUtils.getTestDataPathBase() + "/codegen/" + getPrefix() + "/" + testDataFile + ".java"),
Collections.singletonList(KtTestUtil.getTestDataPathBase() + "/codegen/" + getPrefix() + "/" + testDataFile + ".java"),
Collections.emptyList(),
Collections.emptyList()
);
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotate
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.org.objectweb.asm.Opcodes
import java.io.File
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
@@ -132,7 +133,7 @@ class ScriptGenTest : CodegenTestCase() {
add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, NO_PARAM_SCRIPT_DEFINITION)
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
addKotlinSourceRoots(sourcePaths.map { "${KotlinTestUtils.getTestDataPathBase()}/codegen/$it" })
addKotlinSourceRoots(sourcePaths.map { "${KtTestUtil.getTestDataPathBase()}/codegen/$it" })
addJvmClasspathRoots(additionalDependencies)
}
loadScriptingPlugin(configuration)
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.integration
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.junit.Assert
import java.io.File
@@ -112,5 +112,5 @@ class CompilerFileLimitTest : CompilerSmokeTestBase() {
}
private fun tempDir(markerName: String) = KotlinTestUtils.tmpDir("${CompilerFileLimitTest::class.simpleName}$markerName")
private fun tempDir(markerName: String) = KtTestUtil.tmpDir("${CompilerFileLimitTest::class.simpleName}$markerName")
}
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.integration;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.utils.StringsKt;
import java.io.File;
@@ -30,7 +30,7 @@ import java.util.Collections;
public abstract class CompilerSmokeTestBase extends KotlinIntegrationTestBase {
@NotNull
protected String getTestDataDir() {
return KotlinTestUtils.getTestDataPathBase() + "/integration/smoke/" + getTestName(true);
return KtTestUtil.getTestDataPathBase() + "/integration/smoke/" + getTestName(true);
}
protected int run(String logName, String... args) throws Exception {
@@ -21,7 +21,7 @@ import junit.framework.TestCase;
import org.jetbrains.kotlin.cli.common.ExitCode;
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler;
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.junit.Assert;
import java.io.File;
@@ -39,7 +39,7 @@ public class CompileEnvironmentTest extends TestCase {
File stdlib = ForTestCompileRuntime.runtimeJarForTests();
ExitCode exitCode = new K2JVMCompiler().exec(
System.out,
KotlinTestUtils.getTestDataPathBase() + "/compiler/smoke/Smoke.kt",
KtTestUtil.getTestDataPathBase() + "/compiler/smoke/Smoke.kt",
"-d", out.getAbsolutePath(),
"-no-stdlib",
"-classpath", stdlib.getAbsolutePath()
@@ -9,6 +9,7 @@ import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.cli.AbstractCliTest
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
import java.util.concurrent.TimeUnit
import java.util.jar.Manifest
@@ -27,7 +28,7 @@ class Java9ModulesIntegrationTest : AbstractKotlinCompilerIntegrationTest() {
val paths = (modulePath + ForTestCompileRuntime.runtimeJarForTests()).joinToString(separator = File.pathSeparator) { it.path }
val kotlinOptions = mutableListOf(
"-jdk-home", KotlinTestUtils.getJdk9Home().path,
"-jdk-home", KtTestUtil.getJdk9Home().path,
"-jvm-target", "1.8",
"-Xmodule-path=$paths"
)
@@ -63,7 +64,7 @@ class Java9ModulesIntegrationTest : AbstractKotlinCompilerIntegrationTest() {
private fun runModule(className: String, modulePath: List<File>): ModuleRunResult {
val command = listOf(
File(KotlinTestUtils.getJdk9Home(), "bin/java").path,
File(KtTestUtil.getJdk9Home(), "bin/java").path,
"-p", (modulePath + ForTestCompileRuntime.runtimeJarForTests()).joinToString(File.pathSeparator, transform = File::getPath),
"-m", className
)
@@ -170,7 +171,7 @@ class Java9ModulesIntegrationTest : AbstractKotlinCompilerIntegrationTest() {
val kotlinOptions = mutableListOf(
"$testDataDirectory/someOtherDirectoryWithTheActualModuleInfo/module-info.java",
"-jdk-home", KotlinTestUtils.getJdk9Home().path,
"-jdk-home", KtTestUtil.getJdk9Home().path,
"-Xmodule-path=${a.path}"
)
compileLibrary(
@@ -192,7 +193,7 @@ class Java9ModulesIntegrationTest : AbstractKotlinCompilerIntegrationTest() {
// Use the name other from 'library' to prevent it from being loaded as an automatic module if module-info.class is not found
val libraryJar = createMultiReleaseJar(
KotlinTestUtils.getJdk9Home(), File(tmpdir, "multi-release-library.jar"), libraryOut, libraryOut9
KtTestUtil.getJdk9Home(), File(tmpdir, "multi-release-library.jar"), libraryOut, libraryOut9
)
module("main", listOf(libraryJar))
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.MockLibraryUtil
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.kotlin.utils.JavaTypeEnhancementState
import java.io.File
@@ -41,7 +42,7 @@ class LoadJavaPackageAnnotationsTest : KtUsefulTestCase() {
private fun doTest(useJavac: Boolean, configurator: (CompilerConfiguration) -> Unit) {
val configuration = KotlinTestUtils.newConfiguration(
ConfigurationKind.ALL, TestJdkKind.FULL_JDK, KotlinTestUtils.getAnnotationsJar()
ConfigurationKind.ALL, TestJdkKind.FULL_JDK, KtTestUtil.getAnnotationsJar()
).apply {
if (useJavac) {
put(JVMConfigurationKeys.USE_JAVAC, true)
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.kotlin.types.FlexibleType
import org.jetbrains.kotlin.types.TypeConstructorSubstitution
import org.jetbrains.kotlin.types.lowerIfFlexible
@@ -75,8 +76,8 @@ class MemoryOptimizationsTest : KtUsefulTestCase() {
)
val moduleDescriptor =
JvmResolveUtil.analyze(
KotlinTestUtils.createFile("main.kt", text, environment.project),
environment
KtTestUtil.createFile("main.kt", text, environment.project),
environment
).moduleDescriptor
val aClass =
@@ -38,6 +38,7 @@ import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.MockLibraryUtil
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.kotlin.utils.JavaTypeEnhancementState
import java.io.File
@@ -88,8 +89,8 @@ class TypeQualifierAnnotationResolverTest : KtUsefulTestCase() {
val configuration = KotlinTestUtils.newConfiguration(
ConfigurationKind.ALL, TestJdkKind.FULL_JDK,
listOf(
KotlinTestUtils.getAnnotationsJar(),
MockLibraryUtil.compileJavaFilesLibraryToJar(
KtTestUtil.getAnnotationsJar(),
MockLibraryUtil.compileJavaFilesLibraryToJar(
FOREIGN_ANNOTATIONS_SOURCES_PATH,
"foreign-annotations"
)
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler
import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF
import java.io.File
import java.nio.file.Files
@@ -40,7 +41,7 @@ abstract class AbstractMultiPlatformIntegrationTest : KtUsefulTestCase() {
val common2Src = File(root, "common2.kt").takeIf(File::exists)
val jvm2Src = File(root, "jvm2.kt").takeIf(File::exists)
val tmpdir = KotlinTestUtils.tmpDir(getTestName(true))
val tmpdir = KtTestUtil.tmpDir(getTestName(true))
val optionalStdlibCommon =
if (InTextDirectivesUtils.isDirectiveDefined(commonSrc.readText(), "WITH_RUNTIME"))
@@ -31,8 +31,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.KtNodeTypes;
import org.jetbrains.kotlin.TestsCompilerError;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.testFramework.KtParsingTestCase;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
@@ -42,7 +42,7 @@ public abstract class AbstractParsingTest extends KtParsingTestCase {
@Override
protected String getTestDataPath() {
return KotlinTestUtils.getHomeDirectory();
return KtTestUtil.getHomeDirectory();
}
public AbstractParsingTest() {
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt;
import org.jetbrains.kotlin.resolve.ImportPath;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.junit.Assert;
import java.io.File;
@@ -40,8 +41,8 @@ public class KtPsiUtilTest extends KotlinTestWithEnvironment {
@NotNull
private KtFile loadPsiFile(@NotNull String name) {
try {
String text = KotlinTestUtils.doLoadFile(KotlinTestUtils.getTestDataPathBase(), name);
return KotlinTestUtils.createFile(name + ".kt", text, getProject());
String text = KtTestUtil.doLoadFile(KtTestUtil.getTestDataPathBase(), name);
return KtTestUtil.createFile(name + ".kt", text, getProject());
}
catch (IOException e) {
throw new RuntimeException(e);
@@ -84,7 +85,7 @@ public class KtPsiUtilTest extends KotlinTestWithEnvironment {
}
public void testIsLocalClass() throws IOException {
String text = FileUtil.loadFile(new File(KotlinTestUtils.getTestDataPathBase() + "/psiUtil/isLocalClass.kt"), true);
String text = FileUtil.loadFile(new File(KtTestUtil.getTestDataPathBase() + "/psiUtil/isLocalClass.kt"), true);
KtClass aClass = KtPsiFactoryKt.KtPsiFactory(getProject()).createClass(text);
@SuppressWarnings("unchecked")
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
import org.jetbrains.kotlin.test.CompilerTestUtil
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
import java.util.concurrent.TimeUnit
@@ -20,7 +21,7 @@ class ReflectionIntegrationTest : KtUsefulTestCase() {
fun testClassLoaderForBuiltIns() {
val tmpdir = KotlinTestUtils.tmpDirForTest(this)
val root = KotlinTestUtils.getTestDataPathBase() + "/reflection/classLoaderForBuiltIns"
val root = KtTestUtil.getTestDataPathBase() + "/reflection/classLoaderForBuiltIns"
KotlinTestUtils.compileJavaFiles(
listOf(File("$root/Main.java")),
listOf("-d", tmpdir.absolutePath)
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.kotlin.types.TypeProjection
import org.jetbrains.kotlin.types.TypeProjectionImpl
import org.jetbrains.kotlin.types.TypeSubstitutor
@@ -38,7 +39,7 @@ import java.util.*
class CapturedTypeApproximationTest : KotlinTestWithEnvironment() {
private val testDataPath: String
get() = KotlinTestUtils.getTestDataPathBase() + "/capturedTypeApproximation/"
get() = KtTestUtil.getTestDataPathBase() + "/capturedTypeApproximation/"
override fun createEnvironment(): KotlinCoreEnvironment = createEnvironmentWithMockJdk(ConfigurationKind.JDK_ONLY)
@@ -46,7 +47,8 @@ class CapturedTypeApproximationTest : KotlinTestWithEnvironment() {
assert(substitutions.size in 1..2) { "Captured type approximation test requires substitutions for (T) or (T, R)" }
val oneTypeVariable = substitutions.size == 1
val declarationsText = KotlinTestUtils.doLoadFile(File(testDataPath + "/declarations.kt"))
val declarationsText =
KtTestUtil.doLoadFile(File(testDataPath + "/declarations.kt"))
fun analyzeTestFile(testType: String) = run {
val test = declarationsText.replace("#TestType#", testType)
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.serialization.AbstractVersionRequirementTest
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
class JsVersionRequirementTest : AbstractVersionRequirementTest() {
@@ -37,7 +38,13 @@ class JsVersionRequirementTest : AbstractVersionRequirementTest() {
analysisFlags: Map<AnalysisFlag<*>, Any?>
) {
val environment = createEnvironment(languageVersion)
val ktFiles = files.map { file -> KotlinTestUtils.createFile(file.name, file.readText(), environment.project) }
val ktFiles = files.map { file ->
KtTestUtil.createFile(
file.name,
file.readText(),
environment.project
)
}
val trace = BindingTraceContext()
val analysisResult = TopDownAnalyzerFacadeForJS.analyzeFilesWithGivenTrace(
ktFiles, trace, createModule(environment), environment.configuration
@@ -43,7 +43,7 @@ public class RecursiveDescriptorProcessorTest extends KotlinTestWithEnvironment
File ktFile = new File("compiler/testData/recursiveProcessor/declarations.kt");
File txtFile = new File("compiler/testData/recursiveProcessor/declarations.txt");
String text = FileUtil.loadFile(ktFile, true);
KtFile jetFile = KotlinTestUtils.createFile("declarations.kt", text, getEnvironment().getProject());
KtFile jetFile = KtTestUtil.createFile("declarations.kt", text, getEnvironment().getProject());
AnalysisResult result = KotlinTestUtils.analyzeFile(jetFile, getEnvironment());
PackageViewDescriptor testPackage = result.getModuleDescriptor().getPackage(FqName.topLevel(Name.identifier("test")));