@@ -3,6 +3,7 @@
3{-# LANGUAGE ScopedTypeVariables #-}
3{-# LANGUAGE ScopedTypeVariables #-}
4{-# LANGUAGE OverloadedStrings #-}
4{-# LANGUAGE OverloadedStrings #-}
5{-# LANGUAGE TemplateHaskell #-}
5{-# LANGUAGE TemplateHaskell #-}
6+{-# LANGUAGE TupleSections #-}
7module Data.YamlSpec (main, spec) where
8module Data.YamlSpec (main, spec) where
@@ -29,6 +30,7 @@ import qualified Data.HashMap.Strict as M
29import qualified Data.Text as T
30import qualified Data.Text as T
30import Data.Aeson.TH
31import Data.Aeson.TH
31import Data.Text (Text)
32import Data.Text (Text)
33+import Data.Text.Encoding (decodeUtf8)
32import Data.Vector (Vector)
34import Data.Vector (Vector)
33import qualified Data.Vector as V
35import qualified Data.Vector as V
34import Data.HashMap.Strict (HashMap)
36import Data.HashMap.Strict (HashMap)
@@ -166,6 +168,19 @@ spec = do
167 it "truncates files" caseTruncatesFiles
169 it "truncates files" caseTruncatesFiles
171+ it "quoting keys #137" $ do
172+ let keys = T.words "true false NO YES 1.2 1e5 null"
173+ bs = D.encode $ M.fromList $ map (, ()) keys
174+ text = decodeUtf8 bs
175+ forM_ keys $ \key -> do
176+ let quoted = T.concat ["'", key, "'"]
177+ unless (quoted `T.isInfixOf` text) $ error $ concat
178+ [ "Could not find quoted key: "
170specialStrings :: [T.Text]
185specialStrings :: [T.Text]
171specialStrings =
186specialStrings =