diff --git a/compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/expected.txt b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava.txt similarity index 100% rename from compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/expected.txt rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava.txt diff --git a/compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/kotlin/A.kt b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/A.kt similarity index 100% rename from compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/kotlin/A.kt rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/A.kt diff --git a/compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/java/test/B.java b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/B.java similarity index 100% rename from compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/java/test/B.java rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/B.java diff --git a/compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/kotlin/C.kt b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/C.kt similarity index 100% rename from compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/kotlin/C.kt rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/C.kt diff --git a/compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/java/test/D.java b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/D.java similarity index 100% rename from compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/java/test/D.java rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/D.java diff --git a/compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/kotlin/E.kt b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/E.kt similarity index 100% rename from compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/kotlin/E.kt rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/E.kt diff --git a/compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/java/test/F.java b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/F.java similarity index 100% rename from compiler/testData/loadJavaCustom/deepSubclassingKotlinInJava/java/test/F.java rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava/F.java diff --git a/compiler/testData/loadJavaCustom/subclassingKotlinInJava/expected.txt b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/SubclassingKotlinInJava.txt similarity index 100% rename from compiler/testData/loadJavaCustom/subclassingKotlinInJava/expected.txt rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/SubclassingKotlinInJava.txt diff --git a/compiler/testData/loadJavaCustom/subclassingKotlinInJava/java/test/JavaSubclass.java b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/SubclassingKotlinInJava/JavaSubclass.java similarity index 100% rename from compiler/testData/loadJavaCustom/subclassingKotlinInJava/java/test/JavaSubclass.java rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/SubclassingKotlinInJava/JavaSubclass.java diff --git a/compiler/testData/loadJavaCustom/subclassingKotlinInJava/kotlin/KotlinClass.kt b/compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/SubclassingKotlinInJava/KotlinClass.kt similarity index 100% rename from compiler/testData/loadJavaCustom/subclassingKotlinInJava/kotlin/KotlinClass.kt rename to compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/SubclassingKotlinInJava/KotlinClass.kt diff --git a/compiler/testData/loadJavaCustom/packageLocalVisibility/inheritance/expected.txt b/compiler/testData/loadJava/javaAgainstKotlin/visibility/PackageLocal.txt similarity index 100% rename from compiler/testData/loadJavaCustom/packageLocalVisibility/inheritance/expected.txt rename to compiler/testData/loadJava/javaAgainstKotlin/visibility/PackageLocal.txt diff --git a/compiler/testData/loadJavaCustom/packageLocalVisibility/inheritance/java/test/Base.java b/compiler/testData/loadJava/javaAgainstKotlin/visibility/PackageLocal/Base.java similarity index 100% rename from compiler/testData/loadJavaCustom/packageLocalVisibility/inheritance/java/test/Base.java rename to compiler/testData/loadJava/javaAgainstKotlin/visibility/PackageLocal/Base.java diff --git a/compiler/testData/loadJavaCustom/packageLocalVisibility/inheritance/kotlin/Derived.kt b/compiler/testData/loadJava/javaAgainstKotlin/visibility/PackageLocal/Derived.kt similarity index 100% rename from compiler/testData/loadJavaCustom/packageLocalVisibility/inheritance/kotlin/Derived.kt rename to compiler/testData/loadJava/javaAgainstKotlin/visibility/PackageLocal/Derived.kt diff --git a/compiler/testData/loadJavaCustom/protectedPackageVisibility/inheritance/expected.txt b/compiler/testData/loadJava/javaAgainstKotlin/visibility/ProtectedPackage.txt similarity index 100% rename from compiler/testData/loadJavaCustom/protectedPackageVisibility/inheritance/expected.txt rename to compiler/testData/loadJava/javaAgainstKotlin/visibility/ProtectedPackage.txt diff --git a/compiler/testData/loadJavaCustom/protectedPackageVisibility/inheritance/java/test/Base.java b/compiler/testData/loadJava/javaAgainstKotlin/visibility/ProtectedPackage/Base.java similarity index 100% rename from compiler/testData/loadJavaCustom/protectedPackageVisibility/inheritance/java/test/Base.java rename to compiler/testData/loadJava/javaAgainstKotlin/visibility/ProtectedPackage/Base.java diff --git a/compiler/testData/loadJavaCustom/protectedPackageVisibility/inheritance/kotlin/Derived.kt b/compiler/testData/loadJava/javaAgainstKotlin/visibility/ProtectedPackage/Derived.kt similarity index 100% rename from compiler/testData/loadJavaCustom/protectedPackageVisibility/inheritance/kotlin/Derived.kt rename to compiler/testData/loadJava/javaAgainstKotlin/visibility/ProtectedPackage/Derived.kt diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractLoadJavaTest.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractLoadJavaTest.java index 1138559bfc8..82be5c60bb3 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractLoadJavaTest.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractLoadJavaTest.java @@ -46,6 +46,7 @@ import org.jetbrains.jet.test.TestCaseWithTmpdir; import org.junit.Assert; import java.io.File; +import java.io.FileFilter; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -104,12 +105,20 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir { checkJavaNamespace(expectedFile, javaNamespaceAndContext.first, javaNamespaceAndContext.second); } - protected void doTestJavaAgainstKotlin(String path) throws Exception { - File dir = new File(path); + protected void doTestJavaAgainstKotlin(String expectedFileName) throws Exception { + File expectedFile = new File(expectedFileName); + File sourcesDir = new File(expectedFileName.replaceFirst("\\.txt$", "")); + + FileUtil.copyDir(sourcesDir, new File(tmpdir, "test"), new FileFilter() { + @Override + public boolean accept(@NotNull File pathname) { + return pathname.getName().endsWith(".java"); + } + }); CompilerConfiguration configuration = JetTestUtils.compilerConfigurationForTests( - ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, new File(dir, "java")); - configuration.put(CommonConfigurationKeys.SOURCE_ROOTS_KEY, Arrays.asList(new File(dir, "kotlin").getAbsolutePath())); + ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, tmpdir); + configuration.put(CommonConfigurationKeys.SOURCE_ROOTS_KEY, Arrays.asList(sourcesDir.getAbsolutePath())); JetCoreEnvironment environment = new JetCoreEnvironment(getTestRootDisposable(), configuration); ModuleDescriptor moduleDescriptor = new ModuleDescriptor(Name.special("")); @@ -135,7 +144,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir { LoadDescriptorUtil.TEST_PACKAGE_FQNAME, DescriptorSearchRule.INCLUDE_KOTLIN); assert namespaceDescriptor != null : "Test namespace not found"; - checkJavaNamespace(new File(dir, "expected.txt"), namespaceDescriptor, trace.getBindingContext()); + checkJavaNamespace(expectedFile, namespaceDescriptor, trace.getBindingContext()); } private static void checkForLoadErrorsAndCompare( diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaCustomTest.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaCustomTest.java index 8f18c36ad7b..53d6b466008 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaCustomTest.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaCustomTest.java @@ -34,22 +34,4 @@ public final class LoadJavaCustomTest extends AbstractLoadJavaTest { javaDir + "/test/JFrame.java", javaDir + "/awt/Frame.java"); } - - public static class SubclassingKotlinInJavaTest extends AbstractLoadJavaTest { - public void testSubclassingKotlinInJava() throws Exception { - doTestJavaAgainstKotlin(PATH + "/" + getTestName(true)); - } - - public void testDeepSubclassingKotlinInJava() throws Exception { - doTestJavaAgainstKotlin(PATH + "/" + getTestName(true)); - } - - public void testPackageInheritance() throws Exception { - doTestJavaAgainstKotlin(PATH + "/packageLocalVisibility/inheritance"); - } - - public void testProtectedPackageInheritance() throws Exception { - doTestJavaAgainstKotlin(PATH + "/protectedPackageVisibility/inheritance"); - } - } } diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java index 57660c374f6..ba0787df21c 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -30,7 +30,7 @@ import org.jetbrains.jet.jvm.compiler.AbstractLoadJavaTest; /** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") -@InnerTestClasses({LoadJavaTestGenerated.CompiledJavaCompareWithKotlin.class, LoadJavaTestGenerated.CompiledJava.class, LoadJavaTestGenerated.SourceJava.class}) +@InnerTestClasses({LoadJavaTestGenerated.CompiledJavaCompareWithKotlin.class, LoadJavaTestGenerated.CompiledJava.class, LoadJavaTestGenerated.SourceJava.class, LoadJavaTestGenerated.JavaAgainstKotlin.class}) public class LoadJavaTestGenerated extends AbstractLoadJavaTest { @TestMetadata("compiler/testData/loadJava/compiledJavaCompareWithKotlin") @InnerTestClasses({CompiledJavaCompareWithKotlin.Annotation.class, CompiledJavaCompareWithKotlin.Constructor.class, CompiledJavaCompareWithKotlin.JavaBean.class, CompiledJavaCompareWithKotlin.KotlinSignature.class, CompiledJavaCompareWithKotlin.Library.class, CompiledJavaCompareWithKotlin.Modality.class, CompiledJavaCompareWithKotlin.NotNull.class, CompiledJavaCompareWithKotlin.Vararg.class}) @@ -1118,11 +1118,76 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { } + @TestMetadata("compiler/testData/loadJava/javaAgainstKotlin") + @InnerTestClasses({JavaAgainstKotlin.SignaturePropagation.class, JavaAgainstKotlin.Visibility.class}) + public static class JavaAgainstKotlin extends AbstractLoadJavaTest { + public void testAllFilesPresentInJavaAgainstKotlin() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/loadJava/javaAgainstKotlin"), Pattern.compile("^(.+)\\.txt$"), true); + } + + @TestMetadata("compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation") + @InnerTestClasses({}) + public static class SignaturePropagation extends AbstractLoadJavaTest { + public void testAllFilesPresentInSignaturePropagation() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation"), Pattern.compile("^(.+)\\.txt$"), true); + } + + @TestMetadata("DeepSubclassingKotlinInJava.txt") + public void testDeepSubclassingKotlinInJava() throws Exception { + doTestJavaAgainstKotlin("compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/DeepSubclassingKotlinInJava.txt"); + } + + @TestMetadata("SubclassingKotlinInJava.txt") + public void testSubclassingKotlinInJava() throws Exception { + doTestJavaAgainstKotlin("compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation/SubclassingKotlinInJava.txt"); + } + + public static Test innerSuite() { + TestSuite suite = new TestSuite("SignaturePropagation"); + suite.addTestSuite(SignaturePropagation.class); + return suite; + } + } + + @TestMetadata("compiler/testData/loadJava/javaAgainstKotlin/visibility") + @InnerTestClasses({}) + public static class Visibility extends AbstractLoadJavaTest { + public void testAllFilesPresentInVisibility() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/loadJava/javaAgainstKotlin/visibility"), Pattern.compile("^(.+)\\.txt$"), true); + } + + @TestMetadata("PackageLocal.txt") + public void testPackageLocal() throws Exception { + doTestJavaAgainstKotlin("compiler/testData/loadJava/javaAgainstKotlin/visibility/PackageLocal.txt"); + } + + @TestMetadata("ProtectedPackage.txt") + public void testProtectedPackage() throws Exception { + doTestJavaAgainstKotlin("compiler/testData/loadJava/javaAgainstKotlin/visibility/ProtectedPackage.txt"); + } + + public static Test innerSuite() { + TestSuite suite = new TestSuite("Visibility"); + suite.addTestSuite(Visibility.class); + return suite; + } + } + + public static Test innerSuite() { + TestSuite suite = new TestSuite("JavaAgainstKotlin"); + suite.addTestSuite(JavaAgainstKotlin.class); + suite.addTest(SignaturePropagation.innerSuite()); + suite.addTest(Visibility.innerSuite()); + return suite; + } + } + public static Test suite() { TestSuite suite = new TestSuite("LoadJavaTestGenerated"); suite.addTest(CompiledJavaCompareWithKotlin.innerSuite()); suite.addTest(CompiledJava.innerSuite()); suite.addTestSuite(SourceJava.class); + suite.addTest(JavaAgainstKotlin.innerSuite()); return suite; } } diff --git a/generators/org/jetbrains/jet/generators/tests/GenerateTests.java b/generators/org/jetbrains/jet/generators/tests/GenerateTests.java index d92cb181d42..714686d4ceb 100644 --- a/generators/org/jetbrains/jet/generators/tests/GenerateTests.java +++ b/generators/org/jetbrains/jet/generators/tests/GenerateTests.java @@ -149,7 +149,8 @@ public class GenerateTests { AbstractLoadJavaTest.class, testModel("compiler/testData/loadJava/compiledJavaCompareWithKotlin", true, "java", "doTest"), testModel("compiler/testData/loadJava/compiledJava", true, "java", "doTestCompiledJava"), - testModel("compiler/testData/loadJava/sourceJava", true, "java", "doTestSourceJava") + testModel("compiler/testData/loadJava/sourceJava", true, "java", "doTestSourceJava"), + testModel("compiler/testData/loadJava/javaAgainstKotlin", true, "txt", "doTestJavaAgainstKotlin") ); generateTest(