@@ -10,9 +10,7 @@ module Test.Util.FS (
1010 , withSimHasBlockIO
1111 -- * Simulated file system with errors
1212 , withSimErrorHasFS
13- , withSimErrorHasFS'
1413 , withSimErrorHasBlockIO
15- , withSimErrorHasBlockIO'
1614 -- * Simulated file system properties
1715 , propNoOpenHandles
1816 , assertNoOpenHandles
@@ -33,7 +31,6 @@ import System.FS.BlockIO.IO
3331import System.FS.BlockIO.Sim (fromHasFS )
3432import System.FS.IO
3533import System.FS.Sim.Error
36- import qualified System.FS.Sim.MockFS as MockFS
3734import System.FS.Sim.MockFS
3835import System.FS.Sim.STM
3936import System.FS.Sim.Stream (InternalInfo (.. ), Stream (.. ))
@@ -61,27 +58,36 @@ withTempIOHasBlockIO path action =
6158
6259{-# INLINABLE withSimHasFS #-}
6360withSimHasFS ::
64- (MonadSTM m , MonadThrow m , PrimMonad m )
65- => (MockFS -> Property )
66- -> (HasFS m HandleMock -> m Property )
61+ (MonadSTM m , MonadThrow m , PrimMonad m , Testable prop1 , Testable prop2 )
62+ => (MockFS -> prop1 )
63+ -> MockFS
64+ -> ( HasFS m HandleMock
65+ -> StrictTMVar m MockFS
66+ -> m prop2
67+ )
6768 -> m Property
68- withSimHasFS post k = do
69- var <- newTMVarIO MockFS. empty
69+ withSimHasFS post fs k = do
70+ var <- newTMVarIO fs
7071 let hfs = simHasFS var
71- x <- k hfs
72- fs <- atomically $ readTMVar var
73- pure (x .&&. post fs)
72+ x <- k hfs var
73+ fs' <- atomically $ readTMVar var
74+ pure (x .&&. post fs' )
7475
7576{-# INLINABLE withSimHasBlockIO #-}
7677withSimHasBlockIO ::
77- (MonadMVar m , MonadSTM m , MonadCatch m , PrimMonad m )
78- => (MockFS -> Property )
79- -> (HasFS m HandleMock -> HasBlockIO m HandleMock -> m Property )
78+ (MonadMVar m , MonadSTM m , MonadCatch m , PrimMonad m , Testable prop1 , Testable prop2 )
79+ => (MockFS -> prop1 )
80+ -> MockFS
81+ -> ( HasFS m HandleMock
82+ -> HasBlockIO m HandleMock
83+ -> StrictTMVar m MockFS
84+ -> m prop2
85+ )
8086 -> m Property
81- withSimHasBlockIO post k = do
82- withSimHasFS post $ \ hfs -> do
87+ withSimHasBlockIO post fs k = do
88+ withSimHasFS post fs $ \ hfs fsVar -> do
8389 hbio <- fromHasFS hfs
84- k hfs hbio
90+ k hfs hbio fsVar
8591
8692{- ------------------------------------------------------------------------------
8793 Simulated file system with errors
@@ -107,28 +113,13 @@ withSimErrorHasFS post fs errs k = do
107113 fs' <- atomically $ readTMVar fsVar
108114 pure (x .&&. post fs')
109115
110- {-# INLINABLE withSimErrorHasFS' #-}
111- withSimErrorHasFS' ::
112- (MonadSTM m , MonadThrow m , PrimMonad m , Testable prop1 , Testable prop2 )
113- => (MockFS -> prop1 )
114- -> MockFS
115- -> Errors
116- -> (HasFS m HandleMock -> m prop2 )
117- -> m Property
118- withSimErrorHasFS' post fs errs k = do
119- fsVar <- newTMVarIO fs
120- errVar <- newTVarIO errs
121- let hfs = simErrorHasFS fsVar errVar
122- x <- k hfs
123- fs' <- atomically $ readTMVar fsVar
124- pure (x .&&. post fs')
125-
126116{-# INLINABLE withSimErrorHasBlockIO #-}
127117withSimErrorHasBlockIO ::
128118 ( MonadSTM m , MonadCatch m , MonadMVar m , PrimMonad m
129119 , Testable prop1 , Testable prop2
130120 )
131121 => (MockFS -> prop1 )
122+ -> MockFS
132123 -> Errors
133124 -> ( HasFS m HandleMock
134125 -> HasBlockIO m HandleMock
@@ -137,32 +128,10 @@ withSimErrorHasBlockIO ::
137128 -> m prop2
138129 )
139130 -> m Property
140- withSimErrorHasBlockIO post errs k = do
141- fsVar <- newTMVarIO MockFS. empty
142- errVar <- newTVarIO errs
143- let hfs = simErrorHasFS fsVar errVar
144- hbio <- fromHasFS hfs
145- x <- k hfs hbio fsVar errVar
146- fs <- atomically $ readTMVar fsVar
147- pure (x .&&. post fs)
148-
149- {-# INLINABLE withSimErrorHasBlockIO' #-}
150- withSimErrorHasBlockIO' ::
151- ( MonadSTM m , MonadCatch m , MonadMVar m , PrimMonad m
152- , Testable prop1 , Testable prop2
153- )
154- => (MockFS -> prop1 )
155- -> Errors
156- -> (HasFS m HandleMock -> HasBlockIO m HandleMock -> m prop2 )
157- -> m Property
158- withSimErrorHasBlockIO' post errs k = do
159- fsVar <- newTMVarIO MockFS. empty
160- errVar <- newTVarIO errs
161- let hfs = simErrorHasFS fsVar errVar
162- hbio <- fromHasFS hfs
163- x <- k hfs hbio
164- fs <- atomically $ readTMVar fsVar
165- pure (x .&&. post fs)
131+ withSimErrorHasBlockIO post fs errs k =
132+ withSimErrorHasFS post fs errs $ \ hfs fsVar errsVar -> do
133+ hbio <- fromHasFS hfs
134+ k hfs hbio fsVar errsVar
166135
167136{- ------------------------------------------------------------------------------
168137 Simulated file system properties
0 commit comments