61 lines
1.8 KiB
Haskell
61 lines
1.8 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE OverloadedLists #-}
|
|
{-# LANGUAGE RecordWildCards #-}
|
|
|
|
module Main where
|
|
|
|
import Data.Monoid ((<>))
|
|
import Dhall.JSON.Yaml (Options(..))
|
|
import Test.Tasty (TestTree)
|
|
|
|
import qualified Data.ByteString
|
|
import qualified Data.Text.IO
|
|
import qualified Dhall.JSON.Yaml
|
|
import qualified Dhall.Yaml
|
|
import qualified GHC.IO.Encoding
|
|
import qualified Test.Tasty
|
|
import qualified Test.Tasty.ExpectedFailure
|
|
import qualified Test.Tasty.HUnit
|
|
|
|
main :: IO ()
|
|
main = do
|
|
GHC.IO.Encoding.setLocaleEncoding GHC.IO.Encoding.utf8
|
|
|
|
Test.Tasty.defaultMain testTree
|
|
|
|
testTree :: TestTree
|
|
testTree =
|
|
Test.Tasty.testGroup "dhall-yaml"
|
|
[ testDhallToYaml
|
|
Dhall.JSON.Yaml.defaultOptions
|
|
"./tasty/data/normal"
|
|
, testDhallToYaml
|
|
Dhall.JSON.Yaml.defaultOptions
|
|
"./tasty/data/special"
|
|
, Test.Tasty.ExpectedFailure.ignoreTestBecause "#1516" $
|
|
testDhallToYaml
|
|
(Dhall.JSON.Yaml.defaultOptions { quoted = True })
|
|
"./tasty/data/quoted"
|
|
]
|
|
|
|
testDhallToYaml :: Options -> String -> TestTree
|
|
testDhallToYaml options prefix =
|
|
Test.Tasty.testGroup prefix
|
|
[ testCase Dhall.Yaml.dhallToYaml "HsYAML"
|
|
, testCase Dhall.JSON.Yaml.dhallToYaml "aeson-yaml"
|
|
]
|
|
where
|
|
testCase dhallToYaml s = Test.Tasty.HUnit.testCase s $ do
|
|
let inputFile = prefix <> ".dhall"
|
|
let outputFile = prefix <> ".yaml"
|
|
|
|
text <- Data.Text.IO.readFile inputFile
|
|
|
|
actualValue <- dhallToYaml options (Just inputFile) text
|
|
|
|
expectedValue <- Data.ByteString.readFile outputFile
|
|
|
|
let message = "Conversion to YAML did not generate the expected output"
|
|
|
|
Test.Tasty.HUnit.assertEqual message expectedValue actualValue
|