axel-0.0.9: test/Axel/Test/File/FileSpec.hs
{-# LANGUAGE TypeApplications #-}
module Axel.Test.File.FileSpec where
import Axel.Eff.Console as Console
import Axel.Eff.FileSystem as FS
import Axel.Eff.Ghci as Ghci
import Axel.Eff.Process as Proc
import Axel.Eff.Resource as Res
import Axel.Error as Error
import Axel.Haskell.File
import Axel.Macros
import Control.Monad.Freer as Effs
import Control.Monad.Freer.State (evalState)
import Data.ByteString.Lazy.Char8 as C
import qualified Data.Map as M
import System.FilePath
import Test.Tasty
import Test.Tasty.Golden
test_transpileSource_golden :: IO TestTree
test_transpileSource_golden = do
axelFiles <- findByExtension [".axel_golden"] "test/Axel/Test/File"
pure $
testGroup "`transpileSource` golden tests" $ do
axelFile <- axelFiles
let hsFile = replaceExtension axelFile ".hs_golden"
pure $
goldenVsString
(takeBaseName axelFile)
hsFile
(C.pack <$>
(Effs.runM .
Ghci.runEff .
evalState (M.empty :: ModuleInfo) .
Res.runEff .
Proc.runEff . FS.runEff . Error.runEff @Error . Console.runEff)
(FS.readFile axelFile >>= transpileSource))