[IR] add JsTextTest for IrScript
This commit is contained in:
committed by
romanart
parent
209a20153e
commit
cf5a1615ea
@@ -68,6 +68,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
import static org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettingsKt.parseLanguageVersionSettings;
|
||||
import static org.jetbrains.kotlin.cli.common.output.OutputUtilsKt.writeAllTo;
|
||||
import static org.jetbrains.kotlin.cli.js.K2JsIrCompilerKt.loadPluginsForTests;
|
||||
import static org.jetbrains.kotlin.codegen.CodegenTestUtil.*;
|
||||
import static org.jetbrains.kotlin.codegen.TestUtilsKt.extractUrls;
|
||||
import static org.jetbrains.kotlin.test.KotlinTestUtils.getAnnotationsJar;
|
||||
@@ -130,6 +131,8 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
|
||||
);
|
||||
}
|
||||
|
||||
protected void configureTestSpecific(@NotNull CompilerConfiguration configuration, @NotNull List<TestFile> testFiles) {}
|
||||
|
||||
@NotNull
|
||||
protected CompilerConfiguration createConfiguration(
|
||||
@NotNull ConfigurationKind kind,
|
||||
@@ -144,6 +147,8 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
|
||||
updateConfiguration(configuration);
|
||||
setCustomDefaultJvmTarget(configuration);
|
||||
|
||||
configureTestSpecific(configuration, testFilesWithConfigurationDirectives);
|
||||
|
||||
return configuration;
|
||||
}
|
||||
|
||||
@@ -354,7 +359,7 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
|
||||
|
||||
List<KtFile> ktFiles = new ArrayList<>(files.size());
|
||||
for (TestFile file : files) {
|
||||
if (file.name.endsWith(".kt")) {
|
||||
if (file.name.endsWith(".kt") || file.name.endsWith(".kts")) {
|
||||
// `rangesToDiagnosticNames` parameter is not-null only for diagnostic tests, it's using for lazy diagnostics
|
||||
String content = CheckerTestUtil.INSTANCE.parseDiagnosedRanges(file.content, new ArrayList<>(0), null);
|
||||
ktFiles.add(KotlinTestUtils.createFile(file.name, content, project));
|
||||
|
||||
@@ -18,6 +18,8 @@ package org.jetbrains.kotlin.ir
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import junit.framework.TestCase
|
||||
import org.jetbrains.kotlin.cli.js.loadPluginsForTests
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
@@ -31,6 +33,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.loadScriptConfiguration
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
||||
import org.jetbrains.kotlin.utils.rethrow
|
||||
@@ -48,7 +51,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
|
||||
val ignoreErrors = shouldIgnoreErrors(wholeFile)
|
||||
val irModule = generateIrModule(ignoreErrors)
|
||||
|
||||
val ktFiles = testFiles.filter { it.name.endsWith(".kt") }
|
||||
val ktFiles = testFiles.filter { it.name.endsWith(".kt") || it.name.endsWith(".kts") }
|
||||
for ((testFile, irFile) in ktFiles.zip(irModule.files)) {
|
||||
doTestIrFileAgainstExpectations(dir, testFile, irFile)
|
||||
}
|
||||
@@ -88,6 +91,13 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
|
||||
return generateMemberStub(classDescriptor) as IrClass
|
||||
}
|
||||
|
||||
override fun configureTestSpecific(configuration: CompilerConfiguration, testFiles: List<TestFile>) {
|
||||
if (testFiles.any { it.name.endsWith(".kts") }) {
|
||||
loadScriptConfiguration(configuration)
|
||||
loadPluginsForTests(configuration)
|
||||
}
|
||||
}
|
||||
|
||||
private fun doTestIrFileAgainstExpectations(dir: File, testFile: TestFile, irFile: IrFile) {
|
||||
if (testFile.isExternalFile()) return
|
||||
|
||||
@@ -299,7 +309,9 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
|
||||
|
||||
internal class IrTreeFileLabel(val expectedTextFile: File, val lineNumber: Int)
|
||||
|
||||
protected open fun getExpectedTextFileName(testFile: TestFile, name: String = testFile.name): String = name.replace(".kt", ".txt")
|
||||
protected open fun getExpectedTextFileName(testFile: TestFile, name: String = testFile.name): String {
|
||||
return name.replace(".kts", ".txt").replace(".kt", ".txt")
|
||||
}
|
||||
|
||||
private fun parseExpectations(dir: File, testFile: TestFile): Expectations {
|
||||
val regexps =
|
||||
|
||||
Reference in New Issue
Block a user