diff --git a/source/test-suite/Main.hs b/source/test-suite/Main.hs index ecc3042..e48ec56 100644 --- a/source/test-suite/Main.hs +++ b/source/test-suite/Main.hs @@ -1,14 +1,12 @@ -import qualified Control.Exception as Exception import qualified Control.Monad as Monad import qualified Data.List as List import qualified Language.Haskell.Brittany.Main as Brittany import qualified System.Directory as Directory import qualified System.FilePath as FilePath -import qualified System.IO as IO import qualified Test.Hspec as Hspec main :: IO () -main = Hspec.hspec $ do +main = Hspec.hspec . Hspec.parallel $ do let directory = "data" entries <- Hspec.runIO $ Directory.listDirectory directory Monad.forM_ (List.sort entries) $ \entry -> @@ -17,31 +15,20 @@ main = Hspec.hspec $ do Just slug -> Hspec.it slug $ do let input = FilePath.combine directory entry expected <- readFile input - actual <- withTemporaryFile $ \output handle -> do - IO.hClose handle - Directory.copyFile input output - Brittany.mainWith - "brittany" - [ "--config-file" - , FilePath.combine directory "brittany.yaml" - , "--no-user-config" - , "--write-mode" - , "inplace" - , output - ] - readFile output + let output = FilePath.combine "output" entry + Directory.copyFile input output + Brittany.mainWith + "brittany" + [ "--config-file" + , FilePath.combine directory "brittany.yaml" + , "--no-user-config" + , "--write-mode" + , "inplace" + , output + ] + actual <- readFile output Literal actual `Hspec.shouldBe` Literal expected -withTemporaryFile :: (FilePath -> IO.Handle -> IO a) -> IO a -withTemporaryFile callback = do - directory <- Directory.getTemporaryDirectory - let - acquire = IO.openTempFile directory "brittany-.hs" - release filePath handle = do - IO.hClose handle - Directory.removeFile filePath - Exception.bracket acquire (uncurry release) (uncurry callback) - newtype Literal = Literal String deriving Eq