packages feed

streamly-lmdb-0.0.1: test/TestSuite.hs

module Main where

import System.Directory (removeDirectoryRecursive)
import System.Environment (setEnv)
import System.IO.Temp (createTempDirectory, getCanonicalTemporaryDirectory)
import Test.Tasty (TestTree, defaultMain, testGroup, withResource)

import Streamly.External.LMDB (Database, ReadWrite, defaultLimits, getDatabase, mapSize, openEnvironment, tebibyte)
import qualified Streamly.External.LMDB.Tests (tests)

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))
        (\(tmpDir, _) -> removeDirectoryRecursive tmpDir)
        (\io -> tests $ snd <$> io)

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