-
Notifications
You must be signed in to change notification settings - Fork 220
Expand file tree
/
Copy pathFreeze.hs
More file actions
53 lines (37 loc) · 1.73 KB
/
Freeze.hs
File metadata and controls
53 lines (37 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{-# LANGUAGE OverloadedStrings #-}
-- FIXME: Re-enable deprecation warnings after removing support for turtle < 1.6.
{-# OPTIONS_GHC -Wno-deprecations #-}
module Dhall.Test.Freeze where
import Data.Text (Text)
import Dhall.Freeze (Intent (..), Scope (..))
import Prelude hiding (FilePath)
import Test.Tasty (TestTree)
import Turtle (FilePath)
import qualified Data.Text as Text
import qualified Data.Text.IO as Text.IO
import qualified Dhall.Core as Core
import qualified Dhall.Freeze as Freeze
import qualified Dhall.Parser as Parser
import qualified Dhall.Test.Util as Test.Util
import qualified Test.Tasty as Tasty
import qualified Test.Tasty.HUnit as Tasty.HUnit
import qualified Turtle
freezeDirectory :: FilePath
freezeDirectory = "./tests/freeze"
getTests :: IO TestTree
getTests = do
freezeTests <- Test.Util.discover (Turtle.chars <* "A.dhall") freezeTest (Turtle.lstree freezeDirectory)
let testTree = Tasty.testGroup "freeze tests" [ freezeTests ]
return testTree
freezeTest :: Text -> TestTree
freezeTest prefix =
Tasty.HUnit.testCase (Text.unpack prefix) $ do
let inputFile = Text.unpack (prefix <> "A.dhall")
let outputFile = Text.unpack (prefix <> "B.dhall")
inputText <- Text.IO.readFile inputFile
parsedInput <- Core.throws (Parser.exprFromText mempty inputText)
actualExpression <- Freeze.freezeExpression (Turtle.encodeString freezeDirectory) AllImports Cache parsedInput
let actualText = Core.pretty actualExpression <> "\n"
expectedText <- Text.IO.readFile outputFile
let message = "The linted expression did not match the expected output"
Tasty.HUnit.assertEqual message expectedText actualText