@@ -10,8 +10,10 @@ import Distribution.Simple.Utils (warn)
10
10
import Distribution.Verbosity
11
11
12
12
import Control.Concurrent (threadDelay )
13
- import Control.Exception (bracket , throwIO , try )
13
+ import Control.Exception (throwIO , try )
14
14
import Control.Monad (when )
15
+ import Control.Monad.Catch ( bracket , MonadMask )
16
+ import Control.Monad.IO.Class
15
17
16
18
import System.Directory
17
19
import System.IO.Error
@@ -20,13 +22,13 @@ import qualified System.Info (os)
20
22
21
23
-- | Much like 'withTemporaryDirectory' but with a number of hacks to make
22
24
-- sure on windows that we can clean up the directory at the end.
23
- withTestDir :: Verbosity -> String -> (FilePath -> IO a ) -> IO a
25
+ withTestDir :: ( MonadIO m , MonadMask m ) => Verbosity -> String -> (FilePath -> m a ) -> m a
24
26
withTestDir verbosity template action = do
25
- systmpdir <- getTemporaryDirectory
27
+ systmpdir <- liftIO getTemporaryDirectory
26
28
bracket
27
- ( do { tmpRelDir <- createTempDirectory systmpdir template
29
+ ( do { tmpRelDir <- liftIO $ createTempDirectory systmpdir template
28
30
; return $ systmpdir </> tmpRelDir } )
29
- (removeDirectoryRecursiveHack verbosity)
31
+ (liftIO . removeDirectoryRecursiveHack verbosity)
30
32
action
31
33
32
34
-- | On Windows, file locks held by programs we run (in this case VCSs)
0 commit comments