1 module Golden.Splice where
3 import Data.Function (($))
4 import Data.Functor ((<$>))
6 import Data.Semigroup (Semigroup(..))
7 import System.FilePath ((</>), (<.>), (-<.>))
8 import System.IO (writeFile)
10 import Text.Show (Show(..))
11 import qualified Data.List as List
13 import Build_symantic_parser
14 import Golden.Splice.Utils
15 import qualified Grammar
18 goldens = testGroup "Splice" $
19 (<$> [1::Int .. List.length Grammar.grammars]) $ \g ->
20 let spliceFile = "test/Golden/Splice/"</>"G"<>show g<.>"hs" in
22 (writeFile (rootDir</>spliceFile) $ List.unlines
23 [ "module Splice where"
24 , "import Data.Text (Text)"
25 , "import qualified Symantic.Parser as P"
26 , "import qualified Grammar"
28 , "splice = $$(P.runParser @Text Grammar.g"<>show g<>")"
31 rmFile (rootDir</>spliceFile)
32 rmFile (rootDir</>spliceFile-<.>"hi")
33 rmFile (rootDir</>spliceFile-<.>"o"))
34 (\_io -> testSplice spliceFile)