packages feed

load-env-0.1.2: test/LoadEnvSpec.hs

module LoadEnvSpec
    ( spec
    ) where

import Control.Monad (when)
import LoadEnv
import System.Directory (doesFileExist, removeFile)
import System.Environment (lookupEnv)
import Test.Hspec

spec :: Spec
spec = after_ cleanup $
    describe "loadEnv" $ do
        it "loads environment variables from ./.env if present" $ do
            writeFile envFile $ unlines
                [ "FOO=\"bar\""
                , "BAZ=\"bat\""
                ]

            loadEnvFrom envFile

            mbar <- lookupEnv "FOO"
            mbat <- lookupEnv "BAZ"
            mbar `shouldBe` Just "bar"
            mbat `shouldBe` Just "bat"

        it "does not fail if the file is not present" $ do
            loadEnvFrom "i-do-not-exist"

            return ()

cleanup :: IO ()
cleanup = do
    e <- doesFileExist envFile
    when e $ removeFile envFile

envFile :: FilePath
envFile = "/tmp/load-env-test-file"