packages feed

nix-lang-0.1.0.0: test/Utils.hs

module Utils where

import qualified Data.Text as T
import Nix.Lang.Parser
import Nix.Lang.Types
import Nix.Lang.Types.Ps
import Test.Tasty.HUnit
import Text.Megaparsec (eof, errorBundlePretty)

parseExprOrFail :: T.Text -> IO (NixExpr Ps)
parseExprOrFail src =
  case runNixParser (nixExpr <* eof) "<expr>" src of
    (Right expr, _) -> pure expr
    (Left err, _) -> assertFailure (errorBundlePretty err)

parseFileOrFail :: FilePath -> T.Text -> IO (NixExpr Ps)
parseFileOrFail fp src =
  case runNixParser nixFile fp src of
    (Right expr, _) -> pure expr
    (Left err, _) -> assertFailure (errorBundlePretty err)

parseExprFails :: T.Text -> Assertion
parseExprFails src =
  case runNixParser (nixExpr <* eof) "<expr>" src of
    (Left _, _) -> pure ()
    (Right expr, _) -> assertFailure $ "expected parse failure, got: " <> show expr

parseFileFails :: FilePath -> T.Text -> Assertion
parseFileFails fp src =
  case runNixParser nixFile fp src of
    (Left _, _) -> pure ()
    (Right expr, _) -> assertFailure $ "expected parse failure, got: " <> show expr