Unregistered bunch directives and files test

This commit is contained in:
Darya Razumova
2019-08-30 12:18:22 +03:00
committed by Nikolay Krasko
parent 412c562572
commit 5fc6fa8619
3 changed files with 42 additions and 13 deletions
@@ -26,6 +26,8 @@ class CodeConformanceTest : TestCase() {
companion object {
private val JAVA_FILE_PATTERN = Pattern.compile(".+\\.java")
private val SOURCES_FILE_PATTERN = Pattern.compile("(.+\\.java|.+\\.kt|.+\\.js)")
private val SOURCES_BUNCH_FILE_PATTERN = Pattern.compile("(.+\\.java|.+\\.kt|.+\\.js)(\\.\\w+)?")
private const val MAX_STEPS_COUNT = 100
private val EXCLUDED_FILES_AND_DIRS = listOf(
"android.tests.dependencies",
"buildSrc",
@@ -97,6 +99,46 @@ class CodeConformanceTest : TestCase() {
}
}
private fun isCorrectExtension(filename: String, extensions: Set<String>): Boolean {
val additionalExtensions = listOf(
"after", "new", "before", "expected",
"todo", "delete", "touch", "prefix", "postfix", "map",
"fragment", "after2", "result", "log", "messages", "conflicts", "match", "imports", "txt", "xml"
)
val possibleAdditionalExtensions = extensions.plus(additionalExtensions)
val fileExtensions = filename.split("\\.").drop(1)
if (fileExtensions.size < 2) {
return true
}
val extension = fileExtensions.last()
return !(extension !in possibleAdditionalExtensions && extension.toIntOrNull() ?: MAX_STEPS_COUNT >= MAX_STEPS_COUNT)
}
fun testForgottenBunchDirectivesAndFiles() {
val root = File("").absoluteFile
val extensions = File(root, ".bunch").readLines().map { it.split("_") }.flatten().toSet()
val failBuilder = mutableListOf<String>()
for (sourceFile in FileUtil.findFilesByMask(SOURCES_BUNCH_FILE_PATTERN, root)) {
if (EXCLUDED_FILES_AND_DIRS.any { FileUtil.isAncestor(it, sourceFile, false) }) continue
val matches = Regex("BUNCH: (\\w+)").findAll(sourceFile.readText())
.map { it.groupValues[1] }.toSet().filterNot { it in extensions }
for (bunch in matches) {
val filename = FileUtil.toSystemIndependentName(sourceFile.absoluteFile.toRelativeString(root))
failBuilder.add("$filename has unregistered $bunch bunch directive")
}
if (!isCorrectExtension(sourceFile.name, extensions)) {
val filename = FileUtil.toSystemIndependentName(sourceFile.absoluteFile.toRelativeString(root))
failBuilder.add("$filename has unknown bunch extension")
}
}
if (failBuilder.isNotEmpty()) {
fail("\n" + failBuilder.joinToString("\n"))
}
}
fun testNoBadSubstringsInProjectCode() {
class TestData(val message: String, val filter: (String) -> Boolean) {
val result: MutableList<File> = ArrayList()