[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()
|
||||
)
|
||||
|
||||
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(
|
||||
"""
|
||||
Usage: // TARGET_FRONTEND: {Frontend}
|
||||
|
||||
+7
-1
@@ -100,6 +100,8 @@ class ModuleStructureExtractorImpl(
|
||||
private var linesOfCurrentFile = mutableListOf<String>()
|
||||
private var endLineNumberOfLastFile = -1
|
||||
|
||||
private var allowFilesWithSameNames = false
|
||||
|
||||
private var directivesBuilder = RegisteredDirectivesParser(directivesContainer, assertions)
|
||||
private var moduleDirectivesBuilder: RegisteredDirectivesParser = directivesBuilder
|
||||
private var fileDirectivesBuilder: RegisteredDirectivesParser? = null
|
||||
@@ -218,6 +220,9 @@ class ModuleStructureExtractorImpl(
|
||||
}
|
||||
currentFileName = (values.first() as String).also(::validateFileName)
|
||||
}
|
||||
ModuleStructureDirectives.ALLOW_FILES_WITH_SAME_NAMES -> {
|
||||
allowFilesWithSameNames = true
|
||||
}
|
||||
ModuleStructureDirectives.TARGET_PLATFORM -> {
|
||||
if (currentModuleTargetPlatform != null) {
|
||||
assertions.fail { "Target platform already specified twice for module $currentModuleName" }
|
||||
@@ -367,7 +372,7 @@ class ModuleStructureExtractorImpl(
|
||||
"module_${currentModuleName}_$defaultFileName"
|
||||
}
|
||||
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}")
|
||||
}
|
||||
val directives = fileDirectivesBuilder?.build()?.also { directives ->
|
||||
@@ -419,6 +424,7 @@ class ModuleStructureExtractorImpl(
|
||||
moduleDirectivesBuilder = directivesBuilder
|
||||
}
|
||||
currentFileName = null
|
||||
allowFilesWithSameNames = false
|
||||
resetDirectivesBuilder()
|
||||
fileDirectivesBuilder = directivesBuilder
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user