module Golden.Splice where import Data.Function (($)) import Data.Functor ((<$>)) import Data.Int (Int) import Data.Semigroup (Semigroup(..)) import System.FilePath ((), (<.>), (-<.>)) import System.IO (writeFile) import Test.Tasty import Text.Show (Show(..)) import qualified Data.List as List 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 (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<>")" ]) (\() -> do rmFile (rootDirspliceFile) rmFile (rootDirspliceFile-<.>"hi") rmFile (rootDirspliceFile-<.>"o")) (\_io -> testSplice spliceFile)