[test] Allow files with same names in tests
Introduce a directive that allows compiling different files with matching names in tests.
This commit is contained in:
committed by
Space Team
parent
ee9d9d7b32
commit
672be7ecb5
+6
@@ -39,6 +39,12 @@ object ModuleStructureDirectives : SimpleDirectivesContainer() {
|
|||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val ALLOW_FILES_WITH_SAME_NAMES by directive(
|
||||||
|
"""
|
||||||
|
Allows specifying test files with the same names using the // FILE directive.
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
|
|
||||||
val TARGET_FRONTEND by stringDirective(
|
val TARGET_FRONTEND by stringDirective(
|
||||||
"""
|
"""
|
||||||
Usage: // TARGET_FRONTEND: {Frontend}
|
Usage: // TARGET_FRONTEND: {Frontend}
|
||||||
|
|||||||
+7
-1
@@ -100,6 +100,8 @@ class ModuleStructureExtractorImpl(
|
|||||||
private var linesOfCurrentFile = mutableListOf<String>()
|
private var linesOfCurrentFile = mutableListOf<String>()
|
||||||
private var endLineNumberOfLastFile = -1
|
private var endLineNumberOfLastFile = -1
|
||||||
|
|
||||||
|
private var allowFilesWithSameNames = false
|
||||||
|
|
||||||
private var directivesBuilder = RegisteredDirectivesParser(directivesContainer, assertions)
|
private var directivesBuilder = RegisteredDirectivesParser(directivesContainer, assertions)
|
||||||
private var moduleDirectivesBuilder: RegisteredDirectivesParser = directivesBuilder
|
private var moduleDirectivesBuilder: RegisteredDirectivesParser = directivesBuilder
|
||||||
private var fileDirectivesBuilder: RegisteredDirectivesParser? = null
|
private var fileDirectivesBuilder: RegisteredDirectivesParser? = null
|
||||||
@@ -218,6 +220,9 @@ class ModuleStructureExtractorImpl(
|
|||||||
}
|
}
|
||||||
currentFileName = (values.first() as String).also(::validateFileName)
|
currentFileName = (values.first() as String).also(::validateFileName)
|
||||||
}
|
}
|
||||||
|
ModuleStructureDirectives.ALLOW_FILES_WITH_SAME_NAMES -> {
|
||||||
|
allowFilesWithSameNames = true
|
||||||
|
}
|
||||||
ModuleStructureDirectives.TARGET_PLATFORM -> {
|
ModuleStructureDirectives.TARGET_PLATFORM -> {
|
||||||
if (currentModuleTargetPlatform != null) {
|
if (currentModuleTargetPlatform != null) {
|
||||||
assertions.fail { "Target platform already specified twice for module $currentModuleName" }
|
assertions.fail { "Target platform already specified twice for module $currentModuleName" }
|
||||||
@@ -367,7 +372,7 @@ class ModuleStructureExtractorImpl(
|
|||||||
"module_${currentModuleName}_$defaultFileName"
|
"module_${currentModuleName}_$defaultFileName"
|
||||||
}
|
}
|
||||||
val filename = currentFileName ?: actualDefaultFileName
|
val filename = currentFileName ?: actualDefaultFileName
|
||||||
if (filesOfCurrentModule.any { it.name == filename }) {
|
if (!allowFilesWithSameNames && filesOfCurrentModule.any { it.name == filename }) {
|
||||||
error("File with name \"$filename\" already defined in module ${currentModuleName ?: actualDefaultFileName}")
|
error("File with name \"$filename\" already defined in module ${currentModuleName ?: actualDefaultFileName}")
|
||||||
}
|
}
|
||||||
val directives = fileDirectivesBuilder?.build()?.also { directives ->
|
val directives = fileDirectivesBuilder?.build()?.also { directives ->
|
||||||
@@ -419,6 +424,7 @@ class ModuleStructureExtractorImpl(
|
|||||||
moduleDirectivesBuilder = directivesBuilder
|
moduleDirectivesBuilder = directivesBuilder
|
||||||
}
|
}
|
||||||
currentFileName = null
|
currentFileName = null
|
||||||
|
allowFilesWithSameNames = false
|
||||||
resetDirectivesBuilder()
|
resetDirectivesBuilder()
|
||||||
fileDirectivesBuilder = directivesBuilder
|
fileDirectivesBuilder = directivesBuilder
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user