]> Git — Sourcephile - haskell/symantic-parser.git/blob - test/Golden/Splice.hs
test: add goldens for TH splices
[haskell/symantic-parser.git] / test / Golden / Splice.hs
1 module Golden.Splice where
2
3 import Control.Monad (Monad(..))
4 import Data.Int (Int)
5 import Data.Function (($))
6 import Data.Functor ((<$>))
7 import Data.Semigroup (Semigroup(..))
8 import Text.Show (Show(..))
9 import System.FilePath ((</>), (<.>))
10 import System.IO (writeFile)
11 import System.Directory (removeFile)
12 import qualified Data.List as List
13 import Test.Tasty
14
15 import Build_symantic_parser
16 import Golden.Splice.Utils
17 import qualified Grammar
18
19 goldens :: TestTree
20 goldens = testGroup "Splice" $
21 (<$> [1::Int .. List.length Grammar.grammars]) $ \g ->
22 let spliceFile = "test/Golden/Splice/"</>"G"<>show g<.>"hs" in
23 withResource
24 (do
25 writeFile (rootDir</>spliceFile) $ List.unlines
26 [ "module Splice where"
27 , "import Data.Text (Text)"
28 , "import qualified Symantic.Parser as P"
29 , "import qualified Grammar"
30 , ""
31 , "splice = $$(P.runParser @Text Grammar.g"<>show g<>")"
32 ]
33 return (rootDir</>spliceFile))
34 removeFile
35 (\_io -> testSplice spliceFile)