summaryrefslogtreecommitdiff
path: root/utils/describe-unexpected
diff options
context:
space:
mode:
Diffstat (limited to 'utils/describe-unexpected')
-rw-r--r--utils/describe-unexpected/describe-unexpected.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/utils/describe-unexpected/describe-unexpected.hs b/utils/describe-unexpected/describe-unexpected.hs
new file mode 100644
index 0000000000..bf92e9f99b
--- /dev/null
+++ b/utils/describe-unexpected/describe-unexpected.hs
@@ -0,0 +1,25 @@
+
+module Main (main) where
+
+import Data.List
+
+main :: IO ()
+main = do xs <- readFile "testlog"
+ let ls = lines xs
+ tests = breakTests ls
+ unexpectedTests = filter (any ("unexpected" `isInfixOf`)) tests
+ putStr $ unlines $ concat unexpectedTests
+
+breakTests :: [String] -> [[String]]
+breakTests xs = splitStarting ("=====> " `isPrefixOf`)
+ -- Ignore lines telling us that we're running a .T file:
+ $ filter (not . ("====> Running " `isPrefixOf`)) xs
+
+splitStarting :: (a -> Bool) -> [a] -> [[a]]
+splitStarting f xs0 = case break f xs0 of
+ (_, intro : xs) -> ss intro xs
+ _ -> error "No data"
+ where ss intro xs = case break f xs of
+ (this, intro' : rest) ->
+ (intro : this) : ss intro' rest
+ (this, []) -> [intro : this]