[TEST] Support module step directives in TestModel parser

This commit is contained in:
Roman Artemev
2021-12-13 17:14:50 +03:00
committed by teamcity
parent e47871f98b
commit 5ba6ca4c16
@@ -38,11 +38,23 @@ class ModuleInfo(val moduleName: String) {
abstract fun execute(testDirectory: File, sourceDirectory: File)
}
class ModuleStep(val id: Int, val dependencies: Collection<String>, val dirtyFiles: Collection<String>, val modifications: List<Modification>)
class ModuleStep(
val id: Int,
val dependencies: Collection<String>,
val dirtyFiles: Collection<String>,
val modifications: List<Modification>,
val directives: Set<StepDirectives>
)
val steps = mutableListOf<ModuleStep>()
}
enum class StepDirectives(val mnemonic: String) {
FAST_PATH_UPDATE("FP")
}
const val MODULES_LIST = "MODULES"
const val PROJECT_INFO_FILE = "project.info"
const val MODULE_INFO_FILE = "module.info"
@@ -183,10 +195,18 @@ class ModuleInfoParser(infoFile: File) : InfoParser<ModuleInfo>(infoFile) {
return modifications
}
private fun MutableSet<StepDirectives>.parseStepFlags(flags: String) {
val tokens = flags.trim().split(" ").map { it.trim() }
for (directive in StepDirectives.values()) {
if (directive.mnemonic in tokens) add(directive)
}
}
private fun parseStep(stepId: Int): ModuleInfo.ModuleStep {
val dependencies = mutableSetOf<String>()
val dirtyFiles = mutableSetOf<String>()
val modifications = mutableListOf<ModuleInfo.Modification>()
val directives = mutableSetOf<StepDirectives>()
loop { line ->
if (line.matches(STEP_PATTERN.toRegex()))
@@ -201,12 +221,13 @@ class ModuleInfoParser(infoFile: File) : InfoParser<ModuleInfo>(infoFile) {
"dependencies" -> line.substring(opIndex + 1).split(",").filter { it.isNotBlank() }.forEach { dependencies.add(it.trim()) }
"dirty" -> line.substring(opIndex + 1).split(",").filter { it.isNotBlank() }.forEach { dirtyFiles.add(it.trim()) }
"modifications" -> modifications.addAll(parseModifications())
"flags" -> directives.parseStepFlags(line.substring(opIndex + 1))
else -> println(diagnosticMessage("Unknown op $op", line))
}
false
}
return ModuleInfo.ModuleStep(stepId, dependencies, dirtyFiles, modifications)
return ModuleInfo.ModuleStep(stepId, dependencies, dirtyFiles, modifications, directives)
}
override fun parse(entryName: String): ModuleInfo {