@@ -23,10 +23,12 @@ import Test.QuickCheck (Args (..), Property, forAll, Result (
23 quickCheckWithResult, stdArgs)
23 quickCheckWithResult, stdArgs)
24import System.IO.Unsafe (unsafePerformIO)
24import System.IO.Unsafe (unsafePerformIO)
25import Test.QuickCheck.Monadic
25import Test.QuickCheck.Monadic
26+import qualified Data.ByteString.Lazy as BSL
27import Servant.QuickCheck.Internal.HasGenRequest
28import Servant.QuickCheck.Internal.HasGenRequest
28import Servant.QuickCheck.Internal.Predicates
29import Servant.QuickCheck.Internal.Predicates
29import Servant.QuickCheck.Internal.Benchmarking
30import Servant.QuickCheck.Internal.Benchmarking
31+import Servant.QuickCheck.Internal.Equality
32-- | Start a servant application on an open port, run the provided function,
34-- | Start a servant application on an open port, run the provided function,
@@ -49,13 +51,13 @@ withServantServer api server t
49-- Evidently, if the behaviour of the server is expected to be
51-- Evidently, if the behaviour of the server is expected to be
50-- non-deterministic, this function may produce spurious failures
52-- non-deterministic, this function may produce spurious failures
51serversEqual :: HasGenRequest a =>
53serversEqual :: HasGenRequest a =>
52− Proxy a -> BaseUrl -> BaseUrl -> Args -> Expectation
54+ Proxy a -> BaseUrl -> BaseUrl -> Args -> ResponseEquality BSL.ByteString -> Expectation
53−serversEqual api burl1 burl2 args = do
55+serversEqual api burl1 burl2 args req = do
54 let reqs = (\f -> (f burl1, f burl2)) <$> genRequest api
56 let reqs = (\f -> (f burl1, f burl2)) <$> genRequest api
55 r <- quickCheckWithResult args $ monadicIO $ forAllM reqs $ \(req1, req2) -> do
57 r <- quickCheckWithResult args $ monadicIO $ forAllM reqs $ \(req1, req2) -> do
56 resp1 <- run $ httpLbs req1 defManager
58 resp1 <- run $ httpLbs req1 defManager
57 resp2 <- run $ httpLbs req2 defManager
59 resp2 <- run $ httpLbs req2 defManager
58− assert $ resp1 == resp2
60+ assert $ getResponseEquality req resp1 resp2
60 Success {} -> return ()
62 Success {} -> return ()
61 GaveUp { numTests = n } -> expectationFailure $ "Gave up after " ++ show n ++ " tests"
63 GaveUp { numTests = n } -> expectationFailure $ "Gave up after " ++ show n ++ " tests"