Hoogle patch for WAI 3.0

This commit is contained in:
Michael Snoyman 2014-06-09 15:27:34 +03:00
parent 583e11f517
commit b98f8f1f15
2 changed files with 58 additions and 70 deletions

View File

@ -1,70 +0,0 @@
diff -ru orig/CHANGES.txt new/CHANGES.txt
--- orig/CHANGES.txt 2014-04-03 10:49:26.498200538 +0300
+++ new/CHANGES.txt 2014-04-03 10:49:26.000000000 +0300
@@ -1,5 +1,6 @@
Changelog for Hoogle
+ #57, support QuickCheck-2.7
4.2.29
#55, if reading as UTF8 fails, explicitly try Latin1
Add QuickCheck as a dependency
diff -ru orig/hoogle.cabal new/hoogle.cabal
--- orig/hoogle.cabal 2014-04-03 10:49:26.518200537 +0300
+++ new/hoogle.cabal 2014-04-03 10:49:26.000000000 +0300
@@ -46,6 +46,7 @@
binary,
bytestring >= 0.9,
conduit >= 0.2,
+ resourcet,
parsec >= 2.1,
deepseq >= 1.1,
text >= 0.11,
@@ -145,6 +146,7 @@
transformers >= 0.2,
uniplate >= 1.6,
conduit >= 0.2,
+ resourcet,
parsec >= 2.1,
wai >= 1.1,
warp >= 1.1,
diff -ru orig/src/General/Web.hs new/src/General/Web.hs
--- orig/src/General/Web.hs 2014-04-03 10:49:26.510200537 +0300
+++ new/src/General/Web.hs 2014-04-03 10:49:26.000000000 +0300
@@ -30,7 +30,8 @@
import Blaze.ByteString.Builder(toLazyByteString)
import Data.Conduit.List(consume)
-import Data.Conduit(($$),Flush,runResourceT,Flush(Chunk))
+import Data.Conduit(($$),Flush,Flush(Chunk))
+import Control.Monad.Trans.Resource (runResourceT)
type Args = [(String, String)]
diff -ru orig/src/Test/BWT_FM.hs new/src/Test/BWT_FM.hs
--- orig/src/Test/BWT_FM.hs 2014-04-03 10:49:26.502200538 +0300
+++ new/src/Test/BWT_FM.hs 2014-04-03 10:49:26.000000000 +0300
@@ -3,11 +3,10 @@
module Test.BWT_FM(bwt_fm) where
import Test.General
-import Test.QuickCheck
import General.BurrowsWheeler
bwt_fm = do
compress "tomorrow and tomorrow and tomorrow" === (31,"wwwdd nnoooaatttmmmrrrrrrooo ooo")
decompress (31,"wwwdd nnoooaatttmmmrrrrrrooo ooo") === "tomorrow and tomorrow and tomorrow"
- quickCheck $ \x -> decompress (compress x) == x
+ randCheck $ \x -> decompress (compress x) == x
diff -ru orig/src/Test/General.hs new/src/Test/General.hs
--- orig/src/Test/General.hs 2014-04-03 10:49:26.502200538 +0300
+++ new/src/Test/General.hs 2014-04-03 10:49:26.000000000 +0300
@@ -3,7 +3,7 @@
import Control.Monad
import qualified Data.ByteString as BS
-import Test.QuickCheck
+import Test.QuickCheck(Arbitrary(..), quickCheckWithResult, stdArgs, Testable, Result(..))
instance Arbitrary BS.ByteString where

View File

@ -0,0 +1,58 @@
diff -ru orig/src/General/Web.hs new/src/General/Web.hs
--- orig/src/General/Web.hs 2014-06-09 15:25:38.583521732 +0300
+++ new/src/General/Web.hs 2014-06-09 15:25:38.000000000 +0300
@@ -21,6 +21,9 @@
import General.Base
import System.FilePath
import Network.Wai
+#if MIN_VERSION_wai(3, 0, 0)
+import Data.IORef
+#endif
#if MIN_VERSION_wai(2, 0, 0)
import Network.Wai.Internal
#endif
@@ -46,7 +49,15 @@
responseFlatten :: Response -> IO (Status, ResponseHeaders, LBString)
responseFlatten r = do
-#if MIN_VERSION_wai(2, 0, 0)
+#if MIN_VERSION_wai(3, 0, 0)
+ let (s,hs,withBody) = responseToStream r
+ ref <- newIORef mempty
+ let addChunk builder = modifyIORef ref (<> builder)
+ withBody $ \body -> body addChunk (return ())
+ builder <- readIORef ref
+ let res = toLazyByteString builder
+ return (s,hs,res)
+#elif MIN_VERSION_wai(2, 0, 0)
let (s,hs,withSrc) = responseToSource r
chunks <- withSrc $ \src -> src $$ consume
let res = toLazyByteString $ mconcat [x | Chunk x <- chunks]
diff -ru orig/src/Web/Server.hs new/src/Web/Server.hs
--- orig/src/Web/Server.hs 2014-06-09 15:25:38.575521732 +0300
+++ new/src/Web/Server.hs 2014-06-09 15:25:38.000000000 +0300
@@ -32,14 +32,23 @@
resp <- respArgs q
v <- newMVar ()
putStrLn $ "Starting Hoogle Server on port " ++ show port
- runSettings defaultSettings{settingsOnException=exception, settingsPort=port} $ \r -> liftIO $ do
+ runSettings defaultSettings{settingsOnException=exception, settingsPort=port}
+#if MIN_VERSION_wai(3, 0, 0)
+ $ \r sendResponse -> do
+#else
+ $ \r -> liftIO $ do
+#endif
start <- getCurrentTime
res <- talk resp q r
responseEvaluate res
stop <- getCurrentTime
let t = floor $ diffUTCTime stop start * 1000
withMVar v $ const $ putStrLn $ bsUnpack (rawPathInfo r) ++ bsUnpack (rawQueryString r) ++ " ms:" ++ show t
+#if MIN_VERSION_wai(3, 0, 0)
+ sendResponse res
+#else
return res
+#endif
#if MIN_VERSION_wai(2, 0, 0)