pg-store-0.0.1: tests/Main.hs
module Main (main) where
import Test.Hspec
import Control.Monad
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import Database.PostgreSQL.Store.ColumnsSpec
import Database.PostgreSQL.Store.TableSpec
import Database.PostgreSQL.Store.QuerySpec
import qualified Database.PostgreSQL.LibPQ as P
import System.Environment
-- | Test which will only be executed if 'PGINFO' environment variable is set
liveTests :: String -> Spec
liveTests pgInfo = do
(con, status) <- runIO $ do
con <- P.connectdb (T.encodeUtf8 (T.pack pgInfo))
status <- P.status con
pure (con, status)
describe "Database connection" $
it "must be established" $
status `shouldBe` P.ConnectionOk
when (status == P.ConnectionOk) (afterAll_ (P.finish con) (tableSpec con))
-- | Test entry point
main :: IO ()
main = hspec $ do
columnsSpec
querySpec
mbPGInfo <- runIO (lookupEnv "PGINFO")
case mbPGInfo of
Just pgInfo -> liveTests pgInfo
Nothing -> runIO (putStrLn "Environment variable 'PGINFO' is missing")