snap-server-0.3.0: test/suite/TestSuite.hs
{-# LANGUAGE CPP #-}
module Main where
import Control.Exception
import Control.Concurrent (killThread)
import Control.Concurrent.MVar
import Control.Monad
import qualified Network.HTTP.Enumerator as HTTP
import Test.Framework (defaultMain, testGroup)
import Snap.Http.Server.Config
import qualified Data.Concurrent.HashMap.Tests
import qualified Snap.Internal.Http.Parser.Tests
import qualified Snap.Internal.Http.Server.Tests
import qualified Test.Blackbox
ports :: [Int]
ports = [8195..]
#ifdef GNUTLS
sslports :: [Maybe Int]
sslports = map Just [8295..]
#else
sslports :: [Maybe Int]
sslports = repeat Nothing
#endif
#ifdef LIBEV
backends :: [(Int,Maybe Int,ConfigBackend)]
backends = zip3 ports sslports [ConfigSimpleBackend, ConfigLibEvBackend]
#else
backends :: [(Int,Maybe Int,ConfigBackend)]
backends = zip3 ports sslports [ConfigSimpleBackend]
#endif
main :: IO ()
main = HTTP.withHttpEnumerator $ do
tinfos <- forM backends $ \(port,sslport,b) ->
Test.Blackbox.startTestServer port sslport b
defaultMain (tests ++ concatMap blackbox backends) `finally` do
mapM_ killThread $ map fst tinfos
mapM_ takeMVar $ map snd tinfos
where tests =
[ testGroup "Data.Concurrent.HashMap.Tests"
Data.Concurrent.HashMap.Tests.tests
, testGroup "Snap.Internal.Http.Parser.Tests"
Snap.Internal.Http.Parser.Tests.tests
, testGroup "Snap.Internal.Http.Server.Tests"
Snap.Internal.Http.Server.Tests.tests
]
blackbox (port, sslport, b) =
[ testGroup ("Test.Blackbox " ++ backendName)
$ Test.Blackbox.tests port backendName
, testGroup ("Test.Blackbox SSL " ++ backendName)
$ Test.Blackbox.ssltests backendName sslport
]
where
backendName = show b