[Commonizer] Ignore acceptable (minor) metadata mismatches in tests

This commit is contained in:
Dmitriy Dolovov
2021-01-31 23:06:33 +03:00
parent a4438ad64f
commit 9c4af5070b
@@ -9,6 +9,7 @@ import kotlinx.metadata.klib.KlibModuleMetadata
import org.jetbrains.kotlin.descriptors.commonizer.CommonizerResult
import org.jetbrains.kotlin.descriptors.commonizer.CommonizerTarget
import org.jetbrains.kotlin.descriptors.commonizer.metadata.utils.MetadataDeclarationsComparator
import org.jetbrains.kotlin.descriptors.commonizer.metadata.utils.MetadataDeclarationsComparator.Mismatch
import org.jetbrains.kotlin.descriptors.commonizer.metadata.utils.MetadataDeclarationsComparator.Result
import org.jetbrains.kotlin.descriptors.commonizer.metadata.utils.SerializedMetadataLibraryProvider
import org.jetbrains.kotlin.library.SerializedMetadata
@@ -40,7 +41,12 @@ fun assertModulesAreEqual(reference: SerializedMetadata, generated: SerializedMe
when (val result = MetadataDeclarationsComparator().compare(referenceModule, generatedModule)) {
is Result.Success -> Unit
is Result.Failure -> {
val mismatches = result.mismatches.sortedBy { it::class.java.simpleName + "_" + it.kind }
val mismatches = result.mismatches
.filter(FILTER_OUR_ACCEPTABLE_MISMATCHES)
.sortedBy { it::class.java.simpleName + "_" + it.kind }
if (mismatches.isEmpty()) return
val digitCount = mismatches.size.toString().length
val failureMessage = buildString {
@@ -54,3 +60,10 @@ fun assertModulesAreEqual(reference: SerializedMetadata, generated: SerializedMe
}
}
}
private val FILTER_OUR_ACCEPTABLE_MISMATCHES: (Mismatch) -> Boolean = { mismatch ->
when (mismatch) {
is Mismatch.MissingEntity -> mismatch.kind == "AbbreviationType" && mismatch.missingInA
is Mismatch.DifferentValues -> false
}
}