Test generator: allow to exclude certain test data directories
This commit is contained in:
@@ -731,7 +731,8 @@ public class JetTestUtils {
|
|||||||
@NotNull Class<?> testCaseClass,
|
@NotNull Class<?> testCaseClass,
|
||||||
@NotNull File testDataDir,
|
@NotNull File testDataDir,
|
||||||
@NotNull Pattern filenamePattern,
|
@NotNull Pattern filenamePattern,
|
||||||
boolean recursive
|
boolean recursive,
|
||||||
|
@NotNull String... excludeDirs
|
||||||
) {
|
) {
|
||||||
TestMetadata testClassMetadata = testCaseClass.getAnnotation(TestMetadata.class);
|
TestMetadata testClassMetadata = testCaseClass.getAnnotation(TestMetadata.class);
|
||||||
Assert.assertNotNull("No metadata for class: " + testCaseClass, testClassMetadata);
|
Assert.assertNotNull("No metadata for class: " + testCaseClass, testClassMetadata);
|
||||||
@@ -739,12 +740,13 @@ public class JetTestUtils {
|
|||||||
File rootFile = new File(rootPath);
|
File rootFile = new File(rootPath);
|
||||||
|
|
||||||
Set<String> filePaths = collectPathsMetadata(testCaseClass);
|
Set<String> filePaths = collectPathsMetadata(testCaseClass);
|
||||||
|
Set<String> exclude = KotlinPackage.setOf(excludeDirs);
|
||||||
|
|
||||||
File[] files = testDataDir.listFiles();
|
File[] files = testDataDir.listFiles();
|
||||||
if (files != null) {
|
if (files != null) {
|
||||||
for (File file : files) {
|
for (File file : files) {
|
||||||
if (file.isDirectory()) {
|
if (file.isDirectory()) {
|
||||||
if (recursive && containsTestData(file, filenamePattern)) {
|
if (recursive && containsTestData(file, filenamePattern) && !exclude.contains(file.getName())) {
|
||||||
assertTestClassPresentByMetadata(testCaseClass, file);
|
assertTestClassPresentByMetadata(testCaseClass, file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,139 +16,105 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.generators.tests
|
package org.jetbrains.kotlin.generators.tests
|
||||||
|
|
||||||
import org.jetbrains.kotlin.generators.tests.generator.TestGenerator
|
|
||||||
import org.jetbrains.kotlin.generators.tests.generator.TestGenerator.TargetBackend
|
|
||||||
import java.util.ArrayList
|
|
||||||
import org.jetbrains.kotlin.generators.tests.generator.SimpleTestClassModel
|
|
||||||
import java.io.File
|
|
||||||
import java.util.regex.Pattern
|
|
||||||
import junit.framework.TestCase
|
import junit.framework.TestCase
|
||||||
import org.jetbrains.kotlin.checkers.AbstractJetDiagnosticsTest
|
import org.jetbrains.kotlin.addImport.AbstractAddImportTest
|
||||||
import org.jetbrains.kotlin.resolve.AbstractResolveTest
|
import org.jetbrains.kotlin.android.*
|
||||||
import org.jetbrains.kotlin.parsing.AbstractJetParsingTest
|
|
||||||
import org.jetbrains.kotlin.codegen.generated.AbstractBlackBoxCodegenTest
|
|
||||||
import org.jetbrains.kotlin.codegen.AbstractBytecodeTextTest
|
|
||||||
import org.jetbrains.kotlin.codegen.AbstractTopLevelMembersInvocationTest
|
|
||||||
import org.jetbrains.kotlin.codegen.AbstractCheckLocalVariablesTableTest
|
|
||||||
import org.jetbrains.kotlin.codegen.flags.AbstractWriteFlagsTest
|
|
||||||
import org.jetbrains.kotlin.codegen.defaultConstructor.AbstractDefaultArgumentsReflectionTest
|
|
||||||
import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaTest
|
|
||||||
import org.jetbrains.kotlin.jvm.compiler.AbstractCompileJavaAgainstKotlinTest
|
|
||||||
import org.jetbrains.kotlin.jvm.compiler.AbstractCompileKotlinAgainstKotlinTest
|
|
||||||
import org.jetbrains.kotlin.modules.xml.AbstractModuleXmlParserTest
|
|
||||||
import org.jetbrains.kotlin.jvm.compiler.AbstractWriteSignatureTest
|
|
||||||
import org.jetbrains.kotlin.cli.AbstractKotlincExecutableTest
|
|
||||||
import org.jetbrains.kotlin.repl.AbstractReplInterpreterTest
|
|
||||||
import org.jetbrains.kotlin.cfg.AbstractControlFlowTest
|
|
||||||
import org.jetbrains.kotlin.checkers.AbstractJetPsiCheckerTest
|
|
||||||
import org.jetbrains.kotlin.checkers.AbstractJetJsCheckerTest
|
|
||||||
import org.jetbrains.kotlin.idea.quickfix.AbstractQuickFixTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractJSBasicCompletionTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractKeywordCompletionTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractJvmSmartCompletionTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractJvmBasicCompletionTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractJvmWithLibBasicCompletionTest
|
|
||||||
import org.jetbrains.kotlin.idea.navigation.AbstractGotoSuperTest
|
|
||||||
import org.jetbrains.kotlin.idea.quickfix.AbstractQuickFixMultiFileTest
|
|
||||||
import org.jetbrains.kotlin.idea.folding.AbstractKotlinFoldingTest
|
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.surroundWith.AbstractSurroundWithTest
|
|
||||||
import org.jetbrains.kotlin.idea.intentions.AbstractIntentionTest
|
|
||||||
import org.jetbrains.kotlin.idea.AbstractSmartSelectionTest
|
|
||||||
import org.jetbrains.kotlin.idea.hierarchy.AbstractHierarchyTest
|
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.moveUpDown.AbstractCodeMoverTest
|
|
||||||
import org.jetbrains.kotlin.idea.refactoring.inline.AbstractInlineTest
|
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.unwrap.AbstractUnwrapRemoveTest
|
|
||||||
import org.jetbrains.kotlin.idea.editor.quickDoc.AbstractJetQuickDocProviderTest
|
|
||||||
import org.jetbrains.kotlin.safeDelete.AbstractJetSafeDeleteTest
|
|
||||||
import org.jetbrains.kotlin.idea.resolve.AbstractReferenceResolveTest
|
|
||||||
import org.jetbrains.kotlin.idea.resolve.AbstractReferenceResolveWithLibTest
|
|
||||||
import org.jetbrains.kotlin.findUsages.AbstractJetFindUsagesTest
|
|
||||||
import org.jetbrains.kotlin.idea.configuration.AbstractConfigureProjectByChangingFileTest
|
|
||||||
import org.jetbrains.kotlin.formatter.AbstractJetFormatterTest
|
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.AbstractOutOfBlockModificationTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractDataFlowValueRenderingTest
|
|
||||||
import org.jetbrains.kotlin.resolve.annotation.AbstractAnnotationParameterTest
|
|
||||||
import org.jetbrains.kotlin.resolve.constants.evaluate.AbstractEvaluateExpressionTest
|
|
||||||
import org.jetbrains.kotlin.resolve.calls.AbstractResolvedCallsTest
|
|
||||||
import org.jetbrains.kotlin.idea.refactoring.rename.AbstractRenameTest
|
|
||||||
import org.jetbrains.kotlin.generators.tests.generator.SingleClassTestModel
|
|
||||||
import org.jetbrains.kotlin.generators.tests.generator.TestClassModel
|
|
||||||
import org.jetbrains.kotlin.idea.conversion.copy.AbstractJavaToKotlinCopyPasteConversionTest
|
|
||||||
import org.jetbrains.kotlin.shortenRefs.AbstractShortenRefsTest
|
|
||||||
import org.jetbrains.kotlin.completion.handlers.AbstractSmartCompletionHandlerTest
|
|
||||||
import org.jetbrains.kotlin.generators.tests.generator.TestGeneratorUtil
|
|
||||||
import org.jetbrains.kotlin.idea.resolve.AbstractAdditionalResolveDescriptorRendererTest
|
|
||||||
import org.jetbrains.kotlin.idea.resolve.AbstractReferenceResolveInLibrarySourcesTest
|
|
||||||
import org.jetbrains.kotlin.resolve.constraintSystem.AbstractConstraintSystemTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractCompiledKotlinInJavaCompletionTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractKotlinSourceInJavaCompletionTest
|
|
||||||
import org.jetbrains.kotlin.checkers.AbstractJetDiagnosticsTestWithStdLib
|
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.AbstractInsertImportOnPasteTest
|
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.AbstractLineMarkersTest
|
|
||||||
import org.jetbrains.kotlin.idea.resolve.AbstractReferenceToJavaWithWrongFileStructureTest
|
|
||||||
import org.jetbrains.kotlin.idea.navigation.AbstractKotlinGotoTest
|
|
||||||
import org.jetbrains.kotlin.idea.AbstractExpressionSelectionTest
|
|
||||||
import org.jetbrains.kotlin.idea.refactoring.move.AbstractJetMoveTest
|
|
||||||
import org.jetbrains.kotlin.cfg.AbstractDataFlowTest
|
|
||||||
import org.jetbrains.kotlin.idea.imports.AbstractOptimizeImportsTest
|
|
||||||
import org.jetbrains.kotlin.idea.debugger.AbstractSmartStepIntoTest
|
|
||||||
import org.jetbrains.kotlin.idea.stubs.AbstractStubBuilderTest
|
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.AbstractJetInspectionTest
|
|
||||||
import org.jetbrains.kotlin.idea.debugger.AbstractKotlinSteppingTest
|
|
||||||
import org.jetbrains.kotlin.idea.debugger.AbstractJetPositionManagerTest
|
|
||||||
import org.jetbrains.kotlin.completion.AbstractMultiFileJvmBasicCompletionTest
|
|
||||||
import org.jetbrains.kotlin.idea.refactoring.introduce.AbstractJetExtractionTest
|
|
||||||
import org.jetbrains.kotlin.formatter.AbstractJetTypingIndentationTestBase
|
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.AbstractKotlinEvaluateExpressionTest
|
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.AbstractSelectExpressionForDebuggerTest
|
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.AbstractCodeFragmentCompletionTest
|
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.AbstractCodeFragmentHighlightingTest
|
|
||||||
import org.jetbrains.kotlin.idea.stubs.AbstractResolveByStubTest
|
|
||||||
import org.jetbrains.kotlin.idea.stubs.AbstractMultiFileHighlightingTest
|
|
||||||
import org.jetbrains.kotlin.cfg.AbstractPseudoValueTest
|
|
||||||
import org.jetbrains.kotlin.idea.structureView.AbstractKotlinFileStructureTest
|
|
||||||
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterSingleFileTest
|
|
||||||
import org.jetbrains.kotlin.jps.build.AbstractIncrementalJpsTest
|
|
||||||
import org.jetbrains.kotlin.asJava.AbstractKotlinLightClassTest
|
import org.jetbrains.kotlin.asJava.AbstractKotlinLightClassTest
|
||||||
import org.jetbrains.kotlin.load.java.AbstractJavaTypeSubstitutorTest
|
import org.jetbrains.kotlin.cfg.AbstractControlFlowTest
|
||||||
import org.jetbrains.kotlin.idea.intentions.declarations.AbstractJoinLinesTest
|
import org.jetbrains.kotlin.cfg.AbstractDataFlowTest
|
||||||
import org.jetbrains.kotlin.codegen.AbstractScriptCodegenTest
|
import org.jetbrains.kotlin.cfg.AbstractPseudoValueTest
|
||||||
import org.jetbrains.kotlin.idea.parameterInfo.AbstractFunctionParameterInfoTest
|
import org.jetbrains.kotlin.checkers.*
|
||||||
import org.jetbrains.kotlin.psi.patternMatching.AbstractJetPsiUnifierTest
|
import org.jetbrains.kotlin.cli.AbstractKotlincExecutableTest
|
||||||
|
import org.jetbrains.kotlin.codegen.*
|
||||||
|
import org.jetbrains.kotlin.codegen.defaultConstructor.AbstractDefaultArgumentsReflectionTest
|
||||||
|
import org.jetbrains.kotlin.codegen.flags.AbstractWriteFlagsTest
|
||||||
|
import org.jetbrains.kotlin.codegen.generated.AbstractBlackBoxCodegenTest
|
||||||
|
import org.jetbrains.kotlin.completion.*
|
||||||
|
import org.jetbrains.kotlin.completion.handlers.AbstractBasicCompletionHandlerTest
|
||||||
|
import org.jetbrains.kotlin.completion.handlers.AbstractCompletionCharFilterTest
|
||||||
|
import org.jetbrains.kotlin.completion.handlers.AbstractKeywordCompletionHandlerTest
|
||||||
|
import org.jetbrains.kotlin.completion.handlers.AbstractSmartCompletionHandlerTest
|
||||||
import org.jetbrains.kotlin.completion.weighers.AbstractBasicCompletionWeigherTest
|
import org.jetbrains.kotlin.completion.weighers.AbstractBasicCompletionWeigherTest
|
||||||
import org.jetbrains.kotlin.completion.weighers.AbstractSmartCompletionWeigherTest
|
import org.jetbrains.kotlin.completion.weighers.AbstractSmartCompletionWeigherTest
|
||||||
|
import org.jetbrains.kotlin.findUsages.AbstractJetFindUsagesTest
|
||||||
|
import org.jetbrains.kotlin.formatter.AbstractJetFormatterTest
|
||||||
|
import org.jetbrains.kotlin.formatter.AbstractJetTypingIndentationTestBase
|
||||||
|
import org.jetbrains.kotlin.generators.tests.generator.*
|
||||||
|
import org.jetbrains.kotlin.generators.tests.generator.TestGenerator.TargetBackend
|
||||||
import org.jetbrains.kotlin.generators.tests.reservedWords.generateTestDataForReservedWords
|
import org.jetbrains.kotlin.generators.tests.reservedWords.generateTestDataForReservedWords
|
||||||
import org.jetbrains.kotlin.idea.resolve.AbstractReferenceResolveInJavaTest
|
import org.jetbrains.kotlin.idea.AbstractExpressionSelectionTest
|
||||||
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterMultiFileTest
|
import org.jetbrains.kotlin.idea.AbstractSmartSelectionTest
|
||||||
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterForWebDemoTest
|
import org.jetbrains.kotlin.idea.codeInsight.AbstractInsertImportOnPasteTest
|
||||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.AbstractDecompiledTextTest
|
import org.jetbrains.kotlin.idea.codeInsight.AbstractJetInspectionTest
|
||||||
import org.jetbrains.kotlin.completion.AbstractMultiFileSmartCompletionTest
|
import org.jetbrains.kotlin.idea.codeInsight.AbstractLineMarkersTest
|
||||||
import org.jetbrains.kotlin.completion.handlers.AbstractCompletionCharFilterTest
|
import org.jetbrains.kotlin.idea.codeInsight.AbstractOutOfBlockModificationTest
|
||||||
import org.jetbrains.kotlin.serialization.AbstractLocalClassProtoTest
|
import org.jetbrains.kotlin.idea.codeInsight.moveUpDown.AbstractCodeMoverTest
|
||||||
import org.jetbrains.kotlin.idea.resolve.AbstractPartialBodyResolveTest
|
import org.jetbrains.kotlin.idea.codeInsight.surroundWith.AbstractSurroundWithTest
|
||||||
import org.jetbrains.kotlin.checkers.AbstractJetDiagnosticsTestWithJsStdLib
|
import org.jetbrains.kotlin.idea.codeInsight.unwrap.AbstractUnwrapRemoveTest
|
||||||
import org.jetbrains.kotlin.renderer.AbstractDescriptorRendererTest
|
import org.jetbrains.kotlin.idea.configuration.AbstractConfigureProjectByChangingFileTest
|
||||||
import org.jetbrains.kotlin.types.AbstractJetTypeBindingTest
|
import org.jetbrains.kotlin.idea.conversion.copy.AbstractJavaToKotlinCopyPasteConversionTest
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.AbstractCodeFragmentCompletionHandlerTest
|
|
||||||
import org.jetbrains.kotlin.idea.coverage.AbstractKotlinCoverageOutputFilesTest
|
import org.jetbrains.kotlin.idea.coverage.AbstractKotlinCoverageOutputFilesTest
|
||||||
import org.jetbrains.kotlin.completion.handlers.AbstractBasicCompletionHandlerTest
|
import org.jetbrains.kotlin.idea.debugger.AbstractJetPositionManagerTest
|
||||||
|
import org.jetbrains.kotlin.idea.debugger.AbstractKotlinSteppingTest
|
||||||
|
import org.jetbrains.kotlin.idea.debugger.AbstractSmartStepIntoTest
|
||||||
|
import org.jetbrains.kotlin.idea.debugger.evaluate.*
|
||||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.AbstractClsStubBuilderTest
|
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.AbstractClsStubBuilderTest
|
||||||
import org.jetbrains.kotlin.codegen.AbstractLineNumberTest
|
import org.jetbrains.kotlin.idea.decompiler.textBuilder.AbstractDecompiledTextTest
|
||||||
import org.jetbrains.kotlin.completion.handlers.AbstractKeywordCompletionHandlerTest
|
import org.jetbrains.kotlin.idea.editor.quickDoc.AbstractJetQuickDocProviderTest
|
||||||
|
import org.jetbrains.kotlin.idea.folding.AbstractKotlinFoldingTest
|
||||||
|
import org.jetbrains.kotlin.idea.hierarchy.AbstractHierarchyTest
|
||||||
|
import org.jetbrains.kotlin.idea.highlighter.AbstractDiagnosticMessageJsTest
|
||||||
|
import org.jetbrains.kotlin.idea.highlighter.AbstractDiagnosticMessageTest
|
||||||
|
import org.jetbrains.kotlin.idea.highlighter.AbstractHighlightingTest
|
||||||
|
import org.jetbrains.kotlin.idea.imports.AbstractOptimizeImportsTest
|
||||||
|
import org.jetbrains.kotlin.idea.intentions.AbstractIntentionTest
|
||||||
|
import org.jetbrains.kotlin.idea.intentions.declarations.AbstractJoinLinesTest
|
||||||
import org.jetbrains.kotlin.idea.kdoc.AbstractKDocHighlightingTest
|
import org.jetbrains.kotlin.idea.kdoc.AbstractKDocHighlightingTest
|
||||||
import org.jetbrains.kotlin.addImport.AbstractAddImportTest
|
import org.jetbrains.kotlin.idea.navigation.AbstractGotoSuperTest
|
||||||
import org.jetbrains.kotlin.idea.highlighter.*
|
import org.jetbrains.kotlin.idea.navigation.AbstractKotlinGotoTest
|
||||||
import org.jetbrains.kotlin.android.AbstractAndroidCompletionTest
|
import org.jetbrains.kotlin.idea.parameterInfo.AbstractFunctionParameterInfoTest
|
||||||
import org.jetbrains.kotlin.android.AbstractAndroidGotoTest
|
import org.jetbrains.kotlin.idea.quickfix.AbstractQuickFixMultiFileTest
|
||||||
|
import org.jetbrains.kotlin.idea.quickfix.AbstractQuickFixTest
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.inline.AbstractInlineTest
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.introduce.AbstractJetExtractionTest
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.move.AbstractJetMoveTest
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.rename.AbstractRenameTest
|
||||||
|
import org.jetbrains.kotlin.idea.resolve.*
|
||||||
|
import org.jetbrains.kotlin.idea.structureView.AbstractKotlinFileStructureTest
|
||||||
|
import org.jetbrains.kotlin.idea.stubs.AbstractMultiFileHighlightingTest
|
||||||
|
import org.jetbrains.kotlin.idea.stubs.AbstractResolveByStubTest
|
||||||
|
import org.jetbrains.kotlin.idea.stubs.AbstractStubBuilderTest
|
||||||
|
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterForWebDemoTest
|
||||||
|
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterMultiFileTest
|
||||||
|
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterSingleFileTest
|
||||||
|
import org.jetbrains.kotlin.jps.build.AbstractIncrementalJpsTest
|
||||||
import org.jetbrains.kotlin.jps.build.android.AbstractAndroidJpsTestCase
|
import org.jetbrains.kotlin.jps.build.android.AbstractAndroidJpsTestCase
|
||||||
import org.jetbrains.kotlin.android.AbstractAndroidRenameTest
|
import org.jetbrains.kotlin.js.test.semantics.*
|
||||||
import org.jetbrains.kotlin.android.AbstractAndroidFindUsagesTest
|
import org.jetbrains.kotlin.jvm.compiler.AbstractCompileJavaAgainstKotlinTest
|
||||||
|
import org.jetbrains.kotlin.jvm.compiler.AbstractCompileKotlinAgainstKotlinTest
|
||||||
|
import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaTest
|
||||||
|
import org.jetbrains.kotlin.jvm.compiler.AbstractWriteSignatureTest
|
||||||
|
import org.jetbrains.kotlin.lang.resolve.android.test.AbstractAndroidBoxTest
|
||||||
import org.jetbrains.kotlin.lang.resolve.android.test.AbstractAndroidBytecodeShapeTest
|
import org.jetbrains.kotlin.lang.resolve.android.test.AbstractAndroidBytecodeShapeTest
|
||||||
import org.jetbrains.kotlin.lang.resolve.android.test.AbstractAndroidXml2KConversionTest
|
import org.jetbrains.kotlin.lang.resolve.android.test.AbstractAndroidXml2KConversionTest
|
||||||
import org.jetbrains.kotlin.lang.resolve.android.test.AbstractAndroidBoxTest
|
import org.jetbrains.kotlin.load.java.AbstractJavaTypeSubstitutorTest
|
||||||
import org.jetbrains.kotlin.android.AbstractParserResultEqualityTest
|
import org.jetbrains.kotlin.modules.xml.AbstractModuleXmlParserTest
|
||||||
import org.jetbrains.kotlin.js.test.*
|
import org.jetbrains.kotlin.parsing.AbstractJetParsingTest
|
||||||
import org.jetbrains.kotlin.js.test.semantics.*
|
import org.jetbrains.kotlin.psi.patternMatching.AbstractJetPsiUnifierTest
|
||||||
|
import org.jetbrains.kotlin.renderer.AbstractDescriptorRendererTest
|
||||||
|
import org.jetbrains.kotlin.repl.AbstractReplInterpreterTest
|
||||||
|
import org.jetbrains.kotlin.resolve.AbstractResolveTest
|
||||||
|
import org.jetbrains.kotlin.resolve.annotation.AbstractAnnotationParameterTest
|
||||||
|
import org.jetbrains.kotlin.resolve.calls.AbstractResolvedCallsTest
|
||||||
|
import org.jetbrains.kotlin.resolve.constants.evaluate.AbstractEvaluateExpressionTest
|
||||||
|
import org.jetbrains.kotlin.resolve.constraintSystem.AbstractConstraintSystemTest
|
||||||
|
import org.jetbrains.kotlin.safeDelete.AbstractJetSafeDeleteTest
|
||||||
|
import org.jetbrains.kotlin.serialization.AbstractLocalClassProtoTest
|
||||||
|
import org.jetbrains.kotlin.shortenRefs.AbstractShortenRefsTest
|
||||||
|
import org.jetbrains.kotlin.types.AbstractJetTypeBindingTest
|
||||||
|
import java.io.File
|
||||||
|
import java.util.ArrayList
|
||||||
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
System.setProperty("java.awt.headless", "true")
|
System.setProperty("java.awt.headless", "true")
|
||||||
@@ -862,15 +828,23 @@ private class TestGroup(val testsRoot: String, val testDataRoot: String) {
|
|||||||
testMethod: String = "doTest",
|
testMethod: String = "doTest",
|
||||||
singleClass: Boolean = false,
|
singleClass: Boolean = false,
|
||||||
testClassName: String? = null,
|
testClassName: String? = null,
|
||||||
targetBackend: TargetBackend = TargetBackend.ANY
|
targetBackend: TargetBackend = TargetBackend.ANY,
|
||||||
|
excludeDirs: List<String> = listOf()
|
||||||
) {
|
) {
|
||||||
val rootFile = File(testDataRoot + "/" + relativeRootPath)
|
val rootFile = File(testDataRoot + "/" + relativeRootPath)
|
||||||
val compiledPattern = Pattern.compile(pattern)
|
val compiledPattern = Pattern.compile(pattern)
|
||||||
val className = testClassName ?: TestGeneratorUtil.fileNameToJavaIdentifier(rootFile)
|
val className = testClassName ?: TestGeneratorUtil.fileNameToJavaIdentifier(rootFile)
|
||||||
testModels.add(if (singleClass)
|
testModels.add(
|
||||||
SingleClassTestModel(rootFile, compiledPattern, testMethod, className, targetBackend)
|
if (singleClass) {
|
||||||
else
|
if (excludeDirs.isNotEmpty()) error("excludeDirs is unsupported for SingleClassTestModel yet")
|
||||||
SimpleTestClassModel(rootFile, recursive, excludeParentDirs, compiledPattern, testMethod, className, targetBackend))
|
SingleClassTestModel(rootFile, compiledPattern, testMethod, className, targetBackend)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SimpleTestClassModel(
|
||||||
|
rootFile, recursive, excludeParentDirs, compiledPattern, testMethod, className, targetBackend, excludeDirs
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+35
-15
@@ -26,10 +26,7 @@ import org.jetbrains.kotlin.test.JetTestUtils;
|
|||||||
import org.jetbrains.kotlin.utils.Printer;
|
import org.jetbrains.kotlin.utils.Printer;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Collection;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static org.jetbrains.kotlin.generators.tests.generator.TestGenerator.TargetBackend;
|
import static org.jetbrains.kotlin.generators.tests.generator.TestGenerator.TargetBackend;
|
||||||
@@ -53,6 +50,8 @@ public class SimpleTestClassModel implements TestClassModel {
|
|||||||
private final String testClassName;
|
private final String testClassName;
|
||||||
@NotNull
|
@NotNull
|
||||||
private final TargetBackend targetBackend;
|
private final TargetBackend targetBackend;
|
||||||
|
@NotNull
|
||||||
|
private final Set<String> excludeDirs;
|
||||||
@Nullable
|
@Nullable
|
||||||
private Collection<TestClassModel> innerTestClasses;
|
private Collection<TestClassModel> innerTestClasses;
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -65,7 +64,8 @@ public class SimpleTestClassModel implements TestClassModel {
|
|||||||
@NotNull Pattern filenamePattern,
|
@NotNull Pattern filenamePattern,
|
||||||
@NotNull String doTestMethodName,
|
@NotNull String doTestMethodName,
|
||||||
@NotNull String testClassName,
|
@NotNull String testClassName,
|
||||||
@NotNull TargetBackend targetBackend
|
@NotNull TargetBackend targetBackend,
|
||||||
|
@NotNull Collection<String> excludeDirs
|
||||||
) {
|
) {
|
||||||
this.rootFile = rootFile;
|
this.rootFile = rootFile;
|
||||||
this.recursive = recursive;
|
this.recursive = recursive;
|
||||||
@@ -74,6 +74,7 @@ public class SimpleTestClassModel implements TestClassModel {
|
|||||||
this.doTestMethodName = doTestMethodName;
|
this.doTestMethodName = doTestMethodName;
|
||||||
this.testClassName = testClassName;
|
this.testClassName = testClassName;
|
||||||
this.targetBackend = targetBackend;
|
this.targetBackend = targetBackend;
|
||||||
|
this.excludeDirs = excludeDirs.isEmpty() ? Collections.<String>emptySet() : new LinkedHashSet<String>(excludeDirs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -88,12 +89,10 @@ public class SimpleTestClassModel implements TestClassModel {
|
|||||||
File[] files = rootFile.listFiles();
|
File[] files = rootFile.listFiles();
|
||||||
if (files != null) {
|
if (files != null) {
|
||||||
for (File file : files) {
|
for (File file : files) {
|
||||||
if (file.isDirectory()) {
|
if (file.isDirectory() && dirHasFilesInside(file) && !excludeDirs.contains(file.getName())) {
|
||||||
if (dirHasFilesInside(file)) {
|
String innerTestClassName = TestGeneratorUtil.fileNameToJavaIdentifier(file);
|
||||||
String innerTestClassName = TestGeneratorUtil.fileNameToJavaIdentifier(file);
|
children.add(new SimpleTestClassModel(file, true, excludeParentDirs, filenamePattern, doTestMethodName,
|
||||||
children.add(new SimpleTestClassModel(file, true, excludeParentDirs, filenamePattern, doTestMethodName, innerTestClassName,
|
innerTestClassName, targetBackend, excludesStripOneDirectory(file.getName())));
|
||||||
targetBackend));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -103,6 +102,21 @@ public class SimpleTestClassModel implements TestClassModel {
|
|||||||
return innerTestClasses;
|
return innerTestClasses;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private Set<String> excludesStripOneDirectory(@NotNull String directoryName) {
|
||||||
|
if (excludeDirs.isEmpty()) return excludeDirs;
|
||||||
|
|
||||||
|
Set<String> result = new LinkedHashSet<String>();
|
||||||
|
for (String excludeDir : excludeDirs) {
|
||||||
|
int firstSlash = excludeDir.indexOf('/');
|
||||||
|
if (firstSlash >= 0 && excludeDir.substring(0, firstSlash).equals(directoryName)) {
|
||||||
|
result.add(excludeDir.substring(firstSlash + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean dirHasFilesInside(@NotNull File dir) {
|
private static boolean dirHasFilesInside(@NotNull File dir) {
|
||||||
return !FileUtil.processFilesRecursively(dir, new Processor<File>() {
|
return !FileUtil.processFilesRecursively(dir, new Processor<File>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -181,7 +195,6 @@ public class SimpleTestClassModel implements TestClassModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class TestAllFilesPresentMethodModel implements TestMethodModel {
|
private class TestAllFilesPresentMethodModel implements TestMethodModel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "testAllFilesPresentIn" + testClassName;
|
return "testAllFilesPresentIn" + testClassName;
|
||||||
@@ -189,9 +202,16 @@ public class SimpleTestClassModel implements TestClassModel {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generateBody(@NotNull Printer p) {
|
public void generateBody(@NotNull Printer p) {
|
||||||
String assertTestsPresentStr =
|
StringBuilder exclude = new StringBuilder();
|
||||||
String.format("JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s);",
|
for (String dir : excludeDirs) {
|
||||||
JetTestUtils.getFilePath(rootFile), StringUtil.escapeStringCharacters(filenamePattern.pattern()), recursive);
|
exclude.append(", \"");
|
||||||
|
exclude.append(StringUtil.escapeStringCharacters(dir));
|
||||||
|
exclude.append("\"");
|
||||||
|
}
|
||||||
|
String assertTestsPresentStr = String.format(
|
||||||
|
"JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s%s);",
|
||||||
|
JetTestUtils.getFilePath(rootFile), StringUtil.escapeStringCharacters(filenamePattern.pattern()), recursive, exclude
|
||||||
|
);
|
||||||
p.println(assertTestsPresentStr);
|
p.println(assertTestsPresentStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user