From b2a503ccad3a22c2666262e7451e2ee8b610eda0 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 3 Jul 2008 13:40:03 +0000 Subject: [PATCH] Add a program for describing unexpected tests in testlog This goes through the testlog and spits out any sections that contain "unexpected". --- utils/describe-unexpected/describe-unexpected.hs | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 utils/describe-unexpected/describe-unexpected.hs diff --git a/utils/describe-unexpected/describe-unexpected.hs b/utils/describe-unexpected/describe-unexpected.hs new file mode 100644 index 0000000..bf92e9f --- /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] -- 1.7.10.4