on master help sign in
Add testcase
8b43126Paolo G. Giarrusso
test/Data/YamlSpec.hs+13
@@ -19,6 +19,7 @@ import Control.Monad
19import Control.Exception (try, SomeException)
19import Control.Exception (try, SomeException)
20import Test.Hspec
20import Test.Hspec
21import Data.Either.Compat
21import Data.Either.Compat
22+import System.Directory (createDirectory)
22import Test.Mockery.Directory
23import Test.Mockery.Directory
23
24
24import qualified Data.Yaml as D
25import qualified Data.Yaml as D
@@ -63,6 +64,7 @@ spec = do
63 describe "Data.Yaml" $ do
64 describe "Data.Yaml" $ do
64 it "encode/decode" caseEncodeDecodeData
65 it "encode/decode" caseEncodeDecodeData
65 it "encode/decode file" caseEncodeDecodeFileData
66 it "encode/decode file" caseEncodeDecodeFileData
67+ it "encode/decode files with non-ASCII names" caseEncodeDecodeNonAsciiFileData
66 it "encode/decode strings" caseEncodeDecodeStrings
68 it "encode/decode strings" caseEncodeDecodeStrings
67 it "decode invalid file" caseDecodeInvalid
69 it "decode invalid file" caseDecodeInvalid
68 it "processes datatypes" caseDataTypes
70 it "processes datatypes" caseDataTypes
@@ -317,6 +319,17 @@ caseEncodeDecodeFileData = withFile "" $ \fp -> do
317 out <- D.decodeFile fp
319 out <- D.decodeFile fp
318 out @?= Just sample
320 out @?= Just sample
319
321
322+caseEncodeDecodeNonAsciiFileData :: Assertion
323+caseEncodeDecodeNonAsciiFileData = do
324+ let mySample = (object ["foo" .= True])
325+ inTempDirectory $ do
326+ createDirectory "accenté"
327+ D.encodeFile "accenté/bar.yaml" mySample
328+ out1 <- D.decodeFile "accenté/bar.yaml"
329+ out1 @?= Just mySample
330+ out2 <- D.decodeFile "test/resources/accenté/foo.yaml"
331+ out2 @?= Just mySample
332+
320caseEncodeDecodeStrings :: Assertion
333caseEncodeDecodeStrings :: Assertion
321caseEncodeDecodeStrings = do
334caseEncodeDecodeStrings = do
322 let out = D.decode $ D.encode sample
335 let out = D.decode $ D.encode sample
test/resources/accenté/foo.yamlnew file+1
@@ -0,0 +1 @@
1+foo: true
yaml.cabal+2
@@ -20,6 +20,7 @@ extra-source-files: c/helper.h
20 test/resources/foo.yaml
20 test/resources/foo.yaml
21 test/resources/bar.yaml
21 test/resources/bar.yaml
22 test/resources/baz.yaml
22 test/resources/baz.yaml
23+ test/resources/accenté/foo.yaml
23 test/resources/loop/foo.yaml
24 test/resources/loop/foo.yaml
24 test/resources/loop/bar.yaml
25 test/resources/loop/bar.yaml
25 README.md
26 README.md
@@ -130,6 +131,7 @@ test-suite spec
130 , text
131 , text
131 , aeson >= 0.7
132 , aeson >= 0.7
132 , unordered-containers
133 , unordered-containers
134+ , directory
133 , vector
135 , vector
134 , resourcet
136 , resourcet
135 , aeson-qq
137 , aeson-qq