potoki-cereal 0.3 → 0.3.0.1
raw patch · 3 files changed
+77/−42 lines, 3 filesdep +QuickCheckdep +directorydep +potokidep ~potoki-corePVP ok
version bump matches the API change (PVP)
Dependencies added: QuickCheck, directory, potoki, potoki-cereal, quickcheck-instances, rerebase, tasty, tasty-hunit, tasty-quickcheck
Dependency ranges changed: potoki-core
API changes (from Hackage documentation)
Files
- library/Potoki/Cereal/Transform.hs +4/−4
- potoki-cereal.cabal +33/−38
- test/Main.hs +40/−0
library/Potoki/Cereal/Transform.hs view
@@ -31,10 +31,10 @@ {-# INLINE runPartialDecoder #-} runPartialDecoder :: forall decoded. (ByteString -> C.Result decoded) -> Transform ByteString (Either Text decoded) runPartialDecoder inputToResult =- Transform $ \ inputFetch -> return $ A.Fetch $ do- unconsumedRef <- newIORef mempty- finishedRef <- newIORef False- fetchParsed inputFetch finishedRef unconsumedRef+ Transform $ \ inputFetch -> do+ unconsumedRef <- liftIO $ newIORef mempty+ finishedRef <- liftIO $ newIORef False+ return $ A.Fetch $ fetchParsed inputFetch finishedRef unconsumedRef where fetchParsed :: A.Fetch ByteString -> IORef Bool -> IORef ByteString -> IO (Maybe (Either Text decoded)) fetchParsed (A.Fetch inputFetchIO) finishedRef unconsumedRef =
potoki-cereal.cabal view
@@ -1,43 +1,21 @@-name:- potoki-cereal-version:- 0.3-synopsis:- Streaming serialization-category:- Potoki, Streaming-homepage:- https://github.com/metrix-ai/potoki-cereal-bug-reports:- https://github.com/metrix-ai/potoki-cereal/issues-author:- Nikita Volkov <nikita.y.volkov@mail.ru>-maintainer:- Metrix.AI Ninjas <ninjas@metrix.ai>-copyright:- (c) 2017, Metrix.AI-license:- MIT-license-file:- LICENSE-build-type:- Simple-cabal-version:- >=1.10--source-repository head- type:- git- location:- git://github.com/metrix-ai/potoki-cereal.git+name: potoki-cereal+version: 0.3.0.1+synopsis: Streaming serialization+category: Potoki, Streaming+homepage: https://github.com/metrix-ai/potoki-cereal+bug-reports: https://github.com/metrix-ai/potoki-cereal/issues+author: Nikita Volkov <nikita.y.volkov@mail.ru>+maintainer: Metrix.AI Tech Team <tech@metrix.ai>+copyright: (c) 2017, Metrix.AI+license: MIT+license-file: LICENSE+build-type: Simple+cabal-version: >=1.10 library- hs-source-dirs:- library- default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ hs-source-dirs: library+ default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples+ default-language: Haskell2010 exposed-modules: Potoki.Cereal.Consume Potoki.Cereal.Produce@@ -53,3 +31,20 @@ cereal >=0.5 && <0.6, potoki-core >=2.2.1 && <2.3, text >=1 && <2++test-suite test+ type: exitcode-stdio-1.0+ hs-source-dirs: test+ default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples+ default-language: Haskell2010+ main-is: Main.hs+ build-depends:+ directory >=1.2 && <2,+ potoki >=2 && <2.1,+ potoki-cereal,+ QuickCheck >=2.8.1 && <3,+ quickcheck-instances >=0.3.11 && <0.4,+ rerebase <2,+ tasty >=0.12 && <2,+ tasty-hunit >=0.9 && <0.11,+ tasty-quickcheck >=0.9 && <0.11
+ test/Main.hs view
@@ -0,0 +1,40 @@+module Main where++import Prelude hiding (choose)+import Test.QuickCheck.Instances+import Test.Tasty+import Test.Tasty.Runners+import Test.Tasty.HUnit+import Test.Tasty.QuickCheck+import qualified Test.QuickCheck as QuickCheck+import qualified Test.QuickCheck.Property as QuickCheck+import qualified Potoki.Cereal.Consume as Consume+import qualified Potoki.Cereal.Produce as Produce+import qualified Potoki.Cereal.Transform as Transform+import qualified Potoki.Consume as Consume+import qualified Potoki.Produce as Produce+import qualified Potoki.Transform as Transform+import qualified Potoki.IO as IO+import qualified System.Directory as IO+++main =+ defaultMain $+ testGroup "All" $+ [+ testProperty "" $ let+ workDir = "dist/test-temp"+ file = workDir <> "/list"+ gen :: Gen [Int]+ gen = do+ length <- choose (0, 100)+ replicateM length (choose (-100, 100))+ in forAll gen $ \ list -> unsafePerformIO $ do+ IO.createDirectoryIfMissing True workDir+ raiseIOException =<< IO.produceAndConsume (Produce.list list) (Consume.encodeToFile file)+ restoredList <- raiseText =<< raiseIOException =<< IO.produceAndConsume (Produce.fileDecoded file) (right' (right' Consume.list))+ return (list === restoredList)+ ]++raiseIOException = either throwIO return+raiseText = either (fail . show) return