on master help sign in
wai-mega tests
ee7a0b4Greg Weber
test/anew file+1
@@ -0,0 +1 @@
1+../wai-app-static/test/a
test/main.hsnew file+8
@@ -0,0 +1,8 @@
1+import qualified WaiAppStaticTest
2+import qualified WaiExtraTest
3+import Test.Hspec.Monadic
4+
5+main :: IO a
6+main = hspecX $ do
7+ WaiAppStaticTest.specs
8+ WaiExtraTest.specs
test/requestsnew file+1
@@ -0,0 +1 @@
1+../wai-extra/test/requests
test/testnew file+1
@@ -0,0 +1 @@
1+../wai-app-static/test
test/wai-app-staticnew file+1
@@ -0,0 +1 @@
1+../wai-app-static/test
test/wai-extranew file+1
@@ -0,0 +1 @@
1+../wai-extra/test
wai-app-static/tests/runtests.hs → wai-app-static/test/WaiAppStaticTest.hsrenamed+8−7
@@ -1,4 +1,6 @@
1{-# LANGUAGE OverloadedStrings, NoMonomorphismRestriction #-}
1{-# LANGUAGE OverloadedStrings, NoMonomorphismRestriction #-}
2+module WaiAppStaticTest (specs) where
3+
2import Network.Wai.Application.Static
4import Network.Wai.Application.Static
3
5
4import Test.Hspec.Monadic
6import Test.Hspec.Monadic
@@ -43,11 +45,10 @@ setRawPathInfo r rawPinfo =
43 let pInfo = T.split (== '/') $ TE.decodeUtf8 rawPinfo
45 let pInfo = T.split (== '/') $ TE.decodeUtf8 rawPinfo
44 in r { rawPathInfo = rawPinfo, pathInfo = pInfo }
46 in r { rawPathInfo = rawPinfo, pathInfo = pInfo }
45
47
46−
48+specs :: Specs
47−main :: IO a
49+specs = do
48−main = hspecX $ do
49− let webApp = flip runSession $ staticApp defaultWebAppSettings {ssFolder = fileSystemLookup "tests"}
50+ let webApp = flip runSession $ staticApp defaultWebAppSettings {ssFolder = fileSystemLookup "test"}
50− let fileServerApp = flip runSession $ staticApp defaultFileServerSettings {ssFolder = fileSystemLookup "tests"}
51+ let fileServerApp = flip runSession $ staticApp defaultFileServerSettings {ssFolder = fileSystemLookup "test"}
51
52
52 let etag = "1B2M2Y8AsgTpgAmY7PhCfg=="
53 let etag = "1B2M2Y8AsgTpgAmY7PhCfg=="
53 let file = "a/b"
54 let file = "a/b"
@@ -82,7 +83,7 @@ main = hspecX $ do
82 assertHeader "Location" "../../a/b/c" req
83 assertHeader "Location" "../../a/b/c" req
83
84
84 let absoluteApp = flip runSession $ staticApp $ defaultWebAppSettings {
85 let absoluteApp = flip runSession $ staticApp $ defaultWebAppSettings {
85− ssFolder = fileSystemLookup "tests", ssMkRedirect = \_ u -> S8.append "http://www.example.com" u
86+ ssFolder = fileSystemLookup "test", ssMkRedirect = \_ u -> S8.append "http://www.example.com" u
86 }
87 }
87 it "301 redirect when multiple slashes" $ absoluteApp $
88 it "301 redirect when multiple slashes" $ absoluteApp $
88 flip mapM_ ["/a//b/c", "a//b/c"] $ \path -> do
89 flip mapM_ ["/a//b/c", "a//b/c"] $ \path -> do
@@ -127,7 +128,7 @@ main = hspecX $ do
127
128
128 describe "fileServerApp" $ do
129 describe "fileServerApp" $ do
129 let fileDate = do
130 let fileDate = do
130− stat <- liftIO $ getFileStatus $ "tests/" ++ file
131+ stat <- liftIO $ getFileStatus $ "test/" ++ file
131 return $ formatHTTPDate . epochTimeToHTTPDate $ modificationTime stat
132 return $ formatHTTPDate . epochTimeToHTTPDate $ modificationTime stat
132
133
133 it "directory listing for index" $ fileServerApp $ do
134 it "directory listing for index" $ fileServerApp $ do
wai-app-static/tests/a/b → wai-app-static/test/a/brenamed

The content is the same.

wai-app-static/tests.hsnew file+5
@@ -0,0 +1,5 @@
1+import WaiAppStaticTest (specs)
2+import Test.Hspec.Monadic
3+
4+main :: IO a
5+main = hspecX specs
wai-app-static/wai-app-static.cabal+2−2
@@ -47,8 +47,8 @@ library
47 cpp-options: -DPRINT
47 cpp-options: -DPRINT
48
48
49test-suite runtests
49test-suite runtests
50− hs-source-dirs: tests
50+ hs-source-dirs: test
51− main-is: runtests.hs
51+ main-is: ../tests.hs
52 type: exitcode-stdio-1.0
52 type: exitcode-stdio-1.0
53
53
54 build-depends: base >= 4 && < 5
54 build-depends: base >= 4 && < 5
wai-extra/runtests.hs → wai-extra/test/WaiExtraTest.hsrenamed+20−19
@@ -1,5 +1,7 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
2+module WaiExtraTest (specs) where
3+
2−import Test.Hspec
4+import Test.Hspec.Monadic
3import Test.Hspec.HUnit ()
5import Test.Hspec.HUnit ()
4import Test.HUnit hiding (Test)
6import Test.HUnit hiding (Test)
5
7
@@ -28,13 +30,13 @@ import Control.Monad.IO.Class (liftIO)
28import Data.Maybe (fromMaybe)
30import Data.Maybe (fromMaybe)
29import Network.HTTP.Types (parseSimpleQuery, status200)
31import Network.HTTP.Types (parseSimpleQuery, status200)
30
32
31−main :: IO ()
33+specs :: Specs
32−main = hspecX $ do
34+specs = do
33− describe "Network.Wai.Parse"
35+ describe "Network.Wai.Parse" $ do
34− [ it "parseQueryString" caseParseQueryString
36+ it "parseQueryString" caseParseQueryString
35− , it "parseQueryString with question mark" caseParseQueryStringQM
37+ it "parseQueryString with question mark" caseParseQueryStringQM
36− , it "parseHttpAccept" caseParseHttpAccept
38+ it "parseHttpAccept" caseParseHttpAccept
37− , it "parseRequestBody" caseParseRequestBody
39+ it "parseRequestBody" caseParseRequestBody
38 {-
40 {-
39 , it "findBound" caseFindBound
41 , it "findBound" caseFindBound
40 , it "sinkTillBound" caseSinkTillBound
42 , it "sinkTillBound" caseSinkTillBound
@@ -42,16 +44,15 @@ main = hspecX $ do
42 , it "killCRLF" caseKillCRLF
44 , it "killCRLF" caseKillCRLF
43 , it "takeLine" caseTakeLine
45 , it "takeLine" caseTakeLine
44 -}
46 -}
45− , it "jsonp" caseJsonp
47+ it "jsonp" caseJsonp
46− , it "gzip" caseGzip
48+ it "gzip" caseGzip
47− , it "gzip not for MSIE" caseGzipMSIE
49+ it "gzip not for MSIE" caseGzipMSIE
48− , it "vhost" caseVhost
50+ it "vhost" caseVhost
49− , it "autohead" caseAutohead
51+ it "autohead" caseAutohead
50− , it "method override" caseMethodOverride
52+ it "method override" caseMethodOverride
51− , it "accept override" caseAcceptOverride
53+ it "accept override" caseAcceptOverride
52− , it "dalvik multipart" caseDalvikMultipart
54+ it "dalvik multipart" caseDalvikMultipart
53− , it "debug request body" caseDebugRequestBody
55+ it "debug request body" caseDebugRequestBody
54− ]
55
56
56caseParseQueryString :: Assertion
57caseParseQueryString :: Assertion
57caseParseQueryString = do
58caseParseQueryString = do
@@ -393,7 +394,7 @@ caseDalvikMultipart = do
393 let request' = defaultRequest
394 let request' = defaultRequest
394 { requestHeaders = headers
395 { requestHeaders = headers
395 }
396 }
396− (params, files) <- run_ $ enumFile "test/dalvik-request" $$ parseRequestBody lbsSink request'
397+ (params, files) <- run_ $ enumFile "test/requests/dalvik-request" $$ parseRequestBody lbsSink request'
397 lookup "scannedTime" params @?= Just "1.298590056748E9"
398 lookup "scannedTime" params @?= Just "1.298590056748E9"
398 lookup "geoLong" params @?= Just "0"
399 lookup "geoLong" params @?= Just "0"
399 lookup "geoLat" params @?= Just "0"
400 lookup "geoLat" params @?= Just "0"
wai-extra/test/dalvik-request → wai-extra/test/requests/dalvik-requestrenamed

Binary file not shown.

wai-extra/tests.hsnew file+5
@@ -0,0 +1,5 @@
1+import Test.Hspec.Monadic
2+import qualified WaiExtraTest
3+
4+main :: IO ()
5+main = hspecX WaiExtraTest.specs
wai-extra/wai-extra.cabal+5−5
@@ -12,8 +12,8 @@ Build-Type: Simple
12Cabal-Version: >=1.8
12Cabal-Version: >=1.8
13Stability: Stable
13Stability: Stable
14extra-source-files:
14extra-source-files:
15− runtests.hs
15+ tests.hs
16− test/dalvik-request
16+ test/requests/dalvik-request
17 test/json
17 test/json
18 test/test.html
18 test/test.html
19 test/sample.hs
19 test/sample.hs
@@ -52,9 +52,9 @@ Library
52 ghc-options: -Wall
52 ghc-options: -Wall
53
53
54
54
55−test-suite runtests
55+test-suite tests
56− hs-source-dirs: .
56+ hs-source-dirs: test
57− main-is: runtests.hs
57+ main-is: ../tests.hs
58 type: exitcode-stdio-1.0
58 type: exitcode-stdio-1.0
59
59
60 build-depends: base >= 4 && < 5
60 build-depends: base >= 4 && < 5
wai-mega.cabal+32−1
@@ -9,7 +9,7 @@ Maintainer: michael@snoyman.com
9Homepage: https://github.com/yesodweb/wai
9Homepage: https://github.com/yesodweb/wai
10Category: Web
10Category: Web
11Build-Type: Simple
11Build-Type: Simple
12−Cabal-Version: >=1.6
12+Cabal-Version: >= 1.8
13Stability: Stable
13Stability: Stable
14
14
15Source-repository head
15Source-repository head
@@ -138,3 +138,34 @@ Library
138 Network.Wai.Parse
138 Network.Wai.Parse
139
139
140 ghc-options: -Wall
140 ghc-options: -Wall
141+
142+test-suite test
143+ hs-source-dirs:
144+ test
145+ test/wai-app-static
146+ test/wai-extra
147+
148+ main-is: main.hs
149+ type: exitcode-stdio-1.0
150+
151+ build-depends: base >= 4 && < 5
152+ , wai-mega
153+ , hspec >= 0.8 && < 0.10
154+ , HUnit
155+ , unix-compat >= 0.2 && < 0.3
156+ , time >= 1.1.4 && < 1.4
157+ , old-locale >= 1.0.0.2 && < 1.1
158+ , http-date
159+ , http-types
160+ , network
161+ , bytestring
162+ , text
163+ , transformers
164+ , enumerator
165+ , zlib
166+ , directory
167+ , zlib-bindings
168+ , blaze-builder-enumerator >= 0.2 && < 0.3
169+ , blaze-builder >= 0.2.1.4 && < 0.4
170+ , zlib-enum
171+ , data-default