diff --git a/ci/TestPatches.hs b/ci/TestPatches.hs
index b0890b2a65b45f9c0096847cf1970c9c1b06e72e..191f7c5dd1de7ab97151d2eb7baa9cdd371676fa 100644
--- a/ci/TestPatches.hs
+++ b/ci/TestPatches.hs
@@ -122,11 +122,18 @@ testPatches cfg = do
 
   print $ resultSummary (configExpectedBrokenPkgs cfg) runResult
   BSL.writeFile "results.json" $ encode runResult
-  exitWith $ if anyFailures (configExpectedBrokenPkgs cfg) runResult then ExitFailure 1 else ExitSuccess
-
-anyFailures :: BrokenPackages -> RunResult -> Bool
-anyFailures broken (RunResult testedPatches) =
-    any failed testedPatches
+  case failedPatches (configExpectedBrokenPkgs cfg) runResult of
+    [] -> return ()
+    badPatches -> do
+      print $ "Failed due to unexpected failures in:" PP.<$$> PP.indent 2 (
+        vcat [ prettyPkgVer (patchedPackageName tp) (patchedPackageVersion tp)
+             | tp <- badPatches
+             ])
+      exitWith $ ExitFailure 1
+
+failedPatches :: BrokenPackages -> RunResult -> [TestedPatch]
+failedPatches broken (RunResult testedPatches) =
+    filter failed testedPatches
   where
     failed tp =
       patchFailed tp /= failureExpected broken (patchedPackageName tp)