git.iko.soy/servant-quickcheck
on master help sign in
Cleanup
0682e35Julian K. Arni
src/Servant/QuickCheck.hs+3−3
@@ -69,10 +69,10 @@ module Servant.QuickCheck
69
69
70 ) where
70 ) where
71
71
72+import Data.Proxy (Proxy (..))
73+import Servant.Client (BaseUrl (..), Scheme (..))
72import Servant.QuickCheck.Internal
74import Servant.QuickCheck.Internal
73−import Servant.Client (BaseUrl(..), Scheme(..))
74−import Test.QuickCheck (Args(..), stdArgs)
75+import Test.QuickCheck (Args (..), stdArgs)
75−import Data.Proxy (Proxy(..))
76
76
77-- | QuickCheck @Args@ with 1000 rather than 100 test cases.
77-- | QuickCheck @Args@ with 1000 rather than 100 test cases.
78--
78--
src/Servant/QuickCheck/Internal.hs+4−4
@@ -1,7 +1,7 @@
1module Servant.QuickCheck.Internal (module X) where
1module Servant.QuickCheck.Internal (module X) where
2
2
3+import Servant.QuickCheck.Internal.Equality as X
4+import Servant.QuickCheck.Internal.ErrorTypes as X
3import Servant.QuickCheck.Internal.HasGenRequest as X
5import Servant.QuickCheck.Internal.HasGenRequest as X
4−import Servant.QuickCheck.Internal.Predicates as X
6+import Servant.QuickCheck.Internal.Predicates as X
5−import Servant.QuickCheck.Internal.QuickCheck as X
7+import Servant.QuickCheck.Internal.QuickCheck as X
6−import Servant.QuickCheck.Internal.Equality as X
7−import Servant.QuickCheck.Internal.ErrorTypes as X
src/Servant/QuickCheck/Internal/Equality.hs+3−3
@@ -1,8 +1,8 @@
1module Servant.QuickCheck.Internal.Equality where
1module Servant.QuickCheck.Internal.Equality where
2
2
3−import Data.Function (on)
3+import Data.Function (on)
4−import Network.HTTP.Client (Response, responseBody)
4+import Network.HTTP.Client (Response, responseBody)
5−import Prelude.Compat
5+import Prelude.Compat
6
6
7newtype ResponseEquality b
7newtype ResponseEquality b
8 = ResponseEquality { getResponseEquality :: Response b -> Response b -> Bool }
8 = ResponseEquality { getResponseEquality :: Response b -> Response b -> Bool }
src/Servant/QuickCheck/Internal/ErrorTypes.hs+22−15
@@ -10,6 +10,28 @@ import Network.HTTP.Types (Header, statusCode)
10import Prelude.Compat
10import Prelude.Compat
11import Text.PrettyPrint
11import Text.PrettyPrint
12
12
13+data PredicateFailure
14+ = PredicateFailure T.Text (Maybe C.Request) (C.Response LBS.ByteString)
15+ deriving (Generic)
16+
17+instance Exception ServerEqualityFailure where
18+
19+instance Show PredicateFailure where
20+ show = render . prettyPredicateFailure
21+
22+
23+data ServerEqualityFailure
24+ = ServerEqualityFailure C.Request (C.Response LBS.ByteString) (C.Response LBS.ByteString)
25+ deriving (Generic)
26+
27+instance Show ServerEqualityFailure where
28+ show = render . prettyServerEqualityFailure
29+
30+
31+instance Exception PredicateFailure where
32+
33+-- * Pretty printing
34+
13prettyHeaders :: [Header] -> Doc
35prettyHeaders :: [Header] -> Doc
14prettyHeaders hdrs = vcat $ prettyHdr <$> hdrs
36prettyHeaders hdrs = vcat $ prettyHdr <$> hdrs
15 where
37 where
@@ -35,12 +57,6 @@ prettyResp r =
35 $$ text "Body:" <+> (nest 5 $ text . cs $ C.responseBody r))
57 $$ text "Body:" <+> (nest 5 $ text . cs $ C.responseBody r))
36
58
37
59
38−-- The error that occurred.
39−data PredicateFailure = PredicateFailure T.Text (Maybe C.Request) (C.Response LBS.ByteString)
40− deriving (Generic)
41−
42−data ServerEqualityFailure = ServerEqualityFailure C.Request (C.Response LBS.ByteString) (C.Response LBS.ByteString)
43− deriving (Generic)
44
60
45prettyServerEqualityFailure :: ServerEqualityFailure -> Doc
61prettyServerEqualityFailure :: ServerEqualityFailure -> Doc
46prettyServerEqualityFailure (ServerEqualityFailure req resp1 resp2) =
62prettyServerEqualityFailure (ServerEqualityFailure req resp1 resp2) =
@@ -61,12 +77,3 @@ prettyPredicateFailure (PredicateFailure predicate req resp) =
61 Nothing -> text ""
77 Nothing -> text ""
62 Just v -> prettyReq v
78 Just v -> prettyReq v
63
79
64−instance Show ServerEqualityFailure where
65− show = render . prettyServerEqualityFailure
66−
67−instance Exception ServerEqualityFailure where
68−
69−instance Show PredicateFailure where
70− show = render . prettyPredicateFailure
71−
72−instance Exception PredicateFailure where
src/Servant/QuickCheck/Internal/HasGenRequest.hs+14−14
@@ -1,20 +1,20 @@
1{-# LANGUAGE PolyKinds #-}
1{-# LANGUAGE PolyKinds #-}
2module Servant.QuickCheck.Internal.HasGenRequest where
2module Servant.QuickCheck.Internal.HasGenRequest where
3
3
4−import Data.Default.Class (def)
4+import Data.Default.Class (def)
5−import Data.Monoid ((<>))
5+import Data.Monoid ((<>))
6−import Data.String (fromString)
6+import Data.String (fromString)
7−import Data.String.Conversions (cs)
7+import Data.String.Conversions (cs)
8−import GHC.TypeLits (KnownSymbol, Nat, symbolVal)
8+import GHC.TypeLits (KnownSymbol, Nat, symbolVal)
9−import Network.HTTP.Client (Request, RequestBody (..), host,
9+import Network.HTTP.Client (Request, RequestBody (..), host, method, path,
10− method, path, port, queryString,
11− requestBody, requestHeaders, secure)
10+ port, queryString, requestBody, requestHeaders,
11+ secure)
12−import Network.HTTP.Media (renderHeader)
12+import Network.HTTP.Media (renderHeader)
13−import Prelude.Compat
13+import Prelude.Compat
14−import Servant
14+import Servant
15−import Servant.API.ContentTypes (AllMimeRender (..))
15+import Servant.API.ContentTypes (AllMimeRender (..))
16−import Servant.Client (BaseUrl (..), Scheme (..))
16+import Servant.Client (BaseUrl (..), Scheme (..))
17−import Test.QuickCheck (Arbitrary (..), Gen, elements, oneof)
17+import Test.QuickCheck (Arbitrary (..), Gen, elements, oneof)
18
18
19
19
20class HasGenRequest a where
20class HasGenRequest a where
src/Servant/QuickCheck/Internal/Predicates.hs+6−6
@@ -1,11 +1,10 @@
1module Servant.QuickCheck.Internal.Predicates where
1module Servant.QuickCheck.Internal.Predicates where
2
2
3−import Control.Exception (catch, SomeException, throw)
3+import Control.Exception (SomeException, catch, throw)
4−import Control.Monad (liftM2, guard, ap)
4+import Control.Monad (ap, guard, liftM2)
5import Control.Monad.Reader
5import Control.Monad.Reader
6import Data.Aeson (Object, decode)
6import Data.Aeson (Object, decode)
7import Data.Bifunctor (Bifunctor (..))
7import Data.Bifunctor (Bifunctor (..))
8−import Prelude.Compat
9import qualified Data.ByteString as SBS
8import qualified Data.ByteString as SBS
10import qualified Data.ByteString.Char8 as SBSC
9import qualified Data.ByteString.Char8 as SBSC
11import qualified Data.ByteString.Lazy as LBS
10import qualified Data.ByteString.Lazy as LBS
@@ -22,9 +21,10 @@ import Network.HTTP.Client (Manager, Request, Response, httpLbs,
22 responseStatus)
21 responseStatus)
23import Network.HTTP.Media (matchAccept)
22import Network.HTTP.Media (matchAccept)
24import Network.HTTP.Types (methodGet, methodHead, parseMethod,
23import Network.HTTP.Types (methodGet, methodHead, parseMethod,
25− renderStdMethod, status200, status201,
24+ renderStdMethod, status100, status200,
26− status300, status401, status405,
25+ status201, status300, status401,
27− status500, status100)
26+ status405, status500)
27+import Prelude.Compat
28
28
29import Servant.QuickCheck.Internal.ErrorTypes
29import Servant.QuickCheck.Internal.ErrorTypes
30
30
src/Servant/QuickCheck/Internal/QuickCheck.hs+5−4
@@ -1,6 +1,8 @@
1{-# LANGUAGE RecordWildCards #-}
1{-# LANGUAGE RecordWildCards #-}
2module Servant.QuickCheck.Internal.QuickCheck where
2module Servant.QuickCheck.Internal.QuickCheck where
3
3
4+import Control.Concurrent (modifyMVar_, newMVar, readMVar)
5+import Control.Monad (unless)
4import qualified Data.ByteString.Lazy as LBS
6import qualified Data.ByteString.Lazy as LBS
5import Data.Proxy (Proxy)
7import Data.Proxy (Proxy)
6import Data.String (IsString (..))
8import Data.String (IsString (..))
@@ -16,15 +18,14 @@ import System.IO.Unsafe (unsafePerformIO)
16import Test.Hspec (Expectation, expectationFailure)
18import Test.Hspec (Expectation, expectationFailure)
17import Test.QuickCheck (Args (..), Result (..),
19import Test.QuickCheck (Args (..), Result (..),
18 quickCheckWithResult)
20 quickCheckWithResult)
19−import Test.QuickCheck.Monadic (assert, forAllM, monadicIO, run, monitor)
21+import Test.QuickCheck.Monadic (assert, forAllM, monadicIO, monitor,
22+ run)
20import Test.QuickCheck.Property (counterexample)
23import Test.QuickCheck.Property (counterexample)
21−import Control.Monad (unless)
22−import Control.Concurrent (newMVar, modifyMVar_, readMVar)
23
24
24import Servant.QuickCheck.Internal.Equality
25import Servant.QuickCheck.Internal.Equality
26+import Servant.QuickCheck.Internal.ErrorTypes
25import Servant.QuickCheck.Internal.HasGenRequest
27import Servant.QuickCheck.Internal.HasGenRequest
26import Servant.QuickCheck.Internal.Predicates
28import Servant.QuickCheck.Internal.Predicates
27−import Servant.QuickCheck.Internal.ErrorTypes
28
29
29
30
30-- | Start a servant application on an open port, run the provided function,
31-- | Start a servant application on an open port, run the provided function,
test/Servant/QuickCheck/InternalSpec.hs+1−2
@@ -7,8 +7,7 @@ import Prelude.Compat
7import Servant
7import Servant
8import Servant.API.Internal.Test.ComprehensiveAPI (comprehensiveAPI)
8import Servant.API.Internal.Test.ComprehensiveAPI (comprehensiveAPI)
9import Test.Hspec (Spec, context, describe, it,
9import Test.Hspec (Spec, context, describe, it,
10− pending, shouldBe,
11− shouldContain)
10+ shouldBe, shouldContain)
12import Test.Hspec.Core.Spec (Arg, Example, Result (..),
11import Test.Hspec.Core.Spec (Arg, Example, Result (..),
13 defaultParams,
12 defaultParams,
14 evaluateExample)
13 evaluateExample)