diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractCompileKotlinAgainstCustomBinariesTest.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractCompileKotlinAgainstCustomBinariesTest.java index 2472064108f..3bdd7cdd751 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractCompileKotlinAgainstCustomBinariesTest.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractCompileKotlinAgainstCustomBinariesTest.java @@ -16,27 +16,23 @@ package org.jetbrains.jet.jvm.compiler; -import com.google.common.base.Predicates; import com.google.common.collect.Lists; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.psi.PsiFile; import com.intellij.util.ArrayUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.TestJdkKind; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; -import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; -import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.test.TestCaseWithTmpdir; import org.jetbrains.jet.test.util.DescriptorValidator; import org.jetbrains.jet.test.util.NamespaceComparator; -import org.junit.Assert; import java.io.File; import java.io.IOException; @@ -48,40 +44,35 @@ import java.util.regex.Pattern; import static org.jetbrains.jet.test.util.NamespaceComparator.validateAndCompareNamespaceWithFile; public abstract class AbstractCompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir { - protected void doTest(String ktFilePath) throws Exception { - Assert.assertTrue(ktFilePath.endsWith(".kt")); - + protected void doTest(@NotNull String ktFilePath) throws Exception { + assertTrue(ktFilePath.endsWith(".kt")); File ktFile = new File(ktFilePath); - String testFileWithoutExtension = FileUtil.getNameWithoutExtension(ktFile); - checkNamespace(ktFile, LoadDescriptorUtil.TEST_PACKAGE_FQNAME, - new File(ktFile.getParentFile(), testFileWithoutExtension + ".txt")); + NamespaceDescriptor namespace = analyzeFileToNamespace(ktFile); + + NamespaceComparator.Configuration comparator = NamespaceComparator.DONT_INCLUDE_METHODS_OF_OBJECT.withValidationStrategy( + DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES); + File txtFile = new File(ktFile.getParentFile(), FileUtil.getNameWithoutExtension(ktFile) + ".txt"); + validateAndCompareNamespaceWithFile(namespace, comparator, txtFile); } - private void checkNamespace(File ktFile, FqName namespaceFqn, File expectedFile) throws IOException { - BindingContext bindingContext = analyzeFile(ktFile); + @NotNull + protected NamespaceDescriptor analyzeFileToNamespace(@NotNull File ktFile) throws IOException { + Project project = getEnvironment(ktFile.getParentFile()).getProject(); - NamespaceDescriptor namespaceDescriptor = bindingContext.get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, namespaceFqn); - assertNotNull("Failed to find namespace: " + namespaceFqn, namespaceDescriptor); + BindingContext bindingContext = AnalyzerFacadeForJVM.analyzeOneFileWithJavaIntegration( + JetTestUtils.loadJetFile(project, ktFile), + Collections.emptyList() + ).getBindingContext(); - validateAndCompareNamespaceWithFile(namespaceDescriptor, NamespaceComparator.DONT_INCLUDE_METHODS_OF_OBJECT.withValidationStrategy( - DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES), expectedFile); + NamespaceDescriptor namespaceDescriptor = bindingContext.get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, + LoadDescriptorUtil.TEST_PACKAGE_FQNAME); + assertNotNull("Failed to find namespace: " + LoadDescriptorUtil.TEST_PACKAGE_FQNAME, namespaceDescriptor); + return namespaceDescriptor; } - protected BindingContext analyzeFile(File ktFile) throws IOException { - JetCoreEnvironment environment = getEnvironment(ktFile); - Project project = environment.getProject(); - - List jetFiles = Collections.singletonList(JetTestUtils.loadJetFile(project, ktFile)); - - return AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration( - project, jetFiles, Collections.emptyList(), - Predicates.alwaysTrue()).getBindingContext(); - } - - private JetCoreEnvironment getEnvironment(File ktFile) { - File dir = ktFile.getParentFile(); - + @NotNull + private JetCoreEnvironment getEnvironment(@NotNull File dir) { List jarFiles = FileUtil.findFilesByMask(Pattern.compile("^.*\\.jar$"), dir); CopyOnWriteArrayList extras = Lists.newCopyOnWriteArrayList(); diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileKotlinAgainstBinariesCustomTest.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileKotlinAgainstBinariesCustomTest.java index 96679cdb63d..f45ab588898 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileKotlinAgainstBinariesCustomTest.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileKotlinAgainstBinariesCustomTest.java @@ -13,47 +13,46 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.jetbrains.jet.jvm.compiler; -import junit.framework.Assert; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; -import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptorForObject; -import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.types.ErrorUtils; import java.io.File; +import java.io.IOException; import java.util.Collection; -import static org.jetbrains.jet.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME; -import static org.jetbrains.jet.lang.resolve.BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR; - public final class CompileKotlinAgainstBinariesCustomTest extends AbstractCompileKotlinAgainstCustomBinariesTest { + public static final String TEST_DATA_PATH = "compiler/testData/compileKotlinAgainstBinariesCustom/"; - public void testDuplicateObjectInSourcesAndBinaries() throws Exception { - BindingContext context = analyzeFile(new File( - "compiler/testData/compileKotlinAgainstBinariesCustom/duplicateObjectInBinaryAndSources/duplicateObjectInBinaryAndSources.kt")); - NamespaceDescriptor namespaceDescriptor = context.get(FQNAME_TO_NAMESPACE_DESCRIPTOR, TEST_PACKAGE_FQNAME); - assert namespaceDescriptor != null; - Collection allDescriptors = namespaceDescriptor.getMemberScope().getAllDescriptors(); - Assert.assertEquals(allDescriptors.size(), 2); + @NotNull + private Collection analyzeAndGetAllDescriptors() throws IOException { + String testName = getTestName(true); + File ktFile = new File(TEST_DATA_PATH + testName, testName + ".kt"); + return analyzeFileToNamespace(ktFile).getMemberScope().getAllDescriptors(); + } + + public void testDuplicateObjectInBinaryAndSources() throws Exception { + Collection allDescriptors = analyzeAndGetAllDescriptors(); + assertEquals(allDescriptors.size(), 2); for (DeclarationDescriptor descriptor : allDescriptors) { - Assert.assertTrue(descriptor.getName().asString().equals("Lol")); - Assert.assertTrue(descriptor instanceof VariableDescriptorForObject); - Assert.assertFalse("Object property should have valid class", ErrorUtils.isError(((VariableDescriptorForObject) descriptor).getObjectClass())); + assertTrue(descriptor.getName().asString().equals("Lol")); + assertTrue(descriptor instanceof VariableDescriptorForObject); + assertFalse("Object property should have valid class", + ErrorUtils.isError(((VariableDescriptorForObject) descriptor).getObjectClass())); } } public void testBrokenJarWithNoClassForObjectProperty() throws Exception { - BindingContext context = analyzeFile(new File( - "compiler/testData/compileKotlinAgainstBinariesCustom/brokenJarWithNoClassForObjectProperty/brokenJarWithNoClassForObjectProperty.kt")); - NamespaceDescriptor namespaceDescriptor = context.get(FQNAME_TO_NAMESPACE_DESCRIPTOR, TEST_PACKAGE_FQNAME); - assert namespaceDescriptor != null; - Collection allDescriptors = namespaceDescriptor.getMemberScope().getAllDescriptors(); - Assert.assertEquals(allDescriptors.size(), 1); + Collection allDescriptors = analyzeAndGetAllDescriptors(); + assertEquals(allDescriptors.size(), 1); DeclarationDescriptor descriptor = allDescriptors.iterator().next(); - Assert.assertTrue(descriptor.getName().asString().equals("Lol")); - Assert.assertTrue(descriptor instanceof VariableDescriptorForObject); - Assert.assertTrue("Object property should have an error class", ErrorUtils.isError(((VariableDescriptorForObject) descriptor).getObjectClass())); + assertTrue(descriptor.getName().asString().equals("Lol")); + assertTrue(descriptor instanceof VariableDescriptorForObject); + assertTrue("Object property should have an error class", + ErrorUtils.isError(((VariableDescriptorForObject) descriptor).getObjectClass())); } }