From 9e2d6914254055c2ed9f3b376368ee48258af433 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 14 Dec 2020 13:26:50 +0300 Subject: [PATCH] [TEST] Move utils for checking all files presented to KtTestUtil This is needed to remove dependency on :tests-common from module with abstract test generators --- .../org/jetbrains/kotlin/test/Assertions.kt | 36 ++++ .../kotlin/test/InTextDirectivesUtils.java | 3 +- .../jetbrains/kotlin/test/TargetBackend.kt | 2 +- .../jetbrains/kotlin/test/TestMetadata.java | 0 .../kotlin/test/util/KtTestUtil.java | 204 ++++++++++++++++++ .../test/generators/NewTestGeneratorImpl.kt | 3 +- .../kotlin/test/KotlinTestUtils.java | 193 +---------------- .../kotlin/generators/TestGenerationDSL.kt | 1 - ...ModelTestAllFilesPresentMethodGenerator.kt | 4 +- ...stModelAllFilesPresentedMethodGenerator.kt | 4 +- .../generators/impl/TestGeneratorImpl.kt | 2 + .../generators/model/SimpleTestClassModel.kt | 1 - ...AbstractMultiFileJvmBasicCompletionTest.kt | 6 +- ...radleConfigureProjectByChangingFileTest.kt | 3 +- ...MavenConfigureProjectByChangingFileTest.kt | 3 +- .../checkers/AbstractPsiCheckerTest.java | 4 +- .../resolve/AbstractIdeLightClassTest.kt | 3 +- .../navigation/AbstractKotlinGotoTest.java | 4 +- .../AbstractParameterInfoTest.kt | 4 +- 19 files changed, 266 insertions(+), 214 deletions(-) create mode 100644 compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/Assertions.kt rename compiler/{tests-common => test-infrastructure-utils}/tests/org/jetbrains/kotlin/test/InTextDirectivesUtils.java (98%) rename compiler/{tests-common => test-infrastructure-utils}/tests/org/jetbrains/kotlin/test/TargetBackend.kt (91%) rename compiler/{tests-common => test-infrastructure-utils}/tests/org/jetbrains/kotlin/test/TestMetadata.java (100%) diff --git a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/Assertions.kt b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/Assertions.kt new file mode 100644 index 00000000000..c9a1d5c38b5 --- /dev/null +++ b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/Assertions.kt @@ -0,0 +1,36 @@ +/* + * 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. + */ + +@file:JvmName("KtAssert") + +package org.jetbrains.kotlin.test + +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.contract + +/* + * Those functions are needed only in this module because it has no testing framework + * with assertions in it's dependencies + */ + +internal fun fail(message: String) { + throw AssertionError(message) +} + +@OptIn(ExperimentalContracts::class) +internal fun assertNotNull(message: String, value: Any?) { + contract { + returns() implies (value != null) + } + if (value == null) { + fail(message) + } +} + +internal fun assertTrue(message: String, value: Boolean) { + if (!value) { + fail(message) + } +} diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/InTextDirectivesUtils.java b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/InTextDirectivesUtils.java similarity index 98% rename from compiler/tests-common/tests/org/jetbrains/kotlin/test/InTextDirectivesUtils.java rename to compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/InTextDirectivesUtils.java index e54bc1a80fa..deed34be588 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/InTextDirectivesUtils.java +++ b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/InTextDirectivesUtils.java @@ -13,7 +13,6 @@ import kotlin.text.StringsKt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.utils.ExceptionUtilsKt; -import org.junit.Assert; import java.io.BufferedReader; import java.io.File; @@ -149,7 +148,7 @@ public final class InTextDirectivesUtils { prefixes.removeAll(cleanDirectivesFromComments(knownPrefixes)); - Assert.assertTrue("File contains some unexpected directives" + prefixes, prefixes.isEmpty()); + KtAssert.assertTrue("File contains some unexpected directives" + prefixes, prefixes.isEmpty()); } private static String probableDirective(String line) { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/TargetBackend.kt b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TargetBackend.kt similarity index 91% rename from compiler/tests-common/tests/org/jetbrains/kotlin/test/TargetBackend.kt rename to compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TargetBackend.kt index 450f0c4679d..93f1d5d8186 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/TargetBackend.kt +++ b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TargetBackend.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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. */ diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/TestMetadata.java b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TestMetadata.java similarity index 100% rename from compiler/tests-common/tests/org/jetbrains/kotlin/test/TestMetadata.java rename to compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TestMetadata.java diff --git a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/KtTestUtil.java b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/KtTestUtil.java index 1d9b56b558b..2f096006e55 100644 --- a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/KtTestUtil.java +++ b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/KtTestUtil.java @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.test.util; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtilRt; import com.intellij.openapi.vfs.CharsetToolkit; @@ -13,15 +14,26 @@ import com.intellij.psi.PsiFileFactory; import com.intellij.psi.impl.PsiFileFactoryImpl; import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.PathUtil; +import com.intellij.util.containers.ContainerUtil; +import kotlin.collections.SetsKt; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinLanguage; import org.jetbrains.kotlin.psi.KtFile; +import org.jetbrains.kotlin.test.KtAssert; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.Set; +import java.util.regex.Pattern; + +import static org.jetbrains.kotlin.test.InTextDirectivesUtils.isCompatibleTarget; public class KtTestUtil { private static String homeDir = computeHomeDirectory(); @@ -193,4 +205,196 @@ public class KtTestUtil { throw new IllegalStateException("Failed to create " + file); } } + + // ---------------------- assert testdata presented by metadata ---------------------- + + private static final String PLEASE_REGENERATE_TESTS = "Please regenerate tests (GenerateTests.kt)"; + + public static void assertAllTestsPresentByMetadataWithExcluded( + @NotNull Class testCaseClass, + @NotNull File testDataDir, + @NotNull Pattern filenamePattern, + @Nullable Pattern excludedPattern, + boolean recursive, + @NotNull String... excludeDirs + ) { + assertAllTestsPresentByMetadataWithExcluded(testCaseClass, testDataDir, filenamePattern, excludedPattern, TargetBackend.ANY, recursive, excludeDirs); + } + + public static void assertAllTestsPresentByMetadata( + @NotNull Class testCaseClass, + @NotNull File testDataDir, + @NotNull Pattern filenamePattern, + boolean recursive, + @NotNull String... excludeDirs + ) { + assertAllTestsPresentByMetadata( + testCaseClass, + testDataDir, + filenamePattern, + TargetBackend.ANY, + recursive, + excludeDirs + ); + } + + public static void assertAllTestsPresentByMetadataWithExcluded( + @NotNull Class testCaseClass, + @NotNull File testDataDir, + @NotNull Pattern filenamePattern, + @Nullable Pattern excludedPattern, + @NotNull TargetBackend targetBackend, + boolean recursive, + @NotNull String... excludeDirs + ) { + File rootFile = new File(getTestsRoot(testCaseClass)); + + Set filePaths = collectPathsMetadata(testCaseClass); + Set exclude = SetsKt.setOf(excludeDirs); + + File[] files = testDataDir.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isDirectory()) { + if (recursive && containsTestData(file, filenamePattern, excludedPattern) && !exclude.contains(file.getName())) { + assertTestClassPresentByMetadata(testCaseClass, file); + } + } + else { + boolean excluded = excludedPattern != null && excludedPattern.matcher(file.getName()).matches(); + if (!excluded && filenamePattern.matcher(file.getName()).matches() && isCompatibleTarget(targetBackend, file)) { + assertFilePathPresent(file, rootFile, filePaths); + } + } + } + } + } + + public static void assertAllTestsPresentByMetadata( + @NotNull Class testCaseClass, + @NotNull File testDataDir, + @NotNull Pattern filenamePattern, + @NotNull TargetBackend targetBackend, + boolean recursive, + @NotNull String... excludeDirs + ) { + assertAllTestsPresentByMetadataWithExcluded(testCaseClass, testDataDir, filenamePattern, null, targetBackend, recursive, excludeDirs); + } + + public static void assertAllTestsPresentInSingleGeneratedClass( + @NotNull Class testCaseClass, + @NotNull File testDataDir, + @NotNull Pattern filenamePattern + ) { + assertAllTestsPresentInSingleGeneratedClass(testCaseClass, testDataDir, filenamePattern, TargetBackend.ANY); + } + + public static void assertAllTestsPresentInSingleGeneratedClassWithExcluded( + @NotNull Class testCaseClass, + @NotNull File testDataDir, + @NotNull Pattern filenamePattern, + @Nullable Pattern excludePattern + ) { + assertAllTestsPresentInSingleGeneratedClass(testCaseClass, testDataDir, filenamePattern, excludePattern, TargetBackend.ANY); + } + + public static void assertAllTestsPresentInSingleGeneratedClass( + @NotNull Class testCaseClass, + @NotNull File testDataDir, + @NotNull Pattern filenamePattern, + @NotNull TargetBackend targetBackend + ) { + assertAllTestsPresentInSingleGeneratedClass(testCaseClass, testDataDir, filenamePattern, null, targetBackend); + } + + public static void assertAllTestsPresentInSingleGeneratedClass( + @NotNull Class testCaseClass, + @NotNull File testDataDir, + @NotNull Pattern filenamePattern, + @Nullable Pattern excludePattern, + @NotNull TargetBackend targetBackend + ) { + File rootFile = new File(getTestsRoot(testCaseClass)); + + Set filePaths = collectPathsMetadata(testCaseClass); + + FileUtil.processFilesRecursively(testDataDir, file -> { + boolean excluded = excludePattern != null && excludePattern.matcher(file.getName()).matches(); + if (file.isFile() && !excluded && filenamePattern.matcher(file.getName()).matches() && isCompatibleTarget(targetBackend, file)) { + assertFilePathPresent(file, rootFile, filePaths); + } + + return true; + }); + } + + private static void assertFilePathPresent(File file, File rootFile, Set filePaths) { + String path = FileUtil.getRelativePath(rootFile, file); + if (path != null) { + String relativePath = nameToCompare(path); + if (!filePaths.contains(relativePath)) { + KtAssert.fail("Test data file missing from the generated test class: " + file + "\n" + PLEASE_REGENERATE_TESTS); + } + } + } + + private static Set collectPathsMetadata(Class testCaseClass) { + return new HashSet<>(ContainerUtil.map(collectMethodsMetadata(testCaseClass), KtTestUtil::nameToCompare)); + } + + @Nullable + public static String getMethodMetadata(Method method) { + TestMetadata testMetadata = method.getAnnotation(TestMetadata.class); + return (testMetadata != null) ? testMetadata.value() : null; + } + + private static Set collectMethodsMetadata(Class testCaseClass) { + Set filePaths = new HashSet<>(); + for (Method method : testCaseClass.getDeclaredMethods()) { + String path = getMethodMetadata(method); + if (path != null) { + filePaths.add(path); + } + } + return filePaths; + } + + private static boolean containsTestData(File dir, Pattern filenamePattern, @Nullable Pattern excludedPattern) { + File[] files = dir.listFiles(); + assert files != null; + for (File file : files) { + if (file.isDirectory()) { + if (containsTestData(file, filenamePattern, excludedPattern)) { + return true; + } + } + else { + boolean excluded = excludedPattern != null && excludedPattern.matcher(file.getName()).matches(); + if (! excluded && filenamePattern.matcher(file.getName()).matches()) { + return true; + } + } + } + return false; + } + + private static void assertTestClassPresentByMetadata(@NotNull Class outerClass, @NotNull File testDataDir) { + for (Class nestedClass : outerClass.getDeclaredClasses()) { + TestMetadata testMetadata = nestedClass.getAnnotation(TestMetadata.class); + if (testMetadata != null && testMetadata.value().equals(KtTestUtil.getFilePath(testDataDir))) { + return; + } + } + KtAssert.fail("Test data directory missing from the generated test class: " + testDataDir + "\n" + PLEASE_REGENERATE_TESTS); + } + + public static String getTestsRoot(@NotNull Class testCaseClass) { + TestMetadata testClassMetadata = testCaseClass.getAnnotation(TestMetadata.class); + KtAssert.assertNotNull("No metadata for class: " + testCaseClass, testClassMetadata); + return testClassMetadata.value(); + } + + public static String nameToCompare(@NotNull String name) { + return (SystemInfo.isFileSystemCaseSensitive ? name : name.toLowerCase()).replace('\\', '/'); + } } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/generators/NewTestGeneratorImpl.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/generators/NewTestGeneratorImpl.kt index 715155167c8..ee63c382f21 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/generators/NewTestGeneratorImpl.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/generators/NewTestGeneratorImpl.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.generators.model.* import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestMetadata +import org.jetbrains.kotlin.test.util.KtTestUtil import org.jetbrains.kotlin.utils.Printer import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test @@ -130,7 +131,7 @@ object NewTestGeneratorImpl : TestGenerator(METHOD_GENERATORS) { p.println("package $suiteClassPackage;") p.println() p.println("import com.intellij.testFramework.TestDataPath;") - p.println("import ${KotlinTestUtils::class.java.canonicalName};") + p.println("import ${KtTestUtil::class.java.canonicalName};") for (clazz in testClassModels.flatMapTo(mutableSetOf()) { classModel -> classModel.imports }) { p.println("import ${clazz.name};") diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java index dcf3e7f19b1..8863c64da1b 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java @@ -19,11 +19,9 @@ import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.psi.PsiElement; import com.intellij.rt.execution.junit.FileComparisonFailure; import com.intellij.testFramework.TestDataFile; -import com.intellij.util.containers.ContainerUtil; import junit.framework.TestCase; import kotlin.Unit; import kotlin.collections.CollectionsKt; -import kotlin.collections.SetsKt; import kotlin.jvm.functions.Function0; import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; @@ -74,7 +72,6 @@ public class KotlinTestUtils { public static String TEST_MODULE_NAME = "test-module"; public static final String TEST_GENERATOR_NAME = "org.jetbrains.kotlin.generators.tests.TestsPackage"; - private static final String PLEASE_REGENERATE_TESTS = "Please regenerate tests (GenerateTests.kt)"; private static final boolean RUN_IGNORED_TESTS_AS_REGULAR = Boolean.getBoolean("org.jetbrains.kotlin.run.ignored.tests.as.regular"); @@ -686,12 +683,6 @@ public class KotlinTestUtils { }; } - public static String getTestsRoot(@NotNull Class testCaseClass) { - TestMetadata testClassMetadata = testCaseClass.getAnnotation(TestMetadata.class); - Assert.assertNotNull("No metadata for class: " + testCaseClass, testClassMetadata); - return testClassMetadata.value(); - } - /** * @return test data file name specified in the metadata of test method */ @@ -699,191 +690,13 @@ public class KotlinTestUtils { public static String getTestDataFileName(@NotNull Class testCaseClass, @NotNull String testName) { try { Method method = testCaseClass.getDeclaredMethod(testName); - return getMethodMetadata(method); + return KtTestUtil.getMethodMetadata(method); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } - public static void assertAllTestsPresentByMetadataWithExcluded( - @NotNull Class testCaseClass, - @NotNull File testDataDir, - @NotNull Pattern filenamePattern, - @Nullable Pattern excludedPattern, - boolean recursive, - @NotNull String... excludeDirs - ) { - assertAllTestsPresentByMetadataWithExcluded(testCaseClass, testDataDir, filenamePattern, excludedPattern, TargetBackend.ANY, recursive, excludeDirs); - } - - public static void assertAllTestsPresentByMetadata( - @NotNull Class testCaseClass, - @NotNull File testDataDir, - @NotNull Pattern filenamePattern, - boolean recursive, - @NotNull String... excludeDirs - ) { - assertAllTestsPresentByMetadata( - testCaseClass, - testDataDir, - filenamePattern, - TargetBackend.ANY, - recursive, - excludeDirs - ); - } - - public static void assertAllTestsPresentByMetadataWithExcluded( - @NotNull Class testCaseClass, - @NotNull File testDataDir, - @NotNull Pattern filenamePattern, - @Nullable Pattern excludedPattern, - @NotNull TargetBackend targetBackend, - boolean recursive, - @NotNull String... excludeDirs - ) { - File rootFile = new File(getTestsRoot(testCaseClass)); - - Set filePaths = collectPathsMetadata(testCaseClass); - Set exclude = SetsKt.setOf(excludeDirs); - - File[] files = testDataDir.listFiles(); - if (files != null) { - for (File file : files) { - if (file.isDirectory()) { - if (recursive && containsTestData(file, filenamePattern, excludedPattern) && !exclude.contains(file.getName())) { - assertTestClassPresentByMetadata(testCaseClass, file); - } - } - else { - boolean excluded = excludedPattern != null && excludedPattern.matcher(file.getName()).matches(); - if (!excluded && filenamePattern.matcher(file.getName()).matches() && isCompatibleTarget(targetBackend, file)) { - assertFilePathPresent(file, rootFile, filePaths); - } - } - } - } - } - - public static void assertAllTestsPresentByMetadata( - @NotNull Class testCaseClass, - @NotNull File testDataDir, - @NotNull Pattern filenamePattern, - @NotNull TargetBackend targetBackend, - boolean recursive, - @NotNull String... excludeDirs - ) { - assertAllTestsPresentByMetadataWithExcluded(testCaseClass, testDataDir, filenamePattern, null, targetBackend, recursive, excludeDirs); - } - - public static void assertAllTestsPresentInSingleGeneratedClass( - @NotNull Class testCaseClass, - @NotNull File testDataDir, - @NotNull Pattern filenamePattern - ) { - assertAllTestsPresentInSingleGeneratedClass(testCaseClass, testDataDir, filenamePattern, TargetBackend.ANY); - } - - public static void assertAllTestsPresentInSingleGeneratedClassWithExcluded( - @NotNull Class testCaseClass, - @NotNull File testDataDir, - @NotNull Pattern filenamePattern, - @Nullable Pattern excludePattern - ) { - assertAllTestsPresentInSingleGeneratedClass(testCaseClass, testDataDir, filenamePattern, excludePattern, TargetBackend.ANY); - } - - public static void assertAllTestsPresentInSingleGeneratedClass( - @NotNull Class testCaseClass, - @NotNull File testDataDir, - @NotNull Pattern filenamePattern, - @NotNull TargetBackend targetBackend - ) { - assertAllTestsPresentInSingleGeneratedClass(testCaseClass, testDataDir, filenamePattern, null, targetBackend); - } - - public static void assertAllTestsPresentInSingleGeneratedClass( - @NotNull Class testCaseClass, - @NotNull File testDataDir, - @NotNull Pattern filenamePattern, - @Nullable Pattern excludePattern, - @NotNull TargetBackend targetBackend - ) { - File rootFile = new File(getTestsRoot(testCaseClass)); - - Set filePaths = collectPathsMetadata(testCaseClass); - - FileUtil.processFilesRecursively(testDataDir, file -> { - boolean excluded = excludePattern != null && excludePattern.matcher(file.getName()).matches(); - if (file.isFile() && !excluded && filenamePattern.matcher(file.getName()).matches() && isCompatibleTarget(targetBackend, file)) { - assertFilePathPresent(file, rootFile, filePaths); - } - - return true; - }); - } - - private static void assertFilePathPresent(File file, File rootFile, Set filePaths) { - String path = FileUtil.getRelativePath(rootFile, file); - if (path != null) { - String relativePath = nameToCompare(path); - if (!filePaths.contains(relativePath)) { - Assert.fail("Test data file missing from the generated test class: " + file + "\n" + PLEASE_REGENERATE_TESTS); - } - } - } - - private static Set collectPathsMetadata(Class testCaseClass) { - return new HashSet<>(ContainerUtil.map(collectMethodsMetadata(testCaseClass), KotlinTestUtils::nameToCompare)); - } - - @Nullable - private static String getMethodMetadata(Method method) { - TestMetadata testMetadata = method.getAnnotation(TestMetadata.class); - return (testMetadata != null) ? testMetadata.value() : null; - } - - private static Set collectMethodsMetadata(Class testCaseClass) { - Set filePaths = new HashSet<>(); - for (Method method : testCaseClass.getDeclaredMethods()) { - String path = getMethodMetadata(method); - if (path != null) { - filePaths.add(path); - } - } - return filePaths; - } - - private static boolean containsTestData(File dir, Pattern filenamePattern, @Nullable Pattern excludedPattern) { - File[] files = dir.listFiles(); - assert files != null; - for (File file : files) { - if (file.isDirectory()) { - if (containsTestData(file, filenamePattern, excludedPattern)) { - return true; - } - } - else { - boolean excluded = excludedPattern != null && excludedPattern.matcher(file.getName()).matches(); - if (! excluded && filenamePattern.matcher(file.getName()).matches()) { - return true; - } - } - } - return false; - } - - private static void assertTestClassPresentByMetadata(@NotNull Class outerClass, @NotNull File testDataDir) { - for (Class nestedClass : outerClass.getDeclaredClasses()) { - TestMetadata testMetadata = nestedClass.getAnnotation(TestMetadata.class); - if (testMetadata != null && testMetadata.value().equals(KtTestUtil.getFilePath(testDataDir))) { - return; - } - } - Assert.fail("Test data directory missing from the generated test class: " + testDataDir + "\n" + PLEASE_REGENERATE_TESTS); - } - @NotNull public static KtFile loadJetFile(@NotNull Project project, @NotNull File ioFile) throws IOException { String text = FileUtil.loadFile(ioFile, true); @@ -924,10 +737,6 @@ public class KotlinTestUtils { return testName.toLowerCase().startsWith("allfilespresentin"); } - public static String nameToCompare(@NotNull String name) { - return (SystemInfo.isFileSystemCaseSensitive ? name : name.toLowerCase()).replace('\\', '/'); - } - public static boolean isMultiExtensionName(@NotNull String name) { int firstDotIndex = name.indexOf('.'); if (firstDotIndex == -1) { diff --git a/generators/test-generator/tests/org/jetbrains/kotlin/generators/TestGenerationDSL.kt b/generators/test-generator/tests/org/jetbrains/kotlin/generators/TestGenerationDSL.kt index 835cae4cd54..a66e9c1a13a 100644 --- a/generators/test-generator/tests/org/jetbrains/kotlin/generators/TestGenerationDSL.kt +++ b/generators/test-generator/tests/org/jetbrains/kotlin/generators/TestGenerationDSL.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.generators -import junit.framework.TestCase import org.jetbrains.kotlin.generators.impl.TestGeneratorImpl import org.jetbrains.kotlin.generators.model.* import org.jetbrains.kotlin.generators.InconsistencyChecker.Companion.hasDryRunArg diff --git a/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/SimpleTestClassModelTestAllFilesPresentMethodGenerator.kt b/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/SimpleTestClassModelTestAllFilesPresentMethodGenerator.kt index 8881cbf99de..e28ded09f20 100644 --- a/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/SimpleTestClassModelTestAllFilesPresentMethodGenerator.kt +++ b/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/SimpleTestClassModelTestAllFilesPresentMethodGenerator.kt @@ -35,7 +35,7 @@ object SimpleTestClassModelTestAllFilesPresentMethodGenerator : MethodGenerator< } val assertTestsPresentStr = if (classModel.targetBackend === TargetBackend.ANY) { String.format( - "KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s, %s%s);", + "KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s, %s%s);", KtTestUtil.getFilePath(classModel.rootFile), StringUtil.escapeStringCharacters(classModel.filenamePattern.pattern()), excludedArgument, @@ -44,7 +44,7 @@ object SimpleTestClassModelTestAllFilesPresentMethodGenerator : MethodGenerator< ) } else { String.format( - "KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s, %s.%s, %s%s);", + "KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s, %s.%s, %s%s);", KtTestUtil.getFilePath(classModel.rootFile), StringUtil.escapeStringCharacters(classModel.filenamePattern.pattern()), excludedArgument, TargetBackend::class.java.simpleName, classModel.targetBackend.toString(), classModel.recursive, exclude diff --git a/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/SingleClassTestModelAllFilesPresentedMethodGenerator.kt b/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/SingleClassTestModelAllFilesPresentedMethodGenerator.kt index e4a7efe7d4b..2c66ad2e858 100644 --- a/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/SingleClassTestModelAllFilesPresentedMethodGenerator.kt +++ b/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/SingleClassTestModelAllFilesPresentedMethodGenerator.kt @@ -36,13 +36,13 @@ object SingleClassTestModelAllFilesPresentedMethodGenerator : MethodGenerator classModel.imports }) { p.println("import ${clazz.name};") diff --git a/generators/test-generator/tests/org/jetbrains/kotlin/generators/model/SimpleTestClassModel.kt b/generators/test-generator/tests/org/jetbrains/kotlin/generators/model/SimpleTestClassModel.kt index e0a839e3dda..13b174567aa 100644 --- a/generators/test-generator/tests/org/jetbrains/kotlin/generators/model/SimpleTestClassModel.kt +++ b/generators/test-generator/tests/org/jetbrains/kotlin/generators/model/SimpleTestClassModel.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.generators.model import com.intellij.openapi.util.io.FileUtil import org.jetbrains.kotlin.generators.util.TestGeneratorUtil.fileNameToJavaIdentifier -import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.util.KtTestUtil import java.io.File diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileJvmBasicCompletionTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileJvmBasicCompletionTest.kt index 4be5fb5dedf..53893f36285 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileJvmBasicCompletionTest.kt +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileJvmBasicCompletionTest.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.completion.test import com.intellij.codeInsight.completion.CompletionType import org.jetbrains.kotlin.idea.test.AstAccessControl import org.jetbrains.kotlin.platform.jvm.JvmPlatforms -import org.jetbrains.kotlin.test.KotlinTestUtils +import org.jetbrains.kotlin.test.util.KtTestUtil abstract class AbstractMultiFileJvmBasicCompletionTest : KotlinCompletionTestCase() { protected fun doTest(testPath: String) { @@ -24,6 +24,6 @@ abstract class AbstractMultiFileJvmBasicCompletionTest : KotlinCompletionTestCas } override fun getTestDataPath(): String { - return KotlinTestUtils.getTestsRoot(this::class.java) + "/" + getTestName(false) + "/" + return KtTestUtil.getTestsRoot(this::class.java) + "/" + getTestName(false) + "/" } -} \ No newline at end of file +} diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/configuration/AbstractGradleConfigureProjectByChangingFileTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/configuration/AbstractGradleConfigureProjectByChangingFileTest.kt index 0a76394b2f9..d5ec0350dfd 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/configuration/AbstractGradleConfigureProjectByChangingFileTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/configuration/AbstractGradleConfigureProjectByChangingFileTest.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils.isAllFilesPresentTest +import org.jetbrains.kotlin.test.util.KtTestUtil import org.jetbrains.plugins.groovy.lang.psi.GroovyFile import java.io.File @@ -34,7 +35,7 @@ abstract class AbstractGradleConfigureProjectByChangingFileTest : } private fun beforeAfterFiles(): Pair { - val root = KotlinTestUtils.getTestsRoot(this::class.java) + val root = KtTestUtil.getTestsRoot(this::class.java) val test = KotlinTestUtils.getTestDataFileName(this::class.java, name) val path = "$root/$test" val testFile = File(path) diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/configuration/AbstractMavenConfigureProjectByChangingFileTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/configuration/AbstractMavenConfigureProjectByChangingFileTest.kt index 7896774b98f..b2bf38b2dd5 100644 --- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/configuration/AbstractMavenConfigureProjectByChangingFileTest.kt +++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/configuration/AbstractMavenConfigureProjectByChangingFileTest.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.idea.configuration.NotificationMessageCollector import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils.isAllFilesPresentTest +import org.jetbrains.kotlin.test.util.KtTestUtil import java.io.File abstract class AbstractMavenConfigureProjectByChangingFileTest : AbstractConfigureProjectByChangingFileTest() { @@ -53,7 +54,7 @@ abstract class AbstractMavenConfigureProjectByChangingFileTest : AbstractConfigu override fun getProjectJDK(): Sdk { if (!isAllFilesPresentTest(getTestName(false))) { - val root = KotlinTestUtils.getTestsRoot(this::class.java) + val root = KtTestUtil.getTestsRoot(this::class.java) val dir = KotlinTestUtils.getTestDataFileName(this::class.java, name) val pomFile = File("$root/$dir", MavenConstants.POM_XML) diff --git a/idea/tests/org/jetbrains/kotlin/checkers/AbstractPsiCheckerTest.java b/idea/tests/org/jetbrains/kotlin/checkers/AbstractPsiCheckerTest.java index e1be1a519b3..98a416691c4 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/AbstractPsiCheckerTest.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/AbstractPsiCheckerTest.java @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration; import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.psi.KtTreeVisitorVoid; import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; -import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.util.KtTestUtil; import java.io.File; @@ -92,7 +92,7 @@ public abstract class AbstractPsiCheckerTest extends KotlinLightCodeInsightFixtu @Override protected String getTestDataPath() { - return KotlinTestUtils.getTestsRoot(this.getClass()); + return KtTestUtil.getTestsRoot(this.getClass()); } } 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 efe05283eae..1e5e875117a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/AbstractIdeLightClassTest.kt @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.MockLibraryUtil +import org.jetbrains.kotlin.test.util.KtTestUtil import org.jetbrains.kotlin.utils.keysToMap import org.jetbrains.plugins.groovy.lang.psi.impl.stringValue import org.junit.Assert @@ -101,7 +102,7 @@ abstract class AbstractIdeCompiledLightClassTest : KotlinDaemonAnalyzerTestCase( val testName = getTestName(false) if (KotlinTestUtils.isAllFilesPresentTest(testName)) return - val filePathWithoutExtension = "${KotlinTestUtils.getTestsRoot(this::class.java)}/${getTestName(false)}" + val filePathWithoutExtension = "${KtTestUtil.getTestsRoot(this::class.java)}/${getTestName(false)}" val testFile = File("$filePathWithoutExtension.kt").takeIf { it.exists() } ?: File("$filePathWithoutExtension.kts").takeIf { it.exists() } diff --git a/idea/tests/org/jetbrains/kotlin/idea/navigation/AbstractKotlinGotoTest.java b/idea/tests/org/jetbrains/kotlin/idea/navigation/AbstractKotlinGotoTest.java index 644b6e16496..9bb1c5a027f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/navigation/AbstractKotlinGotoTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/navigation/AbstractKotlinGotoTest.java @@ -9,7 +9,7 @@ import com.intellij.ide.util.gotoByName.GotoClassModel2; import com.intellij.ide.util.gotoByName.GotoSymbolModel2; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase; -import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.util.KtTestUtil; import static org.jetbrains.kotlin.idea.navigation.GotoCheck.checkGotoDirectives; @@ -28,7 +28,7 @@ public abstract class AbstractKotlinGotoTest extends KotlinLightCodeInsightFixtu @Override protected void setUp() { - dirPath = KotlinTestUtils.getTestsRoot(getClass()); + dirPath = KtTestUtil.getTestsRoot(getClass()); super.setUp(); } diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractParameterInfoTest.kt b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractParameterInfoTest.kt index bc602317a36..308af343c50 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractParameterInfoTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractParameterInfoTest.kt @@ -23,13 +23,13 @@ import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.psiUtil.allChildren import org.jetbrains.kotlin.test.InTextDirectivesUtils -import org.jetbrains.kotlin.test.KotlinTestUtils +import org.jetbrains.kotlin.test.util.KtTestUtil import org.junit.Assert import java.io.File abstract class AbstractParameterInfoTest : LightCodeInsightFixtureTestCase() { override fun getProjectDescriptor(): LightProjectDescriptor { - val root = KotlinTestUtils.getTestsRoot(this::class.java) + val root = KtTestUtil.getTestsRoot(this::class.java) if (root.contains("Lib")) { return SdkAndMockLibraryProjectDescriptor("$root/sharedLib", true, true, false, false) }