[Test] Align lines in TestFile with lines in real testdata file
This commit is contained in:
+11
-1
@@ -60,16 +60,26 @@ class GlobalMetadataInfoHandler(
|
|||||||
if (file.isAdditional) continue
|
if (file.isAdditional) continue
|
||||||
processors.forEach { it.processMetaInfos(module, file) }
|
processors.forEach { it.processMetaInfos(module, file) }
|
||||||
val codeMetaInfos = infosPerFile.getValue(file)
|
val codeMetaInfos = infosPerFile.getValue(file)
|
||||||
|
val fileBuilder = StringBuilder()
|
||||||
CodeMetaInfoRenderer.renderTagsToText(
|
CodeMetaInfoRenderer.renderTagsToText(
|
||||||
builder,
|
fileBuilder,
|
||||||
codeMetaInfos,
|
codeMetaInfos,
|
||||||
testServices.sourceFileProvider.getContentOfSourceFile(file)
|
testServices.sourceFileProvider.getContentOfSourceFile(file)
|
||||||
)
|
)
|
||||||
|
builder.append(fileBuilder.stripAdditionalEmptyLines(file))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val actualText = builder.toString()
|
val actualText = builder.toString()
|
||||||
testServices.assertions.assertEqualsToFile(moduleStructure.originalTestDataFiles.single(), actualText)
|
testServices.assertions.assertEqualsToFile(moduleStructure.originalTestDataFiles.single(), actualText)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun StringBuilder.stripAdditionalEmptyLines(file: TestFile): CharSequence {
|
||||||
|
return if (file.startLineNumberInOriginalFile != 0) {
|
||||||
|
this.removePrefix((1..file.startLineNumberInOriginalFile).joinToString(separator = "") { "\n" })
|
||||||
|
} else {
|
||||||
|
this.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val TestServices.globalMetadataInfoHandler: GlobalMetadataInfoHandler by TestServices.testServiceAccessor()
|
val TestServices.globalMetadataInfoHandler: GlobalMetadataInfoHandler by TestServices.testServiceAccessor()
|
||||||
|
|||||||
+17
-11
@@ -97,7 +97,7 @@ class ModuleStructureExtractorImpl(
|
|||||||
private var currentFileName: String? = null
|
private var currentFileName: String? = null
|
||||||
private var firstFileInModule: Boolean = true
|
private var firstFileInModule: Boolean = true
|
||||||
private var linesOfCurrentFile = mutableListOf<String>()
|
private var linesOfCurrentFile = mutableListOf<String>()
|
||||||
private var startLineNumberOfCurrentFile = 0
|
private var endLineNumberOfLastFile = -1
|
||||||
|
|
||||||
private var directivesBuilder = RegisteredDirectivesParser(directivesContainer, assertions)
|
private var directivesBuilder = RegisteredDirectivesParser(directivesContainer, assertions)
|
||||||
private var moduleDirectivesBuilder: RegisteredDirectivesParser = directivesBuilder
|
private var moduleDirectivesBuilder: RegisteredDirectivesParser = directivesBuilder
|
||||||
@@ -123,7 +123,7 @@ class ModuleStructureExtractorImpl(
|
|||||||
linesOfCurrentFile.add(line)
|
linesOfCurrentFile.add(line)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finishModule()
|
finishModule(lineNumber = -1)
|
||||||
val sortedModules = sortModules(modules)
|
val sortedModules = sortModules(modules)
|
||||||
checkCycles(modules)
|
checkCycles(modules)
|
||||||
return TestModuleStructureImpl(sortedModules, testDataFiles)
|
return TestModuleStructureImpl(sortedModules, testDataFiles)
|
||||||
@@ -170,7 +170,7 @@ class ModuleStructureExtractorImpl(
|
|||||||
* There was previous module, so we should save it
|
* There was previous module, so we should save it
|
||||||
*/
|
*/
|
||||||
if (currentModuleName != null) {
|
if (currentModuleName != null) {
|
||||||
finishModule()
|
finishModule(lineNumber)
|
||||||
} else {
|
} else {
|
||||||
finishGlobalDirectives()
|
finishGlobalDirectives()
|
||||||
}
|
}
|
||||||
@@ -213,12 +213,11 @@ class ModuleStructureExtractorImpl(
|
|||||||
}
|
}
|
||||||
ModuleStructureDirectives.FILE -> {
|
ModuleStructureDirectives.FILE -> {
|
||||||
if (currentFileName != null) {
|
if (currentFileName != null) {
|
||||||
finishFile()
|
finishFile(lineNumber)
|
||||||
} else {
|
} else {
|
||||||
resetFileCaches()
|
resetFileCaches()
|
||||||
}
|
}
|
||||||
currentFileName = (values.first() as String).also(::validateFileName)
|
currentFileName = (values.first() as String).also(::validateFileName)
|
||||||
startLineNumberOfCurrentFile = lineNumber
|
|
||||||
}
|
}
|
||||||
else -> return false
|
else -> return false
|
||||||
}
|
}
|
||||||
@@ -275,8 +274,8 @@ class ModuleStructureExtractorImpl(
|
|||||||
error("Directive $this has $applicability applicability but it declared in $context")
|
error("Directive $this has $applicability applicability but it declared in $context")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun finishModule() {
|
private fun finishModule(lineNumber: Int) {
|
||||||
finishFile()
|
finishFile(lineNumber)
|
||||||
val isImplicitModule = currentModuleName == null
|
val isImplicitModule = currentModuleName == null
|
||||||
val moduleDirectives = moduleDirectivesBuilder.build() + testServices.defaultDirectives + globalDirectives
|
val moduleDirectives = moduleDirectivesBuilder.build() + testServices.defaultDirectives + globalDirectives
|
||||||
moduleDirectives.forEach { it.checkDirectiveApplicability(contextIsGlobal = isImplicitModule, contextIsModule = true) }
|
moduleDirectives.forEach { it.checkDirectiveApplicability(contextIsGlobal = isImplicitModule, contextIsModule = true) }
|
||||||
@@ -323,7 +322,8 @@ class ModuleStructureExtractorImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun finishFile() {
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
|
private fun finishFile(lineNumber: Int) {
|
||||||
val actualDefaultFileName = if (currentModuleName == null) {
|
val actualDefaultFileName = if (currentModuleName == null) {
|
||||||
defaultFileName
|
defaultFileName
|
||||||
} else {
|
} else {
|
||||||
@@ -336,17 +336,24 @@ class ModuleStructureExtractorImpl(
|
|||||||
val directives = fileDirectivesBuilder?.build()?.also { directives ->
|
val directives = fileDirectivesBuilder?.build()?.also { directives ->
|
||||||
directives.forEach { it.checkDirectiveApplicability(contextIsFile = true) }
|
directives.forEach { it.checkDirectiveApplicability(contextIsFile = true) }
|
||||||
}
|
}
|
||||||
|
val fileContent = buildString {
|
||||||
|
for (i in 0 until endLineNumberOfLastFile) {
|
||||||
|
appendLine()
|
||||||
|
}
|
||||||
|
appendLine(linesOfCurrentFile.joinToString("\n"))
|
||||||
|
}
|
||||||
filesOfCurrentModule.add(
|
filesOfCurrentModule.add(
|
||||||
TestFile(
|
TestFile(
|
||||||
relativePath = filename,
|
relativePath = filename,
|
||||||
originalContent = linesOfCurrentFile.joinToString(separator = "\n", postfix = "\n"),
|
originalContent = fileContent,
|
||||||
originalFile = currentTestDataFile,
|
originalFile = currentTestDataFile,
|
||||||
startLineNumberInOriginalFile = startLineNumberOfCurrentFile,
|
startLineNumberInOriginalFile = endLineNumberOfLastFile,
|
||||||
isAdditional = false,
|
isAdditional = false,
|
||||||
directives = directives ?: RegisteredDirectives.Empty
|
directives = directives ?: RegisteredDirectives.Empty
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
firstFileInModule = false
|
firstFileInModule = false
|
||||||
|
endLineNumberOfLastFile = lineNumber - 1
|
||||||
resetFileCaches()
|
resetFileCaches()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -376,7 +383,6 @@ class ModuleStructureExtractorImpl(
|
|||||||
moduleDirectivesBuilder = directivesBuilder
|
moduleDirectivesBuilder = directivesBuilder
|
||||||
}
|
}
|
||||||
currentFileName = null
|
currentFileName = null
|
||||||
startLineNumberOfCurrentFile = 0
|
|
||||||
resetDirectivesBuilder()
|
resetDirectivesBuilder()
|
||||||
fileDirectivesBuilder = directivesBuilder
|
fileDirectivesBuilder = directivesBuilder
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user