@@ -34,6 +34,8 @@ import Data.Vector (Vector)
34import qualified Data.Vector as V
34import qualified Data.Vector as V
35import Data.HashMap.Strict (HashMap)
35import Data.HashMap.Strict (HashMap)
36import qualified Data.HashMap.Strict as HM
36import qualified Data.HashMap.Strict as HM
37+import System.IO (hClose)
38+import System.IO.Temp (withSystemTempFile)
38data TestJSON = TestJSON
40data TestJSON = TestJSON
39 { string :: Text
41 { string :: Text
@@ -152,6 +154,8 @@ spec = do
153 it "preserves Scientific precision" casePreservesScientificPrecision
155 it "preserves Scientific precision" casePreservesScientificPrecision
157+ it "truncates files" caseTruncatesFiles
156specialStrings :: [T.Text]
160specialStrings :: [T.Text]
157specialStrings =
161specialStrings =
@@ -502,3 +506,12 @@ casePreservesScientificPrecision = do
502 -- results, because of <https://github.com/bos/text/issues/34>.
506 -- results, because of <https://github.com/bos/text/issues/34>.
503 D.decodeEither "x: 9.78159610558926e-5" @?= Right (object
507 D.decodeEither "x: 9.78159610558926e-5" @?= Right (object
504 [ "x" .= D.Number (read "9.78159610558926e-5") ])
508 [ "x" .= D.Number (read "9.78159610558926e-5") ])
510+caseTruncatesFiles :: Assertion
511+caseTruncatesFiles = withSystemTempFile "truncate.yaml" $ \fp h -> do
512+ replicateM_ 500 $ B8.hPut h "HELLO WORLD!!!!!\n"
514+ let val = object ["hello" .= ("world" :: String)]
516+ res <- D.decodeFileEither fp
517+ either (Left . show) Right res `shouldBe` Right val