module Main (main) where import Datalog import Data.Text qualified as T import Data.Text.IO qualified as T import Text.Megaparsec qualified as M parserGoldenTest :: String -> IO Bool parserGoldenTest prefix = do let inFile = "test/golden/" <> prefix <> ".dl" outFile = "test/golden/" <> prefix <> ".show" inp <- T.readFile inFile out <- T.readFile outFile result <- case M.parse parseProgram inFile inp of Left e -> do print e return False Right out' -> do return (T.strip out == T.pack (show out')) let resultS = if result then "passed" else "failed" putStrLn $ unwords ["Parser test", prefix, resultS] return result main :: IO () main = do True <- parserGoldenTest "ancestor" return ()