Allow to use mutations from several files

This commit is contained in:
Nikolay Krasko
2019-10-25 18:10:40 +03:00
parent 620898c73e
commit 8d50aea471
@@ -32,16 +32,20 @@ private class MutedSet(muted: List<MutedTest>) {
fun mutedTest(testCase: TestCase): MutedTest? { fun mutedTest(testCase: TestCase): MutedTest? {
val mutedTests = cache[testCase.name]?.get(testCase.javaClass.simpleName) ?: return null val mutedTests = cache[testCase.name]?.get(testCase.javaClass.simpleName) ?: return null
return mutedTests.singleOrNull { mutedTest -> return mutedTests.firstOrNull { mutedTest ->
testCase.javaClass.canonicalName.endsWith(mutedTest.classNameKey) testCase.javaClass.canonicalName.endsWith(mutedTest.classNameKey)
} }
} }
} }
private fun loadMutedSet(file: File): MutedSet { private fun loadMutedSet(files: List<File>): MutedSet {
return MutedSet(files.flatMap { file -> loadMutedTests(file) })
}
private fun loadMutedTests(file: File): List<MutedTest> {
if (!file.exists()) { if (!file.exists()) {
System.err.println("Can't find mute file: ${file.absolutePath}") System.err.println("Can't find mute file: ${file.absolutePath}")
return MutedSet(listOf()) return listOf()
} }
try { try {
@@ -51,9 +55,7 @@ private fun loadMutedSet(file: File): MutedSet {
.filter { it.isNotEmpty() } .filter { it.isNotEmpty() }
.toList() .toList()
val mutedTests = testLines.drop(1).map { parseMutedTest(it) } return testLines.drop(1).map { parseMutedTest(it) }
return MutedSet(mutedTests)
} catch (ex: Throwable) { } catch (ex: Throwable) {
throw ParseError("Couldn't parse file with muted tests: $file", cause = ex) throw ParseError("Couldn't parse file with muted tests: $file", cause = ex)
} }
@@ -77,7 +79,13 @@ private fun parseMutedTest(str: String): MutedTest {
private class ParseError(message: String, override val cause: Throwable? = null) : IllegalArgumentException(message) private class ParseError(message: String, override val cause: Throwable? = null) : IllegalArgumentException(message)
private val mutedSet by lazy { loadMutedSet(File("tests/mute.csv")) } private val mutedSet by lazy {
loadMutedSet(
listOf(
File("tests/mute.csv")
)
)
}
internal fun isMutedInDatabase(testCase: TestCase): Boolean { internal fun isMutedInDatabase(testCase: TestCase): Boolean {
val mutedTest = mutedSet.mutedTest(testCase) val mutedTest = mutedSet.mutedTest(testCase)