@@ -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
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
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
320caseEncodeDecodeStrings :: Assertion
333caseEncodeDecodeStrings :: Assertion
321caseEncodeDecodeStrings = do
334caseEncodeDecodeStrings = do
322 let out = D.decode $ D.encode sample
335 let out = D.decode $ D.encode sample