diff --git a/serversession-backend-acid-state/.gitignore b/serversession-backend-acid-state/.gitignore new file mode 100644 index 0000000..ff72b5c --- /dev/null +++ b/serversession-backend-acid-state/.gitignore @@ -0,0 +1 @@ +state diff --git a/serversession-backend-acid-state/serversession-backend-acid-state.cabal b/serversession-backend-acid-state/serversession-backend-acid-state.cabal index 17640bc..0fcba63 100644 --- a/serversession-backend-acid-state/serversession-backend-acid-state.cabal +++ b/serversession-backend-acid-state/serversession-backend-acid-state.cabal @@ -32,6 +32,21 @@ library TypeFamilies ghc-options: -Wall + +test-suite tests + type: exitcode-stdio-1.0 + hs-source-dirs: tests + build-depends: + base, acid-state, containers, mtl, safecopy + + , hspec >= 2.1 && < 3 + + , serversession + , serversession-backend-acid-state + main-is: Main.hs + ghc-options: -Wall -threaded -with-rtsopts=-N + + source-repository head type: git location: https://github.com/yesodweb/serversession diff --git a/serversession-backend-acid-state/tests/Main.hs b/serversession-backend-acid-state/tests/Main.hs new file mode 100644 index 0000000..a3f1c54 --- /dev/null +++ b/serversession-backend-acid-state/tests/Main.hs @@ -0,0 +1,21 @@ +module Main (main) where + +import Data.Acid.Local (openLocalState, createCheckpointAndClose) +import Data.Acid.Memory (openMemoryState) +import Test.Hspec +import Web.ServerSession.Backend.Acid +import Web.ServerSession.Core.StorageTests + +import qualified Control.Exception as E + +main :: IO () +main = + E.bracket + (AcidStorage <$> openLocalState emptyState) + (createCheckpointAndClose . acidState) $ + \acidLocal -> hspec $ parallel $ do + acidMem <- runIO $ AcidStorage <$> openMemoryState emptyState + describe "AcidStorage on memory only" $ + allStorageTests acidMem it runIO shouldBe shouldReturn shouldThrow + describe "AcidStorage on local storage" $ + allStorageTests acidLocal it runIO shouldBe shouldReturn shouldThrow