@@ -18,6 +18,40 @@ class E2ETest {
1818
1919 private fun CommandLine.execute (args : List <String >) = execute(* args.toTypedArray())
2020
21+ private fun assertTargetsMatch (actual : Set <String >, expected : Set <String >, testContext : String = "") {
22+ if (actual != expected) {
23+ val missingTargets = expected - actual
24+ val unexpectedTargets = actual - expected
25+
26+ val debugMessage = buildString {
27+ appendLine(" \n ========================================" )
28+ appendLine(" Target list mismatch${if (testContext.isNotEmpty()) " in $testContext " else " " } " )
29+ appendLine(" ========================================" )
30+
31+ if (missingTargets.isNotEmpty()) {
32+ appendLine(" \n MISSING TARGETS (expected but not found):" )
33+ missingTargets.sorted().forEach { appendLine(" - $it " ) }
34+ }
35+
36+ if (unexpectedTargets.isNotEmpty()) {
37+ appendLine(" \n UNEXPECTED TARGETS (found but not expected):" )
38+ unexpectedTargets.sorted().forEach { appendLine(" + $it " ) }
39+ }
40+
41+ appendLine(" \n EXPECTED (${expected.size} targets):" )
42+ expected.sorted().forEach { appendLine(" $it " ) }
43+
44+ appendLine(" \n ACTUAL (${actual.size} targets):" )
45+ actual.sorted().forEach { appendLine(" $it " ) }
46+ appendLine(" ========================================" )
47+ }
48+
49+ println (debugMessage)
50+ }
51+
52+ assertThat(actual).isEqualTo(expected)
53+ }
54+
2155 private fun testE2E (
2256 extraGenerateHashesArgs : List <String >,
2357 extraGetImpactedTargetsArgs : List <String >,
@@ -70,7 +104,7 @@ class E2ETest {
70104 it.bufferedReader().readLines().filter { it.isNotBlank() }.toSet()
71105 }
72106
73- assertThat (actual).isEqualTo( expected)
107+ assertTargetsMatch (actual, expected, " testE2E " )
74108 }
75109
76110 @Test
@@ -167,7 +201,7 @@ class E2ETest {
167201 " /fixture/fine-grained-hash-external-repo-test-impacted-targets.txt" )
168202 .use { it.bufferedReader().readLines().filter { it.isNotBlank() }.toSet() }
169203
170- assertThat (actual).isEqualTo( expected)
204+ assertTargetsMatch (actual, expected, " testFineGrainedHashExternalRepo " )
171205 }
172206
173207 private fun testFineGrainedHashBzlMod (
@@ -247,7 +281,7 @@ class E2ETest {
247281 it.bufferedReader().readLines().filter { it.isNotBlank() }.toSet()
248282 }
249283
250- assertThat (actual).isEqualTo( expected)
284+ assertTargetsMatch (actual, expected, " testFineGrainedHashBzlMod " )
251285 }
252286
253287 @Test
@@ -376,7 +410,7 @@ class E2ETest {
376410 .getResourceAsStream(" /fixture/cquery-test-guava-upgrade-android-impacted-targets.txt" )
377411 .use { it.bufferedReader().readLines().filter { it.isNotBlank() }.toSet() }
378412
379- assertThat (actual).isEqualTo( expected)
413+ assertTargetsMatch (actual, expected, " testUseCqueryWithExternalDependencyChange - Android platform " )
380414
381415 // Query JRE platform
382416
@@ -422,7 +456,7 @@ class E2ETest {
422456 .getResourceAsStream(" /fixture/cquery-test-guava-upgrade-jre-impacted-targets.txt" )
423457 .use { it.bufferedReader().readLines().filter { it.isNotBlank() }.toSet() }
424458
425- assertThat (actual).isEqualTo( expected)
459+ assertTargetsMatch (actual, expected, " testUseCqueryWithExternalDependencyChange - JRE platform " )
426460 }
427461
428462 @Test
@@ -537,7 +571,7 @@ class E2ETest {
537571 " /fixture/cquery-test-android-code-change-android-impacted-targets.txt" )
538572 .use { it.bufferedReader().readLines().filter { it.isNotBlank() }.toSet() }
539573
540- assertThat (actual).isEqualTo( expected)
574+ assertTargetsMatch (actual, expected, " testUseCqueryWithAndroidCodeChange - Android platform " )
541575
542576 // Query JRE platform
543577
@@ -584,7 +618,7 @@ class E2ETest {
584618 " /fixture/cquery-test-android-code-change-jre-impacted-targets.txt" )
585619 .use { it.bufferedReader().readLines().filter { it.isNotBlank() }.toSet() }
586620
587- assertThat (actual).isEqualTo( expected)
621+ assertTargetsMatch (actual, expected, " testUseCqueryWithAndroidCodeChange - JRE platform " )
588622 }
589623
590624 @Test
0 commit comments