[Test gen] Reduce string copying

This commit is contained in:
Kirill Rakhman
2024-02-26 18:07:00 +01:00
committed by Space Team
parent 7ca6624af4
commit cba65d7186
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.generators.model.SimpleTestClassModel
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.util.KtTestUtil import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.Printer
import org.jetbrains.kotlin.utils.addToStdlib.runIf import java.util.regex.Pattern
object SimpleTestClassModelTestAllFilesPresentMethodGenerator : MethodGenerator<SimpleTestClassModel.TestAllFilesPresentMethodModel>() { object SimpleTestClassModelTestAllFilesPresentMethodGenerator : MethodGenerator<SimpleTestClassModel.TestAllFilesPresentMethodModel>() {
override val kind: MethodModel.Kind override val kind: MethodModel.Kind
@@ -30,27 +30,54 @@ object SimpleTestClassModelTestAllFilesPresentMethodGenerator : MethodGenerator<
exclude.append(StringUtil.escapeStringCharacters(dir)) exclude.append(StringUtil.escapeStringCharacters(dir))
exclude.append("\"") exclude.append("\"")
} }
val excludedArgument = runIf(classModel.excludePattern != null) { val excludePattern = classModel.excludePattern
String.format("Pattern.compile(\"%s\")", StringUtil.escapeStringCharacters(classModel.excludePattern!!.pattern())) if (classModel.targetBackend === TargetBackend.ANY) {
} p.print(
val assertTestsPresentStr = if (classModel.targetBackend === TargetBackend.ANY) { "KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File(\"",
String.format(
"KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s, %s%s);",
KtTestUtil.getFilePath(classModel.rootFile), KtTestUtil.getFilePath(classModel.rootFile),
"\"), Pattern.compile(\"",
StringUtil.escapeStringCharacters(classModel.filenamePattern.pattern()), StringUtil.escapeStringCharacters(classModel.filenamePattern.pattern()),
excludedArgument, "\"), ",
)
p.printExcludePattern(excludePattern)
p.printlnWithNoIndent(
", ",
classModel.recursive, classModel.recursive,
exclude exclude,
");"
) )
} else { } else {
String.format( p.print(
"KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s, %s.%s, %s%s);", "KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File(\"",
KtTestUtil.getFilePath(classModel.rootFile), KtTestUtil.getFilePath(classModel.rootFile),
"\"), Pattern.compile(\"",
StringUtil.escapeStringCharacters(classModel.filenamePattern.pattern()), StringUtil.escapeStringCharacters(classModel.filenamePattern.pattern()),
excludedArgument, TargetBackend::class.java.simpleName, classModel.targetBackend.toString(), classModel.recursive, exclude "\"), ",
)
p.printExcludePattern(excludePattern)
p.printlnWithNoIndent(
", ",
TargetBackend::class.java.simpleName,
".",
classModel.targetBackend.toString(),
", ",
classModel.recursive,
exclude,
");"
) )
} }
p.println(assertTestsPresentStr) }
}
private fun Printer.printExcludePattern(excludePattern: Pattern?) {
if (excludePattern != null) {
printWithNoIndent(
"Pattern.compile(\"",
StringUtil.escapeStringCharacters(excludePattern.pattern()),
"\")"
)
} else {
printWithNoIndent("null")
} }
} }
} }