packages feed

streamly-lmdb-0.4.0: test/TestSuite.hs

module Main where

import Streamly.External.LMDB
  ( Database,
    Environment,
    ReadWrite,
    defaultLimits,
    getDatabase,
    mapSize,
    openEnvironment,
    tebibyte,
  )
import qualified Streamly.External.LMDB.Tests (tests)
import System.Directory (removeDirectoryRecursive)
import System.Environment (setEnv)
import System.IO.Temp (createTempDirectory, getCanonicalTemporaryDirectory)
import Test.Tasty (TestTree, defaultMain, testGroup, withResource)

main :: IO ()
main = do
  setEnv "TASTY_NUM_THREADS" "1" -- Multiple tests use the same LMDB database.
  defaultMain $
    withResource
      ( do
          tmpParent <- getCanonicalTemporaryDirectory
          tmpDir <- createTempDirectory tmpParent "streamly-lmdb-tests"
          env <- openEnvironment tmpDir $ defaultLimits {mapSize = tebibyte}
          db <- getDatabase env Nothing
          return (tmpDir, (db, env))
      )
      (\(tmpDir, _) -> removeDirectoryRecursive tmpDir)
      (\io -> tests $ snd <$> io)

tests :: IO (Database ReadWrite, Environment ReadWrite) -> TestTree
tests res =
  testGroup
    "Tests"
    [ testGroup "Streamly.External.LMDB.Tests" $
        Streamly.External.LMDB.Tests.tests res
    ]