From 66a6713577861038ff29f5b0e27ef9c4760bd1f6 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Fri, 27 Sep 2019 12:55:56 +0300 Subject: [PATCH] Tests: extract scripts testdata for light classes in ide to separate test For compiled scripts there is AbstractIdeCompiledLightClassTest For now there is a difference in light classes constructed from source and from compiled class (missing baseClass and constructor parameter for script class) But it doesn't affect users because calling script class from Java isn't supported yet testData for AbstractIdeLightClassTest and AbstractIdeLightClassForScriptTest can be merged when the difference will be fixed --- .../asJava/script/ide/HelloWorld.java | 5 +++ .../testData/asJava/script/ide/HelloWorld.kts | 5 +++ .../asJava/script/ide/InnerClasses.java | 24 +++++++++++ .../asJava/script/ide/InnerClasses.kts | 15 +++++++ .../kotlin/generators/tests/GenerateTests.kt | 6 ++- .../generators/tests/GenerateTests.kt.183 | 6 ++- .../generators/tests/GenerateTests.kt.as34 | 6 ++- .../generators/tests/GenerateTests.kt.as35 | 6 ++- .../generators/tests/GenerateTests.kt.as36 | 6 ++- .../AbstractIdeLightClassForScriptTest.kt | 10 +++++ .../resolve/AbstractIdeLightClassTest.kt | 5 ++- .../IdeLightClassForScriptTestGenerated.java | 41 +++++++++++++++++++ .../resolve/IdeLightClassTestGenerated.java | 25 +---------- 13 files changed, 129 insertions(+), 31 deletions(-) create mode 100644 compiler/testData/asJava/script/ide/HelloWorld.java create mode 100644 compiler/testData/asJava/script/ide/HelloWorld.kts create mode 100644 compiler/testData/asJava/script/ide/InnerClasses.java create mode 100644 compiler/testData/asJava/script/ide/InnerClasses.kts create mode 100644 idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassForScriptTest.kt create mode 100644 idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassForScriptTestGenerated.java diff --git a/compiler/testData/asJava/script/ide/HelloWorld.java b/compiler/testData/asJava/script/ide/HelloWorld.java new file mode 100644 index 00000000000..cc01b0f9167 --- /dev/null +++ b/compiler/testData/asJava/script/ide/HelloWorld.java @@ -0,0 +1,5 @@ +public class HelloWorld { + public static final void main(java.lang.String[] p) { /* compiled code */ } + + public HelloWorld() { /* compiled code */ } +} \ No newline at end of file diff --git a/compiler/testData/asJava/script/ide/HelloWorld.kts b/compiler/testData/asJava/script/ide/HelloWorld.kts new file mode 100644 index 00000000000..6a749c71ac9 --- /dev/null +++ b/compiler/testData/asJava/script/ide/HelloWorld.kts @@ -0,0 +1,5 @@ +// HelloWorld + +println("Hello world!") + +// LAZINESS:NoLaziness \ No newline at end of file diff --git a/compiler/testData/asJava/script/ide/InnerClasses.java b/compiler/testData/asJava/script/ide/InnerClasses.java new file mode 100644 index 00000000000..5c50f1ca54a --- /dev/null +++ b/compiler/testData/asJava/script/ide/InnerClasses.java @@ -0,0 +1,24 @@ +public class InnerClasses { + public static final void main(java.lang.String[] p) { /* compiled code */ } + + public InnerClasses() { /* compiled code */ } + + public static final class Bar { + private final int b; + private final int a; + + public final int getB() { /* compiled code */ } + + public final int getAPlusB() { /* compiled code */ } + + public final int getA() { /* compiled code */ } + + public Bar(int a) { /* compiled code */ } + + public static final class Baz { + public final void doSomething() { /* compiled code */ } + + public Baz() { /* compiled code */ } + } + } +} diff --git a/compiler/testData/asJava/script/ide/InnerClasses.kts b/compiler/testData/asJava/script/ide/InnerClasses.kts new file mode 100644 index 00000000000..7535d2d8041 --- /dev/null +++ b/compiler/testData/asJava/script/ide/InnerClasses.kts @@ -0,0 +1,15 @@ +// InnerClasses + +class Bar(val a: Int) { + val b: Int = { 0 }() + + fun getAPlusB() = a + b + + class Baz { + fun doSomething() { + + } + } +} + +// LAZINESS:NoLaziness \ No newline at end of file diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index c64d4120715..6fef4c2ff9a 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -919,7 +919,11 @@ fun main(args: Array) { } testClass { - model("asJava/lightClasses", excludeDirs = listOf("delegation"), pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) + model("asJava/lightClasses", excludeDirs = listOf("delegation", "script"), pattern = KT_WITHOUT_DOTS_IN_NAME) + } + + testClass { + model("asJava/script/ide", pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) } testClass { diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.183 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.183 index b6d0b8c601a..b7c6839430a 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.183 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.183 @@ -867,7 +867,11 @@ fun main(args: Array) { } testClass { - model("asJava/lightClasses", excludeDirs = listOf("delegation"), pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) + model("asJava/lightClasses", excludeDirs = listOf("delegation", "script"), pattern = KT_WITHOUT_DOTS_IN_NAME) + } + + testClass { + model("asJava/script/ide", pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) } testClass { diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as34 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as34 index 74ee01ad823..41e6d583905 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as34 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as34 @@ -841,7 +841,11 @@ fun main(args: Array) { } testClass { - model("asJava/lightClasses", excludeDirs = listOf("delegation"), pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) + model("asJava/lightClasses", excludeDirs = listOf("delegation", "script"), pattern = KT_WITHOUT_DOTS_IN_NAME) + } + + testClass { + model("asJava/script/ide", pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) } testClass { diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as35 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as35 index 3424c6d9b71..81297f2f5e2 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as35 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as35 @@ -837,7 +837,11 @@ fun main(args: Array) { } testClass { - model("asJava/lightClasses", excludeDirs = listOf("delegation"), pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) + model("asJava/lightClasses", excludeDirs = listOf("delegation", "script"), pattern = KT_WITHOUT_DOTS_IN_NAME) + } + + testClass { + model("asJava/script/ide", pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) } testClass { diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as36 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as36 index 3424c6d9b71..81297f2f5e2 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as36 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as36 @@ -837,7 +837,11 @@ fun main(args: Array) { } testClass { - model("asJava/lightClasses", excludeDirs = listOf("delegation"), pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) + model("asJava/lightClasses", excludeDirs = listOf("delegation", "script"), pattern = KT_WITHOUT_DOTS_IN_NAME) + } + + testClass { + model("asJava/script/ide", pattern = KT_OR_KTS_WITHOUT_DOTS_IN_NAME) } testClass { diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassForScriptTest.kt b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassForScriptTest.kt new file mode 100644 index 00000000000..eb3e2030c95 --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassForScriptTest.kt @@ -0,0 +1,10 @@ +/* + * Copyright 2010-2019 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.idea.caches.resolve + +abstract class AbstractIdeLightClassForScriptTest : AbstractIdeLightClassTest() { + override val fileExtension = ".kts" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassTest.kt b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassTest.kt index 790297d2f5d..2026d8ec57b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassTest.kt @@ -47,8 +47,7 @@ abstract class AbstractIdeLightClassTest : KotlinLightCodeInsightFixtureTestCase fun doTest(testDataPath: String) { forceUsingOldLightClassesForTest() val extraFilePath = when { - testDataPath.endsWith(".kt") -> testDataPath.replace(".kt", ".extra.kt") - testDataPath.endsWith(".kts") -> testDataPath.replace(".kts", ".extra.kts") + testDataPath.endsWith(fileExtension) -> testDataPath.replace(fileExtension, ".extra" + fileExtension) else -> error("Invalid test data extension") } @@ -79,6 +78,8 @@ abstract class AbstractIdeLightClassTest : KotlinLightCodeInsightFixtureTestCase } override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE + + open val fileExtension = ".kt" } abstract class AbstractIdeCompiledLightClassTest : KotlinDaemonAnalyzerTestCase() { diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassForScriptTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassForScriptTestGenerated.java new file mode 100644 index 00000000000..b4a51ce654d --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassForScriptTestGenerated.java @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2019 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.idea.caches.resolve; + +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") +@TestMetadata("compiler/testData/asJava/script/ide") +@TestDataPath("$PROJECT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +public class IdeLightClassForScriptTestGenerated extends AbstractIdeLightClassForScriptTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath); + } + + public void testAllFilesPresentInIde() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/asJava/script/ide"), Pattern.compile("^([^.]+)\\.(kt|kts)$"), TargetBackend.ANY, true); + } + + @TestMetadata("HelloWorld.kts") + public void testHelloWorld() throws Exception { + runTest("compiler/testData/asJava/script/ide/HelloWorld.kts"); + } + + @TestMetadata("InnerClasses.kts") + public void testInnerClasses() throws Exception { + runTest("compiler/testData/asJava/script/ide/InnerClasses.kts"); + } +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java index 715246325ea..caef866c57a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java @@ -26,7 +26,7 @@ public class IdeLightClassTestGenerated extends AbstractIdeLightClassTest { } public void testAllFilesPresentInLightClasses() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/asJava/lightClasses"), Pattern.compile("^([^.]+)\\.(kt|kts)$"), TargetBackend.ANY, true, "delegation"); + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/asJava/lightClasses"), Pattern.compile("^([^.]+)\\.(kt|kts)$"), TargetBackend.ANY, true, "delegation", "script"); } @TestMetadata("AnnotatedParameterInEnumConstructor.kt") @@ -486,27 +486,4 @@ public class IdeLightClassTestGenerated extends AbstractIdeLightClassTest { runTest("compiler/testData/asJava/lightClasses/publicField/Simple.kt"); } } - - @TestMetadata("compiler/testData/asJava/lightClasses/script") - @TestDataPath("$PROJECT_ROOT") - @RunWith(JUnit3RunnerWithInners.class) - public static class Script extends AbstractIdeLightClassTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath); - } - - public void testAllFilesPresentInScript() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/asJava/lightClasses/script"), Pattern.compile("^([^.]+)\\.(kt|kts)$"), TargetBackend.ANY, true); - } - - @TestMetadata("HelloWorld.kts") - public void testHelloWorld() throws Exception { - runTest("compiler/testData/asJava/lightClasses/script/HelloWorld.kts"); - } - - @TestMetadata("InnerClasses.kts") - public void testInnerClasses() throws Exception { - runTest("compiler/testData/asJava/lightClasses/script/InnerClasses.kts"); - } - } }