diff --git a/aeson.cabal b/aeson.cabal index 4f14e8fa9..717b26a7f 100644 --- a/aeson.cabal +++ b/aeson.cabal @@ -163,6 +163,7 @@ test-suite aeson-tests PropertyRTFunctors PropertyTH PropUtils + Regression.Issue571 Regression.Issue967 SerializationFormatSpec Types diff --git a/tests/Regression/Issue571.hs b/tests/Regression/Issue571.hs new file mode 100644 index 000000000..f3891288c --- /dev/null +++ b/tests/Regression/Issue571.hs @@ -0,0 +1,23 @@ +{-# LANGUAGE OverloadedStrings, DeriveGeneric #-} +module Regression.Issue571 (issue571) where + +import Test.Tasty (TestTree) +import Test.Tasty.HUnit (testCase, (@?=)) +import GHC.Generics (Generic) + +import Data.Aeson + +data F = F + { a :: Maybe Int + , b :: Maybe Int + } + deriving (Eq, Show, Generic) + +instance FromJSON F where + parseJSON = genericParseJSON defaultOptions { omitNothingFields = False } -- default + +issue571 :: TestTree +issue571 = testCase "issue571" $ do + -- the Maybe fields can be omitted. + let actual = decode "{}" :: Maybe F + actual @?= Just F { a = Nothing, b = Nothing } diff --git a/tests/UnitTests.hs b/tests/UnitTests.hs index 121a10c95..04bca9dd9 100644 --- a/tests/UnitTests.hs +++ b/tests/UnitTests.hs @@ -72,6 +72,7 @@ import qualified Data.Text.Lazy.Encoding as TLE import qualified ErrorMessages import qualified SerializationFormatSpec import qualified Data.Map as Map -- Lazy! +import Regression.Issue571 import Regression.Issue967 roundTripCamel :: String -> Assertion @@ -826,6 +827,7 @@ tests = testGroup "unit" [ assertEqual "" (object ["foo" .= True]) [aesonQQ| {"foo": true } |] ] , monadFixTests + , issue571 , issue967 , testCase "KeyMap.insertWith" $ do KM.insertWith (-) "a" 2 (KM.fromList [("a", 1)]) @?= KM.fromList [("a",1 :: Int)]