-- | Main test suite. module Main where import qualified Control.Exception as E import Control.Monad import Documentation.Haddock.Docs import System.Exit import System.IO -- | Main entry point. main :: IO () main = do hSetBuffering stdout NoBuffering spec -- | Test suite. spec :: IO () spec = do describe "initialization" initialization describe "docs" docs describe "types" types -- | Test GHC initialization. initialization :: IO () initialization = do it "withInitializedPackages" (withInitializedPackages [] (\dflags -> return ())) -- | Test GHC docs. docs :: IO () docs = do it "printDocumentation" (withInitializedPackages [] (\d -> void (printDocumentation d "hSetBuffering" (mkModuleName "System.IO") Nothing Nothing))) -- | Test GHC types. types :: IO () types = do it "getType" (withInitializedPackages [] (\d -> do void (printDocumentation d "hSetBuffering" (mkModuleName "System.IO") Nothing Nothing) void (getType d (mkModuleName "System.IO") "hSetBuffering"))) -- | Describe a test spec. describe :: String -> IO () -> IO () describe name m = do putStrLn ("Spec: " ++ name) m -- | A test. it :: String -> IO () -> IO () it name m = do putStr ("Testing: " ++ name) E.catch m (\E.SomeException{} -> do putStrLn ("\nFailed: " ++ name) exitFailure) putStrLn "OK."