io-streams 1.5.0.1 → 1.5.1.0
raw patch · 4 files changed
+47/−27 lines, 4 filesdep ~attoparsecdep ~basedep ~bytestring
Dependency ranges changed: attoparsec, base, bytestring, bytestring-builder, network, primitive, process, text, time, transformers, vector, zlib-bindings
Files
- changelog.md +3/−0
- io-streams.cabal +17/−18
- test/System/IO/Streams/Tests/Concurrent.hs +1/−1
- test/System/IO/Streams/Tests/Network.hs +26/−8
changelog.md view
@@ -1,3 +1,6 @@+# Version 1.5.1.0+Fix [stackage#4312](https://github.com/commercialhaskell/stackage/issues/4312): Relax `network` upper bound+ # Version 1.5.0.1 Bugfix: `concurrentMerge []` should not block forever, even if this case is pathological.
io-streams.cabal view
@@ -1,5 +1,5 @@ Name: io-streams-Version: 1.5.0.1+Version: 1.5.1.0 License: BSD3 License-file: LICENSE Category: Data, Network, IO-Streams@@ -7,7 +7,8 @@ Maintainer: Gregory Collins <greg@gregorycollins.net> Cabal-version: >= 1.10 Synopsis: Simple, composable, and easy-to-use stream I/O-Tested-With: GHC==7.8.4, GHC==7.8.3, GHC==7.6.3, GHC==7.4.2+Tested-With: GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3,+ GHC==8.0.2, GHC==8.2.2, GHC==8.4.3, GHC==8.6.3 Bug-Reports: https://github.com/snapframework/io-streams/issues Description: /Overview/@@ -92,8 +93,6 @@ ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -fno-warn-unused-do-bind - ghc-prof-options: -auto-all- Exposed-modules: System.IO.Streams, System.IO.Streams.Attoparsec, System.IO.Streams.Attoparsec.ByteString,@@ -123,11 +122,11 @@ attoparsec >= 0.10 && <0.14, bytestring >= 0.9 && <0.11, bytestring-builder >= 0.10 && <0.11,- network >= 2.3 && <2.7,+ network >= 2.3 && <3.1, primitive >= 0.2 && <0.7, process >= 1.1 && <1.7, text >= 0.10 && <1.3,- time >= 1.2 && <1.9,+ time >= 1.2 && <1.10, transformers >= 0.2 && <0.6, vector >= 0.7 && <0.13, zlib-bindings >= 0.1 && <0.2@@ -202,22 +201,22 @@ if !os(windows) && !flag(NoInteractiveTests) cpp-options: -DENABLE_PROCESS_TESTS - Build-depends: base >= 4 && <5,- attoparsec >= 0.10 && <0.14,- bytestring >= 0.9 && <0.11,- bytestring-builder >= 0.10 && <0.11,+ Build-depends: base,+ attoparsec,+ bytestring,+ bytestring-builder, deepseq >= 1.2 && <1.5, directory >= 1.1 && <2, filepath >= 1.2 && <2, mtl >= 2 && <3,- network >= 2.3 && <2.7,- primitive >= 0.2 && <0.7,- process >= 1.1 && <1.7,- text >= 0.10 && <1.3,- time >= 1.2 && <1.9,- transformers >= 0.2 && <0.6,- vector >= 0.7 && <0.13,- zlib-bindings >= 0.1 && <0.2,+ network,+ primitive,+ process,+ text,+ time,+ transformers,+ vector,+ zlib-bindings, HUnit >= 1.2 && <2, QuickCheck >= 2.3.0.2 && <3,
test/System/IO/Streams/Tests/Concurrent.hs view
@@ -47,7 +47,7 @@ chans inputs <- mapM Streams.chanToInput chans resultMVar <- newEmptyMVar- forkIO (Streams.concurrentMerge inputs >>= Streams.toList+ _ <- forkIO (Streams.concurrentMerge inputs >>= Streams.toList >>= putMVar resultMVar) putMVar firstMVar 0 result <- takeMVar resultMVar
test/System/IO/Streams/Tests/Network.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE CPP #-} module System.IO.Streams.Tests.Network (tests) where @@ -13,6 +14,10 @@ import Test.Framework import Test.Framework.Providers.HUnit import Test.HUnit hiding (Test)+#if MIN_VERSION_network(2,7,0)+#else+import Data.List (intercalate)+#endif ------------------------------------------------------------------------------ import qualified System.IO.Streams.Internal as Streams import qualified System.IO.Streams.Internal.Network as Streams@@ -32,10 +37,23 @@ assertEqual "ok" (Just ()) x where+ -- compats+#if MIN_VERSION_network(2,7,0)+ mkAddr = return . N.tupleToHostAddress+ defaultPort = N.defaultPort+ close = N.close+ bind = N.bind+#else+ mkAddr (o1,o2,o3,o4) = N.inet_addr . intercalate "." $ map show [o1,o2,o3,o4]+ defaultPort = N.aNY_PORT+ close = N.sClose+ bind = N.bindSocket+#endif+ go = do portMVar <- newEmptyMVar resultMVar <- newEmptyMVar- forkIO $ client portMVar resultMVar+ _ <- forkIO $ client portMVar resultMVar server portMVar l <- takeMVar resultMVar assertEqual "testSocket" l ["ok"]@@ -43,28 +61,28 @@ client mvar resultMVar = do port <- takeMVar mvar sock <- N.socket N.AF_INET N.Stream N.defaultProtocol- addr <- N.inet_addr "127.0.0.1"+ addr <- mkAddr (127, 0, 0, 1) let saddr = N.SockAddrInet port addr N.connect sock saddr (is, os) <- Streams.socketToStreams sock Streams.fromList ["", "ok"] >>= Streams.connectTo os N.shutdown sock N.ShutdownSend Streams.toList is >>= putMVar resultMVar- N.sClose sock+ close sock server mvar = do sock <- N.socket N.AF_INET N.Stream N.defaultProtocol- addr <- N.inet_addr "127.0.0.1"- let saddr = N.SockAddrInet N.aNY_PORT addr- N.bindSocket sock saddr+ addr <- mkAddr (127, 0, 0, 1)+ let saddr = N.SockAddrInet defaultPort addr+ bind sock saddr N.listen sock 5 port <- N.socketPort sock putMVar mvar port (csock, _) <- N.accept sock (is, os) <- Streams.socketToStreams csock Streams.toList is >>= flip Streams.writeList os- N.sClose csock- N.sClose sock+ close csock+ close sock testSocketWithError :: Test testSocketWithError = testCase "network/socket-error" $ N.withSocketsDo $ do