diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 52588e116fe..259b4918d6e 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.allopen.AbstractBytecodeListingTestForAllOpen import org.jetbrains.kotlin.android.parcel.AbstractParcelBytecodeListingTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidBoxTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidBytecodeShapeTest +import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidIrBoxTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidSyntheticPropertyDescriptorTest import org.jetbrains.kotlin.asJava.classes.AbstractUltraLightClassLoadingTest import org.jetbrains.kotlin.asJava.classes.AbstractUltraLightClassSanityTest @@ -1262,6 +1263,17 @@ fun main(args: Array) { model("codegen/android", recursive = false, extension = null, testMethod = "doFakeInvocationTest", testClassName = "Invoke") } + testClass { + model( + "codegen/android", recursive = false, extension = null, testMethod = "doCompileAgainstAndroidSdkTest", + targetBackend = TargetBackend.JVM_IR + ) + model( + "codegen/android", recursive = false, extension = null, testMethod = "doFakeInvocationTest", testClassName = "Invoke", + targetBackend = TargetBackend.JVM_IR + ) + } + testClass { model("codegen/bytecodeShape", recursive = false, extension = null) } diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBoxTest.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBoxTest.kt index 1b29746664d..27abd0ae3de 100755 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBoxTest.kt +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBoxTest.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest import org.jetbrains.kotlin.codegen.CodegenTestFiles import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind @@ -29,6 +30,7 @@ abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() { } private fun createEnvironmentForConfiguration(configuration: CompilerConfiguration, path: String) { + configuration.put(JVMConfigurationKeys.IR, backend.isIR); val layoutPaths = File(path) .listFiles { file -> file.name.startsWith("layout") && file.isDirectory }!! .map { "$path${it.name}/" } diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidIrBoxTest.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidIrBoxTest.kt new file mode 100644 index 00000000000..69a8957c667 --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidIrBoxTest.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.android.synthetic.test + +import org.jetbrains.kotlin.test.TargetBackend + +abstract class AbstractAndroidIrBoxTest : AbstractAndroidBoxTest() { + override fun getBackend() = TargetBackend.JVM_IR +} diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AndroidIrBoxTestGenerated.java b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AndroidIrBoxTestGenerated.java new file mode 100644 index 00000000000..49bbd2809f7 --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AndroidIrBoxTestGenerated.java @@ -0,0 +1,147 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.android.synthetic.test; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.runner.RunWith; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@RunWith(JUnit3RunnerWithInners.class) +public class AndroidIrBoxTestGenerated extends AbstractAndroidIrBoxTest { + @TestMetadata("plugins/android-extensions/android-extensions-compiler/testData/codegen/android") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Android extends AbstractAndroidIrBoxTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doCompileAgainstAndroidSdkTest, TargetBackend.JVM_IR, testDataFilePath); + } + + public void testAllFilesPresentInAndroid() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/android-extensions/android-extensions-compiler/testData/codegen/android"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, false); + } + + @TestMetadata("androidEntity") + public void testAndroidEntity() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntity/"); + } + + @TestMetadata("androidEntityInnerClass") + public void testAndroidEntityInnerClass() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/"); + } + + @TestMetadata("fqNameInAttr") + public void testFqNameInAttr() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fqNameInAttr/"); + } + + @TestMetadata("fqNameInTag") + public void testFqNameInTag() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fqNameInTag/"); + } + + @TestMetadata("fragment") + public void testFragment() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fragment/"); + } + + @TestMetadata("fragmentNoGetView") + public void testFragmentNoGetView() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fragmentNoGetView/"); + } + + @TestMetadata("manyWidgets") + public void testManyWidgets() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/manyWidgets/"); + } + + @TestMetadata("multiFile") + public void testMultiFile() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/multiFile/"); + } + + @TestMetadata("singleFile") + public void testSingleFile() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/singleFile/"); + } + + @TestMetadata("view") + public void testView() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/view/"); + } + } + + @TestMetadata("plugins/android-extensions/android-extensions-compiler/testData/codegen/android") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Invoke extends AbstractAndroidIrBoxTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doFakeInvocationTest, TargetBackend.JVM_IR, testDataFilePath); + } + + public void testAllFilesPresentInInvoke() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/android-extensions/android-extensions-compiler/testData/codegen/android"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, false); + } + + @TestMetadata("androidEntity") + public void testAndroidEntity() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntity/"); + } + + @TestMetadata("androidEntityInnerClass") + public void testAndroidEntityInnerClass() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/"); + } + + @TestMetadata("fqNameInAttr") + public void testFqNameInAttr() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fqNameInAttr/"); + } + + @TestMetadata("fqNameInTag") + public void testFqNameInTag() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fqNameInTag/"); + } + + @TestMetadata("fragment") + public void testFragment() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fragment/"); + } + + @TestMetadata("fragmentNoGetView") + public void testFragmentNoGetView() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fragmentNoGetView/"); + } + + @TestMetadata("manyWidgets") + public void testManyWidgets() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/manyWidgets/"); + } + + @TestMetadata("multiFile") + public void testMultiFile() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/multiFile/"); + } + + @TestMetadata("singleFile") + public void testSingleFile() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/singleFile/"); + } + + @TestMetadata("view") + public void testView() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/view/"); + } + } +} diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/CompilerTestUtils.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/CompilerTestUtils.kt index 9914c8bea21..fb853a2a196 100755 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/CompilerTestUtils.kt +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/CompilerTestUtils.kt @@ -10,11 +10,13 @@ import kotlinx.android.extensions.CacheImplementation import org.jetbrains.kotlin.android.synthetic.AndroidConfigurationKeys import org.jetbrains.kotlin.android.synthetic.AndroidExtensionPropertiesComponentContainerContributor import org.jetbrains.kotlin.android.synthetic.codegen.CliAndroidExtensionsExpressionCodegenExtension +import org.jetbrains.kotlin.android.synthetic.codegen.CliAndroidIrExtension import org.jetbrains.kotlin.android.synthetic.codegen.CliAndroidOnDestroyClassBuilderInterceptorExtension import org.jetbrains.kotlin.android.synthetic.res.AndroidLayoutXmlFileManager import org.jetbrains.kotlin.android.synthetic.res.AndroidVariant import org.jetbrains.kotlin.android.synthetic.res.CliAndroidLayoutXmlFileManager import org.jetbrains.kotlin.android.synthetic.res.CliAndroidPackageFragmentProviderExtension +import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot @@ -38,6 +40,7 @@ fun KtUsefulTestCase.createTestEnvironment(configuration: CompilerConfiguration, project.registerServiceInstance(AndroidLayoutXmlFileManager::class.java, CliAndroidLayoutXmlFileManager(project, "test", variants)) ExpressionCodegenExtension.registerExtension(project, CliAndroidExtensionsExpressionCodegenExtension(true, CacheImplementation.DEFAULT)) + IrGenerationExtension.registerExtension(project, CliAndroidIrExtension(true, CacheImplementation.DEFAULT)) StorageComponentContainerContributor.registerExtension(project, AndroidExtensionPropertiesComponentContainerContributor()) ClassBuilderInterceptorExtension.registerExtension( project, CliAndroidOnDestroyClassBuilderInterceptorExtension(CacheImplementation.DEFAULT)