Add a program for describing unexpected tests in testlog
authorIan Lynagh <igloo@earth.li>
Thu, 3 Jul 2008 13:40:03 +0000 (13:40 +0000)
committerIan Lynagh <igloo@earth.li>
Thu, 3 Jul 2008 13:40:03 +0000 (13:40 +0000)
This goes through the testlog and spits out any sections that contain
"unexpected".

utils/describe-unexpected/describe-unexpected.hs [new file with mode: 0644]

diff --git a/utils/describe-unexpected/describe-unexpected.hs b/utils/describe-unexpected/describe-unexpected.hs
new file mode 100644 (file)
index 0000000..bf92e9f
--- /dev/null
@@ -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]