@@ -19,6 +19,7 @@ import Control.Monad
1919import Control.Exception (try, SomeException)
2020import Test.Hspec
2121import Data.Either.Compat
22+import System.Directory (createDirectory)
2223import Test.Mockery.Directory
2324
2425import qualified Data.Yaml as D
@@ -63,6 +64,7 @@ spec = do
6364 describe "Data.Yaml" $ do
6465 it "encode/decode" caseEncodeDecodeData
6566 it "encode/decode file" caseEncodeDecodeFileData
67+ it "encode/decode files with non-ASCII names" caseEncodeDecodeNonAsciiFileData
6668 it "encode/decode strings" caseEncodeDecodeStrings
6769 it "decode invalid file" caseDecodeInvalid
6870 it "processes datatypes" caseDataTypes
@@ -317,6 +319,17 @@ caseEncodeDecodeFileData = withFile "" $ \fp -> do
317319 out <- D.decodeFile fp
318320 out @?= Just sample
319321
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+
320333caseEncodeDecodeStrings :: Assertion
321334caseEncodeDecodeStrings = do
322335 let out = D.decode $ D.encode sample