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 File testDataDir,
|
||||
@NotNull Pattern filenamePattern,
|
||||
boolean recursive
|
||||
boolean recursive,
|
||||
@NotNull String... excludeDirs
|
||||
) {
|
||||
TestMetadata testClassMetadata = testCaseClass.getAnnotation(TestMetadata.class);
|
||||
Assert.assertNotNull("No metadata for class: " + testCaseClass, testClassMetadata);
|
||||
@@ -739,12 +740,13 @@ public class JetTestUtils {
|
||||
File rootFile = new File(rootPath);
|
||||
|
||||
Set<String> filePaths = collectPathsMetadata(testCaseClass);
|
||||
Set<String> exclude = KotlinPackage.setOf(excludeDirs);
|
||||
|
||||
File[] files = testDataDir.listFiles();
|
||||
if (files != null) {
|
||||
for (File file : files) {
|
||||
if (file.isDirectory()) {
|
||||
if (recursive && containsTestData(file, filenamePattern)) {
|
||||
if (recursive && containsTestData(file, filenamePattern) && !exclude.contains(file.getName())) {
|
||||
assertTestClassPresentByMetadata(testCaseClass, file);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,139 +16,105 @@
|
||||
|
||||
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 org.jetbrains.kotlin.checkers.AbstractJetDiagnosticsTest
|
||||
import org.jetbrains.kotlin.resolve.AbstractResolveTest
|
||||
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.addImport.AbstractAddImportTest
|
||||
import org.jetbrains.kotlin.android.*
|
||||
import org.jetbrains.kotlin.asJava.AbstractKotlinLightClassTest
|
||||
import org.jetbrains.kotlin.load.java.AbstractJavaTypeSubstitutorTest
|
||||
import org.jetbrains.kotlin.idea.intentions.declarations.AbstractJoinLinesTest
|
||||
import org.jetbrains.kotlin.codegen.AbstractScriptCodegenTest
|
||||
import org.jetbrains.kotlin.idea.parameterInfo.AbstractFunctionParameterInfoTest
|
||||
import org.jetbrains.kotlin.psi.patternMatching.AbstractJetPsiUnifierTest
|
||||
import org.jetbrains.kotlin.cfg.AbstractControlFlowTest
|
||||
import org.jetbrains.kotlin.cfg.AbstractDataFlowTest
|
||||
import org.jetbrains.kotlin.cfg.AbstractPseudoValueTest
|
||||
import org.jetbrains.kotlin.checkers.*
|
||||
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.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.idea.resolve.AbstractReferenceResolveInJavaTest
|
||||
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterMultiFileTest
|
||||
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterForWebDemoTest
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.AbstractDecompiledTextTest
|
||||
import org.jetbrains.kotlin.completion.AbstractMultiFileSmartCompletionTest
|
||||
import org.jetbrains.kotlin.completion.handlers.AbstractCompletionCharFilterTest
|
||||
import org.jetbrains.kotlin.serialization.AbstractLocalClassProtoTest
|
||||
import org.jetbrains.kotlin.idea.resolve.AbstractPartialBodyResolveTest
|
||||
import org.jetbrains.kotlin.checkers.AbstractJetDiagnosticsTestWithJsStdLib
|
||||
import org.jetbrains.kotlin.renderer.AbstractDescriptorRendererTest
|
||||
import org.jetbrains.kotlin.types.AbstractJetTypeBindingTest
|
||||
import org.jetbrains.kotlin.idea.debugger.evaluate.AbstractCodeFragmentCompletionHandlerTest
|
||||
import org.jetbrains.kotlin.idea.AbstractExpressionSelectionTest
|
||||
import org.jetbrains.kotlin.idea.AbstractSmartSelectionTest
|
||||
import org.jetbrains.kotlin.idea.codeInsight.AbstractInsertImportOnPasteTest
|
||||
import org.jetbrains.kotlin.idea.codeInsight.AbstractJetInspectionTest
|
||||
import org.jetbrains.kotlin.idea.codeInsight.AbstractLineMarkersTest
|
||||
import org.jetbrains.kotlin.idea.codeInsight.AbstractOutOfBlockModificationTest
|
||||
import org.jetbrains.kotlin.idea.codeInsight.moveUpDown.AbstractCodeMoverTest
|
||||
import org.jetbrains.kotlin.idea.codeInsight.surroundWith.AbstractSurroundWithTest
|
||||
import org.jetbrains.kotlin.idea.codeInsight.unwrap.AbstractUnwrapRemoveTest
|
||||
import org.jetbrains.kotlin.idea.configuration.AbstractConfigureProjectByChangingFileTest
|
||||
import org.jetbrains.kotlin.idea.conversion.copy.AbstractJavaToKotlinCopyPasteConversionTest
|
||||
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.codegen.AbstractLineNumberTest
|
||||
import org.jetbrains.kotlin.completion.handlers.AbstractKeywordCompletionHandlerTest
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.AbstractDecompiledTextTest
|
||||
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.addImport.AbstractAddImportTest
|
||||
import org.jetbrains.kotlin.idea.highlighter.*
|
||||
import org.jetbrains.kotlin.android.AbstractAndroidCompletionTest
|
||||
import org.jetbrains.kotlin.android.AbstractAndroidGotoTest
|
||||
import org.jetbrains.kotlin.idea.navigation.AbstractGotoSuperTest
|
||||
import org.jetbrains.kotlin.idea.navigation.AbstractKotlinGotoTest
|
||||
import org.jetbrains.kotlin.idea.parameterInfo.AbstractFunctionParameterInfoTest
|
||||
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.android.AbstractAndroidRenameTest
|
||||
import org.jetbrains.kotlin.android.AbstractAndroidFindUsagesTest
|
||||
import org.jetbrains.kotlin.js.test.semantics.*
|
||||
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.AbstractAndroidXml2KConversionTest
|
||||
import org.jetbrains.kotlin.lang.resolve.android.test.AbstractAndroidBoxTest
|
||||
import org.jetbrains.kotlin.android.AbstractParserResultEqualityTest
|
||||
import org.jetbrains.kotlin.js.test.*
|
||||
import org.jetbrains.kotlin.js.test.semantics.*
|
||||
import org.jetbrains.kotlin.load.java.AbstractJavaTypeSubstitutorTest
|
||||
import org.jetbrains.kotlin.modules.xml.AbstractModuleXmlParserTest
|
||||
import org.jetbrains.kotlin.parsing.AbstractJetParsingTest
|
||||
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>) {
|
||||
System.setProperty("java.awt.headless", "true")
|
||||
@@ -862,15 +828,23 @@ private class TestGroup(val testsRoot: String, val testDataRoot: String) {
|
||||
testMethod: String = "doTest",
|
||||
singleClass: Boolean = false,
|
||||
testClassName: String? = null,
|
||||
targetBackend: TargetBackend = TargetBackend.ANY
|
||||
targetBackend: TargetBackend = TargetBackend.ANY,
|
||||
excludeDirs: List<String> = listOf()
|
||||
) {
|
||||
val rootFile = File(testDataRoot + "/" + relativeRootPath)
|
||||
val compiledPattern = Pattern.compile(pattern)
|
||||
val className = testClassName ?: TestGeneratorUtil.fileNameToJavaIdentifier(rootFile)
|
||||
testModels.add(if (singleClass)
|
||||
SingleClassTestModel(rootFile, compiledPattern, testMethod, className, targetBackend)
|
||||
else
|
||||
SimpleTestClassModel(rootFile, recursive, excludeParentDirs, compiledPattern, testMethod, className, targetBackend))
|
||||
testModels.add(
|
||||
if (singleClass) {
|
||||
if (excludeDirs.isNotEmpty()) error("excludeDirs is unsupported for SingleClassTestModel yet")
|
||||
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 java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static org.jetbrains.kotlin.generators.tests.generator.TestGenerator.TargetBackend;
|
||||
@@ -53,6 +50,8 @@ public class SimpleTestClassModel implements TestClassModel {
|
||||
private final String testClassName;
|
||||
@NotNull
|
||||
private final TargetBackend targetBackend;
|
||||
@NotNull
|
||||
private final Set<String> excludeDirs;
|
||||
@Nullable
|
||||
private Collection<TestClassModel> innerTestClasses;
|
||||
@Nullable
|
||||
@@ -65,7 +64,8 @@ public class SimpleTestClassModel implements TestClassModel {
|
||||
@NotNull Pattern filenamePattern,
|
||||
@NotNull String doTestMethodName,
|
||||
@NotNull String testClassName,
|
||||
@NotNull TargetBackend targetBackend
|
||||
@NotNull TargetBackend targetBackend,
|
||||
@NotNull Collection<String> excludeDirs
|
||||
) {
|
||||
this.rootFile = rootFile;
|
||||
this.recursive = recursive;
|
||||
@@ -74,6 +74,7 @@ public class SimpleTestClassModel implements TestClassModel {
|
||||
this.doTestMethodName = doTestMethodName;
|
||||
this.testClassName = testClassName;
|
||||
this.targetBackend = targetBackend;
|
||||
this.excludeDirs = excludeDirs.isEmpty() ? Collections.<String>emptySet() : new LinkedHashSet<String>(excludeDirs);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -88,12 +89,10 @@ public class SimpleTestClassModel implements TestClassModel {
|
||||
File[] files = rootFile.listFiles();
|
||||
if (files != null) {
|
||||
for (File file : files) {
|
||||
if (file.isDirectory()) {
|
||||
if (dirHasFilesInside(file)) {
|
||||
String innerTestClassName = TestGeneratorUtil.fileNameToJavaIdentifier(file);
|
||||
children.add(new SimpleTestClassModel(file, true, excludeParentDirs, filenamePattern, doTestMethodName, innerTestClassName,
|
||||
targetBackend));
|
||||
}
|
||||
if (file.isDirectory() && dirHasFilesInside(file) && !excludeDirs.contains(file.getName())) {
|
||||
String innerTestClassName = TestGeneratorUtil.fileNameToJavaIdentifier(file);
|
||||
children.add(new SimpleTestClassModel(file, true, excludeParentDirs, filenamePattern, doTestMethodName,
|
||||
innerTestClassName, targetBackend, excludesStripOneDirectory(file.getName())));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,6 +102,21 @@ public class SimpleTestClassModel implements TestClassModel {
|
||||
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) {
|
||||
return !FileUtil.processFilesRecursively(dir, new Processor<File>() {
|
||||
@Override
|
||||
@@ -181,7 +195,6 @@ public class SimpleTestClassModel implements TestClassModel {
|
||||
}
|
||||
|
||||
private class TestAllFilesPresentMethodModel implements TestMethodModel {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "testAllFilesPresentIn" + testClassName;
|
||||
@@ -189,9 +202,16 @@ public class SimpleTestClassModel implements TestClassModel {
|
||||
|
||||
@Override
|
||||
public void generateBody(@NotNull Printer p) {
|
||||
String assertTestsPresentStr =
|
||||
String.format("JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s);",
|
||||
JetTestUtils.getFilePath(rootFile), StringUtil.escapeStringCharacters(filenamePattern.pattern()), recursive);
|
||||
StringBuilder exclude = new StringBuilder();
|
||||
for (String dir : excludeDirs) {
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user