11{-# LANGUAGE OverloadedStrings #-}
2+ {-# LANGUAGE TemplateHaskell #-}
23
34{-
45Test Oughta, using Oughta.
@@ -14,7 +15,9 @@ is readable and correct (which is non-trivial, especially source span tracking).
1415module Main (main ) where
1516
1617import Control.Monad qualified as Monad
18+ import Data.ByteString (ByteString )
1719import Data.ByteString qualified as BS
20+ import Data.FileEmbed (embedFile )
1821import Data.Function ((&) )
1922import Data.Text qualified as Text
2023import Data.Text.Encoding qualified as Text
@@ -27,6 +30,9 @@ import System.FilePath qualified as FilePath
2730import Test.Tasty.HUnit qualified as TTH
2831import Test.Tasty qualified as TT
2932
33+ prelude :: ByteString
34+ prelude = $ (embedFile " test/test.lua" )
35+
3036test :: FilePath -> IO ()
3137test file = do
3238 content <- Text.IO. readFile file
@@ -43,27 +49,13 @@ test file = do
4349 Text. encodeUtf8 &
4450 Ota. Output
4551
46- let prelude =
47- Text. unlines
48- [ " name = 'Oughta'"
49- , " function match_on_line(i)"
50- , " check(string.format('✔️ match at <out>:%d', i))"
51- , " end"
52- , " function match_prev()"
53- , " match_on_line(src_line(1) - 1)"
54- , " end"
55- , " function match_from_line(i)"
56- , " checkln 'stack trace:'"
57- , " here(string.format(' %s:%d', file(), i))"
58- , " end"
59- ]
6052 let prog0 = Ota. fromLineComments file comment content
61- let prog = Ota. addPrefix prelude prog0
53+ let prog = Ota. addPrefix ( Text. decodeUtf8Lenient prelude) prog0
6254 result <- Ota. check prog (clearComments content)
6355 TTH. assertBool file (not (Ota. resultNull result))
6456
6557 let prog0' = Ota. fromLineComments file comment' content
66- let prog' = Ota. addPrefix prelude prog0'
58+ let prog' = Ota. addPrefix ( Text. decodeUtf8Lenient prelude) prog0'
6759 let output'@ (Ota. Output out) = clearComments (Ota. printResult result)
6860 BS. writeFile (FilePath. replaceExtension file " out" ) out
6961 Ota. check' prog' output'
0 commit comments