packages feed

axel-0.0.6: 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.Process as Proc
import Axel.Eff.Resource as Res
import Axel.Error as Error
import Axel.Haskell.File

import Control.Monad.Freer as Effs

import Data.ByteString.Lazy.Char8 as C

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 .
            Res.runEff .
            Proc.runEff . FS.runEff . Error.runEff @Error . Console.runEff)
             (FS.readFile axelFile >>= transpileSource))