Add possibility to compute additional files for IgnoreTests
It is more flexible then just passing additional prefixes, since in some cases test data have some weird naming conventions
This commit is contained in:
+31
-13
@@ -27,7 +27,7 @@ object IgnoreTests {
|
|||||||
testFile,
|
testFile,
|
||||||
EnableOrDisableTestDirective.Enable(enableTestDirective),
|
EnableOrDisableTestDirective.Enable(enableTestDirective),
|
||||||
directivePosition,
|
directivePosition,
|
||||||
additionalFilesExtensions.toList(),
|
computeAdditionalFilesByExtensions(testFile, additionalFilesExtensions.asList()),
|
||||||
test
|
test
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -41,7 +41,7 @@ object IgnoreTests {
|
|||||||
testFile,
|
testFile,
|
||||||
EnableOrDisableTestDirective.Disable(DIRECTIVES.FIX_ME),
|
EnableOrDisableTestDirective.Disable(DIRECTIVES.FIX_ME),
|
||||||
directivePosition,
|
directivePosition,
|
||||||
additionalFilesExtensions = emptyList(),
|
additionalFiles = emptyList(),
|
||||||
test = test
|
test = test
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -52,12 +52,28 @@ object IgnoreTests {
|
|||||||
vararg additionalFilesExtensions: String,
|
vararg additionalFilesExtensions: String,
|
||||||
directivePosition: DirectivePosition = DirectivePosition.FIRST_LINE_IN_FILE,
|
directivePosition: DirectivePosition = DirectivePosition.FIRST_LINE_IN_FILE,
|
||||||
test: () -> Unit
|
test: () -> Unit
|
||||||
|
) {
|
||||||
|
runTestIfNotDisabledByFileDirective(
|
||||||
|
testFile,
|
||||||
|
disableTestDirective,
|
||||||
|
{ mainTestFile -> computeAdditionalFilesByExtensions(mainTestFile, additionalFilesExtensions.asList()) },
|
||||||
|
directivePosition,
|
||||||
|
test
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun runTestIfNotDisabledByFileDirective(
|
||||||
|
testFile: Path,
|
||||||
|
disableTestDirective: String,
|
||||||
|
computeAdditionalFiles: (mainTestFile: Path) -> List<Path>,
|
||||||
|
directivePosition: DirectivePosition = DirectivePosition.FIRST_LINE_IN_FILE,
|
||||||
|
test: () -> Unit
|
||||||
) {
|
) {
|
||||||
runTestIfEnabledByDirective(
|
runTestIfEnabledByDirective(
|
||||||
testFile,
|
testFile,
|
||||||
EnableOrDisableTestDirective.Disable(disableTestDirective),
|
EnableOrDisableTestDirective.Disable(disableTestDirective),
|
||||||
directivePosition,
|
directivePosition,
|
||||||
additionalFilesExtensions.toList(),
|
computeAdditionalFiles(testFile),
|
||||||
test
|
test
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -66,7 +82,7 @@ object IgnoreTests {
|
|||||||
testFile: Path,
|
testFile: Path,
|
||||||
directive: EnableOrDisableTestDirective,
|
directive: EnableOrDisableTestDirective,
|
||||||
directivePosition: DirectivePosition,
|
directivePosition: DirectivePosition,
|
||||||
additionalFilesExtensions: List<String>,
|
additionalFiles: List<Path>,
|
||||||
test: () -> Unit
|
test: () -> Unit
|
||||||
) {
|
) {
|
||||||
if (ALWAYS_CONSIDER_TEST_AS_PASSING) {
|
if (ALWAYS_CONSIDER_TEST_AS_PASSING) {
|
||||||
@@ -81,7 +97,7 @@ object IgnoreTests {
|
|||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
if (testIsEnabled) {
|
if (testIsEnabled) {
|
||||||
if (directive is EnableOrDisableTestDirective.Disable) {
|
if (directive is EnableOrDisableTestDirective.Disable) {
|
||||||
handleTestWithWrongDirective(testFile, directive, directivePosition, additionalFilesExtensions)
|
handleTestWithWrongDirective(testFile, directive, directivePosition, additionalFiles)
|
||||||
}
|
}
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
@@ -89,7 +105,7 @@ object IgnoreTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!testIsEnabled) {
|
if (!testIsEnabled) {
|
||||||
handleTestWithWrongDirective(testFile, directive, directivePosition, additionalFilesExtensions)
|
handleTestWithWrongDirective(testFile, directive, directivePosition, additionalFiles)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,17 +115,17 @@ object IgnoreTests {
|
|||||||
testFile: Path,
|
testFile: Path,
|
||||||
directive: EnableOrDisableTestDirective,
|
directive: EnableOrDisableTestDirective,
|
||||||
directivePosition: DirectivePosition,
|
directivePosition: DirectivePosition,
|
||||||
additionalFilesExtensions: List<String>,
|
additionalFiles: List<Path>,
|
||||||
) {
|
) {
|
||||||
val verb = when (directive) {
|
val verb = when (directive) {
|
||||||
is EnableOrDisableTestDirective.Disable -> "do not pass"
|
is EnableOrDisableTestDirective.Disable -> "do not pass"
|
||||||
is EnableOrDisableTestDirective.Enable -> "passes"
|
is EnableOrDisableTestDirective.Enable -> "passes"
|
||||||
}
|
}
|
||||||
if (INSERT_DIRECTIVE_AUTOMATICALLY) {
|
if (INSERT_DIRECTIVE_AUTOMATICALLY) {
|
||||||
testFile.insertDirectivesToFileAndAdditionalFile(directive, additionalFilesExtensions, directivePosition)
|
testFile.insertDirectivesToFileAndAdditionalFile(directive, additionalFiles, directivePosition)
|
||||||
val filesWithDirectiveAdded = buildList {
|
val filesWithDirectiveAdded = buildList {
|
||||||
add(testFile.fileName.toString())
|
add(testFile.fileName.toString())
|
||||||
additionalFilesExtensions.mapTo(this) { extension -> testFile.getSiblingFile(extension) }
|
addAll(additionalFiles)
|
||||||
}
|
}
|
||||||
throw AssertionError(
|
throw AssertionError(
|
||||||
"Looks like the test $verb, ${directive.directiveText} was added to the ${filesWithDirectiveAdded.joinToString()}"
|
"Looks like the test $verb, ${directive.directiveText} was added to the ${filesWithDirectiveAdded.joinToString()}"
|
||||||
@@ -122,15 +138,17 @@ object IgnoreTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun computeAdditionalFilesByExtensions(mainTestFile: Path, additionalFilesExtensions: List<String>): List<Path> {
|
||||||
|
return additionalFilesExtensions.mapNotNull { mainTestFile.getSiblingFile(it) }
|
||||||
|
}
|
||||||
|
|
||||||
private fun Path.insertDirectivesToFileAndAdditionalFile(
|
private fun Path.insertDirectivesToFileAndAdditionalFile(
|
||||||
directive: EnableOrDisableTestDirective,
|
directive: EnableOrDisableTestDirective,
|
||||||
additionalFilesExtensions: List<String>,
|
additionalFiles: List<Path>,
|
||||||
directivePosition: DirectivePosition,
|
directivePosition: DirectivePosition,
|
||||||
) {
|
) {
|
||||||
insertDirective(directive, directivePosition)
|
insertDirective(directive, directivePosition)
|
||||||
additionalFilesExtensions.forEach { extension ->
|
additionalFiles.forEach { it.insertDirective(directive, directivePosition) }
|
||||||
getSiblingFile(extension)?.insertDirective(directive, directivePosition)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Path.getSiblingFile(extension: String): Path? {
|
private fun Path.getSiblingFile(extension: String): Path? {
|
||||||
|
|||||||
Reference in New Issue
Block a user