From eabf4e9d4564d8f21ddc156011a35b2be305feeb Mon Sep 17 00:00:00 2001 From: Lennart Spitzner Date: Tue, 31 Jan 2023 15:21:38 +0000 Subject: [PATCH] Revert "Simplify test suite" This reverts commit 8f2625dc87ca63629fc5413a5664fecc601d4e08. --- source/test-suite/Main.hs | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/source/test-suite/Main.hs b/source/test-suite/Main.hs index e48ec56..ecc3042 100644 --- a/source/test-suite/Main.hs +++ b/source/test-suite/Main.hs @@ -1,12 +1,14 @@ +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 . Hspec.parallel $ do +main = Hspec.hspec $ do let directory = "data" entries <- Hspec.runIO $ Directory.listDirectory directory Monad.forM_ (List.sort entries) $ \entry -> @@ -15,20 +17,31 @@ main = Hspec.hspec . Hspec.parallel $ do Just slug -> Hspec.it slug $ do let input = FilePath.combine directory entry expected <- readFile input - 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 + 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 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