@@ -16,6 +16,10 @@ import Data.Text qualified as T
|
||||
import System.Exit (ExitCode(..))
|
||||
import Test.Tasty.ExpectedFailure (expectFail, ignoreTestBecause)
|
||||
import Control.DeepSeq (($!!))
|
||||
import Text.Pretty.Simple (pShow, pShowNoColor)
|
||||
import Control.Lens (strict, view)
|
||||
import Gyehoek.Sexp.Read qualified as Read
|
||||
import Effectful
|
||||
|
||||
|
||||
brokenWasmTests :: List String
|
||||
@@ -31,12 +35,17 @@ brokenStackifyTests =
|
||||
-- , "callcc-nested1" -- requires closure-conversion
|
||||
-- ]
|
||||
|
||||
brokenReaderTests =
|
||||
[ "delimited-identifier"
|
||||
, "string-line-continuation"
|
||||
]
|
||||
|
||||
test_root :: IO TestTree
|
||||
test_root = do
|
||||
all_cases <- listDirectory "golden"
|
||||
all_cases <- listDirectory "golden/exec"
|
||||
let tests = all_cases
|
||||
& fmap ("golden"</>)
|
||||
testGroup "golden" <$> sequenceA
|
||||
& fmap ("golden/exec"</>)
|
||||
testGroup "execution" <$> sequenceA
|
||||
[ ignoreTestBecause "wasm codegen is on the backburner"
|
||||
<$> wasmTests tests
|
||||
, stackifyTests tests
|
||||
@@ -48,7 +57,7 @@ wasmTests :: List FilePath -> IO TestTree
|
||||
wasmTests files = do
|
||||
cmd <- getEnvDefault "GYEHOEK_RUNTIME"
|
||||
"runtime/target/debug/gyehoek-runtime"
|
||||
pure $ testGroup "wasm execution" $ files <&> \test ->
|
||||
pure $ testGroup "wasm" $ files <&> \test ->
|
||||
let testname = takeFileName test
|
||||
scmfile = test </> "source.scm"
|
||||
resultfile = test </> "exec"
|
||||
@@ -64,7 +73,7 @@ wasmTests files = do
|
||||
|
||||
stackifyTests :: List FilePath -> IO TestTree
|
||||
stackifyTests files = do
|
||||
pure $ testGroup "stackified execution" $ files <&> \test ->
|
||||
pure $ testGroup "stackified" $ files <&> \test ->
|
||||
let testname = takeFileName test
|
||||
scmfile = test </> "source.scm"
|
||||
resultfile = test </> "exec"
|
||||
@@ -81,3 +90,22 @@ stackifyTests files = do
|
||||
resultfile
|
||||
action
|
||||
printProcResult
|
||||
|
||||
test_reader :: IO TestTree
|
||||
test_reader = do
|
||||
all_cases <- listDirectory "golden/reader"
|
||||
let tests = all_cases
|
||||
& fmap ("golden/reader"</>)
|
||||
pure . testGroup "reader" $ tests <&> \test ->
|
||||
let testname = takeFileName test
|
||||
scmfile = test </> "source.scm"
|
||||
resultfile = test </> "read"
|
||||
action = runEff $ Read.readFile scmfile
|
||||
in maybeBroken testname brokenReaderTests $ goldenVsAction
|
||||
testname
|
||||
resultfile
|
||||
action
|
||||
(view strict . pShowNoColor)
|
||||
|
||||
-- readTests files = pure . testGroup "reader" $ files <&> \test ->
|
||||
-- let
|
||||
|
||||
Reference in New Issue
Block a user