{-# LANGUAGE OverloadedStrings #-} module Main where import Control.Exception import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as ByteString import Database.PostgreSQL.Simple import qualified Database.YeshQL.PostgreSQL.Tests as Tests import System.Environment import System.Exit import System.IO import Test.Tasty main :: IO () main = do mConnString <- lookupEnv "YESHQL_POSTGRESQL_CONNSTRING" case mConnString of Nothing -> do hPutStrLn stderr "Please set the 'YESHQL_POSTGRESQL_CONNSTRING' to the PostgreSQL connection string" exitFailure Just connString -> withConn (ByteString.pack connString) (defaultMain . allTests) where allTests conn = testGroup "All Tests" (Tests.tests conn) withConn :: ByteString -> (Connection -> IO a) -> IO a withConn connString f = bracket (connectPostgreSQL connString) close $ \c -> bracket_ (begin c) (rollback c) $ do initializeDb c f c initializeDb :: Connection -> IO () initializeDb c = do execute_ c "create table users (id serial primary key, username text, person_name text, email text);" execute_ c "insert into users (username, person_name, email) values ('billy', 'Billy', 'billy@example.org');" pure ()