]> Git — Sourcephile - haskell/symantic-parser.git/blob - test/Golden/Splice.hs
bug: a ref outside its def must be supported
[haskell/symantic-parser.git] / test / Golden / Splice.hs
1 module Golden.Splice where
2
3 import Data.Function (($))
4 import Data.Functor ((<$>))
5 import Data.Int (Int)
6 import Data.Semigroup (Semigroup(..))
7 import System.FilePath ((</>), (<.>), (-<.>))
8 import System.IO (writeFile)
9 import Test.Tasty
10 import Text.Show (Show(..))
11 import qualified Data.List as List
12
13 import Build_symantic_parser
14 import Golden.Splice.Utils
15 import qualified Grammar
16
17 goldens :: TestTree
18 goldens = testGroup "Splice" $
19 (<$> [1::Int .. List.length Grammar.grammars]) $ \g ->
20 let spliceFile = "test/Golden/Splice/"</>"G"<>show g<.>"hs" in
21 withResource
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"
27 , ""
28 , "splice = $$(P.runParser @Text Grammar.g"<>show g<>")"
29 ])
30 (\() -> do
31 rmFile (rootDir</>spliceFile)
32 rmFile (rootDir</>spliceFile-<.>"hi")
33 rmFile (rootDir</>spliceFile-<.>"o"))
34 (\_io -> testSplice spliceFile)