1
1
mirror of https://github.com/anoma/juvix.git synced 2025-01-05 22:46:08 +03:00
juvix/test/Parsing/Negative.hs
2022-12-20 13:05:40 +01:00

47 lines
1.2 KiB
Haskell

module Parsing.Negative where
import Base
import Juvix.Compiler.Builtins (iniState)
import Juvix.Compiler.Pipeline
import Juvix.Parser.Error
root :: Path Abs Dir
root = relToProject $(mkRelDir "tests/negative")
data NegTest = NegTest
{ _name :: String,
_relDir :: Path Rel Dir,
_file :: Path Rel File
}
testDescr :: NegTest -> TestDescr
testDescr NegTest {..} =
let tRoot = root <//> _relDir
file' = tRoot <//> _file
in TestDescr
{ _testName = _name,
_testRoot = tRoot,
_testAssertion = Single $ do
let entryPoint = defaultEntryPoint tRoot file'
res <- runIOEither iniState entryPoint upToParsing
case mapLeft fromJuvixError res of
Left (Just (_ :: ParserError)) -> return ()
Left Nothing -> assertFailure "The parser did not find an error."
Right _ -> assertFailure "An error ocurred but it was not in the parser."
}
allTests :: TestTree
allTests =
testGroup
"Parsing negative tests"
( map (mkTest . testDescr) scoperErrorTests
)
scoperErrorTests :: [NegTest]
scoperErrorTests =
[ NegTest
"Tab character"
$(mkRelDir ".")
$(mkRelFile "Tab.juvix")
]