From 9d6b3f446c3440416dc1379b622ca940cc044c2e Mon Sep 17 00:00:00 2001 From: Roman Vasiliev Date: Fri, 11 Oct 2024 10:39:31 +0200 Subject: [PATCH] [evaluation-plugin] LME-66 Change dataset structure GitOrigin-RevId: 8d791d7dfa0ab612f57a91b2841ea5aee5735302 --- .../conflictResolution/ConflictEnvironment.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/plugins/evaluation-plugin/src/com/intellij/cce/evaluable/conflictResolution/ConflictEnvironment.kt b/plugins/evaluation-plugin/src/com/intellij/cce/evaluable/conflictResolution/ConflictEnvironment.kt index 84bcf8ad9844..d73d96c55af5 100644 --- a/plugins/evaluation-plugin/src/com/intellij/cce/evaluable/conflictResolution/ConflictEnvironment.kt +++ b/plugins/evaluation-plugin/src/com/intellij/cce/evaluable/conflictResolution/ConflictEnvironment.kt @@ -10,6 +10,7 @@ import com.intellij.cce.interpreter.InterpretationHandler import com.intellij.cce.interpreter.InterpretationOrder import java.nio.file.Path import kotlin.io.path.listDirectoryEntries +import kotlin.io.path.name import kotlin.io.path.readText class ConflictEnvironment( @@ -20,19 +21,19 @@ class ConflictEnvironment( override val preparationDescription: String = "Checking that conflict dataset exists" override fun sessionCount(datasetContext: DatasetContext): Int = - datasetContext.path(datasetRef).listDirectoryEntries().size // FIXME should be pre-calculated + datasetContext.path(datasetRef).conflicts().sumOf { it.conflictCount } override fun chunks(datasetContext: DatasetContext): Iterator { - return datasetContext.path(datasetRef).listDirectoryEntries().map { conflictPath -> + return datasetContext.path(datasetRef).conflicts().map { conflictPath -> ConflictChunk(conflictPath) }.iterator() } private inner class ConflictChunk( - private val conflictPath: Path, + private val fileConflict: FileConflict, ) : EvaluationChunk { + override val name: String = "${fileConflict.hash} - ${fileConflict.fileName}" override val datasetName: String = datasetRef.name - override val name: String = conflictPath.fileName.toString() override val presentationText: String = readText("result") override fun evaluate( @@ -109,7 +110,7 @@ class ConflictEnvironment( } private fun readText(namePrefix: String): String = - conflictPath.listDirectoryEntries().first { it.fileName.toString().startsWith(namePrefix) }.readText() + fileConflict.path.listDirectoryEntries().first { it.fileName.toString().startsWith(namePrefix) }.readText() private fun contextPresentation(conflicts: MatchSequence<*>, conflictIndex: Int) = """ <<<<<<< BASE @@ -121,5 +122,16 @@ ${conflicts.text(TextLabel.PARENT_2, conflictIndex).trimEnd()} >>>>>>> """.trim() } + + private fun Path.conflicts() = listDirectoryEntries() + .flatMap { repoDir -> + repoDir.listDirectoryEntries().map { + val (hash, conflictCount, fileName) = it.name.split(" - ") + FileConflict(hash, fileName, conflictCount.toInt(), it) + } + } + .sortedBy { "${it.hash} ${it.fileName}" } + + private data class FileConflict(val hash: String, val fileName: String, val conflictCount: Int, val path: Path) }