packages feed

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 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