module Golden.Splice where import Control.Monad (Monad(..)) import Data.Int (Int) import Data.Function (($)) import Data.Functor ((<$>)) import Data.Semigroup (Semigroup(..)) import Text.Show (Show(..)) import System.FilePath ((), (<.>)) import System.IO (writeFile) import System.Directory (removeFile) import qualified Data.List as List import Test.Tasty import Build_symantic_parser import Golden.Splice.Utils import qualified Grammar goldens :: TestTree goldens = testGroup "Splice" $ (<$> [1::Int .. List.length Grammar.grammars]) $ \g -> let spliceFile = "test/Golden/Splice/""G"<>show g<.>"hs" in withResource (do writeFile (rootDirspliceFile) $ List.unlines [ "module Splice where" , "import Data.Text (Text)" , "import qualified Symantic.Parser as P" , "import qualified Grammar" , "" , "splice = $$(P.runParser @Text Grammar.g"<>show g<>")" ] return (rootDirspliceFile)) removeFile (\_io -> testSplice spliceFile)