diff options
Diffstat (limited to 'utils/describe-unexpected')
-rw-r--r-- | utils/describe-unexpected/describe-unexpected.hs | 25 |
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] |