Skip to content

Commit

Permalink
Tweak TestTree vs Property factoring in StateMachine tests
Browse files Browse the repository at this point in the history
Follow a more normal convention, and allow running individual tests more
easily in GHCi via quickCheck $ theProperty
  • Loading branch information
dcoutts committed Oct 4, 2024
1 parent c253bd9 commit 2ee8a84
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions test/Test/Database/LSMTree/Normal/StateMachine.hs
Original file line number Diff line number Diff line change
Expand Up @@ -109,16 +109,22 @@ import Test.Util.TypeFamilyWrappers (WrapBlob (..), WrapBlobRef (..),

tests :: TestTree
tests = testGroup "Normal.StateMachine" [
propLockstepIO_ModelIOImpl
, propLockstepIO_RealImpl_RealFS
, propLockstepIO_RealImpl_MockFS
testProperty "prop_lockstepIO_ModelIOImpl"
prop_lockstepIO_ModelIOImpl

, testProperty "prop_lockstepIO_RealImpl_RealFS"
prop_lockstepIO_RealImpl_RealFS

, testProperty "prop_lockstepIO_RealImpl_MockFS"
prop_lockstepIO_RealImpl_MockFS
]

labelledExamples :: IO ()
labelledExamples = QC.labelledExamples $ Lockstep.Run.tagActions (Proxy @(ModelState R.TableHandle))

propLockstepIO_ModelIOImpl :: TestTree
propLockstepIO_ModelIOImpl = testProperty "propLockstepIO_ModelIOImpl" $
prop_lockstepIO_ModelIOImpl :: Actions (Lockstep (ModelState M.TableHandle))
-> QC.Property
prop_lockstepIO_ModelIOImpl =
runActionsBracket'
(Proxy @(ModelState M.TableHandle))
acquire
Expand Down Expand Up @@ -171,8 +177,9 @@ propLockstepIO_ModelIOImpl = testProperty "propLockstepIO_ModelIOImpl" $
deriving via AllowThunk (M.Session IO)
instance NoThunks (M.Session IO)

propLockstepIO_RealImpl_RealFS :: TestTree
propLockstepIO_RealImpl_RealFS = testProperty "propLockstepIO_RealImpl_RealFS" $
prop_lockstepIO_RealImpl_RealFS :: Actions (Lockstep (ModelState R.TableHandle))
-> QC.Property
prop_lockstepIO_RealImpl_RealFS =
runActionsBracket'
(Proxy @(ModelState R.TableHandle))
acquire
Expand All @@ -182,7 +189,7 @@ propLockstepIO_RealImpl_RealFS = testProperty "propLockstepIO_RealImpl_RealFS" $
where
acquire :: IO (FilePath, WrapSession R.TableHandle IO)
acquire = do
(tmpDir, hasFS, hasBlockIO) <- createSystemTempDirectory "propLockstepIO_RealIO"
(tmpDir, hasFS, hasBlockIO) <- createSystemTempDirectory "prop_lockstepIO_RealIO"
session <- R.openSession nullTracer hasFS hasBlockIO (mkFsPath [])
pure (tmpDir, WrapSession session)

Expand All @@ -191,8 +198,9 @@ propLockstepIO_RealImpl_RealFS = testProperty "propLockstepIO_RealImpl_RealFS" $
R.closeSession session
removeDirectoryRecursive tmpDir

propLockstepIO_RealImpl_MockFS :: TestTree
propLockstepIO_RealImpl_MockFS = testProperty "propLockstepIO_RealImpl_MockFS" $
prop_lockstepIO_RealImpl_MockFS :: Actions (Lockstep (ModelState R.TableHandle))
-> QC.Property
prop_lockstepIO_RealImpl_MockFS =
runActionsBracket'
(Proxy @(ModelState R.TableHandle))
acquire
Expand Down Expand Up @@ -385,7 +393,7 @@ instance ( Show (Class.TableConfig h)
-- TODO: show instance does not show key-value-blob types. Example:
--
-- Normal.StateMachine
-- propLockstepIO_ModelIOImpl: FAIL
-- prop_lockstepIO_ModelIOImpl: FAIL
-- *** Failed! Exception: 'open: inappropriate type (table type mismatch)' (after 25 tests and 2 shrinks):
-- do action $ New TableConfig
-- action $ Snapshot "snap" (GVar var1 (FromRight . id))
Expand Down

0 comments on commit 2ee8a84

Please sign in to comment.