packages feed

hercules-ci-cnix-store-0.3.4.0: test/Hercules/CNix/SettingsSpec.hs

{-# LANGUAGE BlockArguments #-}

module Hercules.CNix.SettingsSpec (spec) where

import Hercules.CNix.Settings
import Protolude
import Test.Hspec

spec :: Spec
spec = do
  describe "setUseSQLiteWAL" do
    it "affects getUseSQLiteWAL" do
      withResettingUseSQLiteWAL do
        for_ [True, False] \v -> do
          setUseSQLiteWAL v
          v' <- getUseSQLiteWAL
          v' `shouldBe` v

-- bracket on global state is a leaky abstraction, so we don't add this
-- to the library.
withResettingUseSQLiteWAL :: IO a -> IO a
withResettingUseSQLiteWAL =
  bracket getUseSQLiteWAL setUseSQLiteWAL . const