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 ]