From 57caca4b0e3da930d8de8ffb8e8b4d1cb2c4ac99 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Sun, 14 Jul 2019 20:38:48 +0300 Subject: [PATCH] Improve exception message for directories comparison in tests It was unclear what dirs were compared (e.g when rebuilding and comparing caches dirs, it's not obvious which dir is "expected" and which is "actual"). To improve this, compare resulting strings with the placeholder for a root dir first. If the comparison fails, then replace the placeholder with an actual directory and call assertEquals. --- .../testingUtils/classFilesComparison.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/build-common/test/org/jetbrains/kotlin/incremental/testingUtils/classFilesComparison.kt b/build-common/test/org/jetbrains/kotlin/incremental/testingUtils/classFilesComparison.kt index b46ae6b522d..237c037691e 100644 --- a/build-common/test/org/jetbrains/kotlin/incremental/testingUtils/classFilesComparison.kt +++ b/build-common/test/org/jetbrains/kotlin/incremental/testingUtils/classFilesComparison.kt @@ -36,6 +36,7 @@ import org.jetbrains.org.objectweb.asm.ClassReader import org.jetbrains.org.objectweb.asm.util.TraceClassVisitor import org.junit.Assert import org.junit.Assert.assertNotNull +import org.junit.ComparisonFailure import java.io.* import java.util.* import java.util.zip.CRC32 @@ -71,7 +72,15 @@ fun assertEqualDirectories(expected: File, actual: File, forgiveExtraFiles: Bool } } - Assert.assertEquals(expectedString, actualString) + if (expectedString != actualString) { + val message: String? = null + throw ComparisonFailure( + message, + expectedString.replaceFirst(DIR_ROOT_PLACEHOLDER, expected.canonicalPath), + actualString.replaceFirst(DIR_ROOT_PLACEHOLDER, actual.canonicalPath) + ) + } + } private fun File.checksumString(): String { @@ -80,6 +89,8 @@ private fun File.checksumString(): String { return java.lang.Long.toHexString(crc32.value) } +private const val DIR_ROOT_PLACEHOLDER = "" + private fun getDirectoryString(dir: File, interestingPaths: List): String { val buf = StringBuilder() val p = Printer(buf) @@ -108,7 +119,7 @@ private fun getDirectoryString(dir: File, interestingPaths: List): Strin } - p.println(".") + p.println(DIR_ROOT_PLACEHOLDER) addDirContent(dir) for (path in interestingPaths) {