Merge pull request #346 from markwright/master

changes for hspec 1.0, include test/main.hs in yesod-test
This commit is contained in:
Michael Snoyman 2012-05-06 05:16:30 -07:00
commit fd2efbde35
17 changed files with 38 additions and 25 deletions

View File

@ -2,4 +2,4 @@ import Test.Hspec
import qualified YesodCoreTest
main :: IO ()
main = hspecX $ descriptions $ YesodCoreTest.specs
main = hspecX $ YesodCoreTest.specs

View File

@ -13,9 +13,9 @@ import qualified YesodCoreTest.WaiSubsite as WaiSubsite
import qualified YesodCoreTest.Redirect as Redirect
import qualified YesodCoreTest.JsLoader as JsLoader
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
specs :: [Specs]
specs :: [UnevaluatedSpec]
specs =
[ cleanPathTest
, exceptionsTest

View File

@ -4,6 +4,7 @@
module YesodCoreTest.Cache (cacheTest, Widget) where
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit()
import Network.Wai
@ -35,7 +36,7 @@ getRootR = do
Nothing <- cacheLookup key
return ()
cacheTest :: [Spec]
cacheTest :: UnevaluatedSpec
cacheTest =
describe "Test.Cache"
[ it "works" works

View File

@ -4,6 +4,7 @@
module YesodCoreTest.CleanPath (cleanPathTest, Widget) where
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit()
import Yesod.Core hiding (Request)
@ -62,7 +63,7 @@ getBarR, getPlainR :: Handler RepPlain
getBarR = return $ RepPlain "bar"
getPlainR = return $ RepPlain "plain"
cleanPathTest :: [Spec]
cleanPathTest :: UnevaluatedSpec
cleanPathTest =
describe "Test.CleanPath"
[ it "remove trailing slash" removeTrailingSlash

View File

@ -5,6 +5,7 @@ module YesodCoreTest.ErrorHandling
) where
import Yesod.Core
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit()
import Network.Wai
import Network.Wai.Test
@ -52,7 +53,7 @@ postAfterRunRequestBodyR = do
_ <- error $ show x
getHomeR
errorHandlingTest :: [Spec]
errorHandlingTest :: UnevaluatedSpec
errorHandlingTest = describe "Test.ErrorHandling"
[ it "says not found" caseNotFound
, it "says 'There was an error' before runRequestBody" caseBefore

View File

@ -4,6 +4,7 @@
module YesodCoreTest.Exceptions (exceptionsTest, Widget) where
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit ()
import Yesod.Core hiding (Request)
@ -30,7 +31,7 @@ getRedirR = do
setHeader "foo" "bar"
redirectWith status301 RootR
exceptionsTest :: [Spec]
exceptionsTest :: UnevaluatedSpec
exceptionsTest = describe "Test.Exceptions"
[ it "500" case500
, it "redirect keeps headers" caseRedirect

View File

@ -9,8 +9,9 @@ import Network.Wai.Test
import Yesod.Internal.TestApi (randomString, parseWaiRequest')
import Yesod.Request (Request (..))
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
randomStringSpecs :: [Spec]
randomStringSpecs :: UnevaluatedSpec
randomStringSpecs = describe "Yesod.Internal.Request.randomString"
[ it "looks reasonably random" looksRandom
, it "does not repeat itself" $ noRepeat 10 100
@ -30,7 +31,7 @@ g :: StdGen
g = error "test/YesodCoreTest/InternalRequest.g"
tokenSpecs :: [Spec]
tokenSpecs :: UnevaluatedSpec
tokenSpecs = describe "Yesod.Internal.Request.parseWaiRequest (reqToken)"
[ it "is Nothing if sessions are disabled" noDisabledToken
, it "ignores pre-existing token if sessions are disabled" ignoreDisabledToken
@ -55,7 +56,7 @@ generateToken = reqToken r /= Nothing where
r = parseWaiRequest' defaultRequest [("_TOKEN", "old")] True g
langSpecs :: [Spec]
langSpecs :: UnevaluatedSpec
langSpecs = describe "Yesod.Internal.Request.parseWaiRequest (reqLangs)"
[ it "respects Accept-Language" respectAcceptLangs
, it "respects sessions" respectSessionLang
@ -93,8 +94,9 @@ prioritizeLangs = reqLangs r == ["en-QUERY", "en-COOKIE", "en-SESSION", "en", "e
} [("_LANG", "en-SESSION")] False g
internalRequestTest :: [Spec]
internalRequestTest = descriptions [ randomStringSpecs
, tokenSpecs
, langSpecs
]
internalRequestTest :: UnevaluatedSpec
internalRequestTest = describe "Test.InternalRequestTest"
[ randomStringSpecs
, tokenSpecs
, langSpecs
]

View File

@ -7,6 +7,7 @@ import YesodCoreTest.JsLoaderSites.HeadAsync (HA(..))
import YesodCoreTest.JsLoaderSites.Bottom (B(..))
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit ()
import Yesod.Core hiding (Request)
@ -22,7 +23,7 @@ instance Yesod H where
getHeadR :: Handler RepHtml
getHeadR = defaultLayout $ addScriptRemote "load.js"
specs :: [Spec]
specs :: UnevaluatedSpec
specs = describe "Test.JsLoader" [
it "link from head" $ runner H $ do
res <- request defaultRequest

View File

@ -4,6 +4,7 @@
module YesodCoreTest.Links (linksTest, Widget) where
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit ()
import Yesod.Core hiding (Request)
@ -20,7 +21,7 @@ instance Yesod Y
getRootR :: Handler RepHtml
getRootR = defaultLayout $ toWidget [hamlet|<a href=@{RootR}>|]
linksTest :: [Spec]
linksTest :: UnevaluatedSpec
linksTest = describe "Test.Links"
[ it "linkToHome" case_linkToHome
]

View File

@ -5,6 +5,7 @@
module YesodCoreTest.Media (mediaTest, Widget) where
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit ()
import Yesod.Core hiding (Request)
import Network.Wai
@ -49,7 +50,7 @@ caseMediaLink = runner $ do
assertStatus 200 res
flip assertBody res "<!DOCTYPE html>\n<html><head><title></title><link rel=\"stylesheet\" href=\"all.css\"><link rel=\"stylesheet\" media=\"screen\" href=\"screen.css\"></head><body></body></html>"
mediaTest :: [Spec]
mediaTest :: UnevaluatedSpec
mediaTest = describe "Test.Media"
[ it "media" caseMedia
, it "media link" caseMediaLink

View File

@ -3,6 +3,7 @@
module YesodCoreTest.NoOverloadedStrings (noOverloadedTest, Widget) where
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit ()
import Yesod.Core hiding (Request)
@ -44,7 +45,7 @@ case_sanity = runner $ do
res <- request defaultRequest
assertBody mempty res
noOverloadedTest :: [Spec]
noOverloadedTest :: UnevaluatedSpec
noOverloadedTest = describe "Test.NoOverloadedStrings"
[ it "sanity" case_sanity
]

View File

@ -4,6 +4,7 @@ module YesodCoreTest.Redirect (specs, Widget) where
import YesodCoreTest.YesodTest
import Yesod.Handler (redirectWith)
import qualified Network.HTTP.Types as H
import Test.Hspec.Core (UnevaluatedSpec)
data Y = Y
mkYesod "Y" [parseRoutes|
@ -26,7 +27,7 @@ getR303 = redirectWith H.status303 RootR
getR307 = redirectWith H.status307 RootR
getRRegular = redirect RootR
specs :: [Spec]
specs :: UnevaluatedSpec
specs = describe "Redirect" [
it "301 redirect" $ app $ do
res <- request defaultRequest { pathInfo = ["r301"] }

View File

@ -4,6 +4,7 @@ module YesodCoreTest.WaiSubsite (specs, Widget) where
import YesodCoreTest.YesodTest
import Yesod.Core
import qualified Network.HTTP.Types as H
import Test.Hspec.Core (UnevaluatedSpec)
myApp :: Application
myApp _ = return $ responseLBS H.status200 [("Content-type", "text/plain")] "WAI"
@ -25,7 +26,7 @@ app = yesod Y
getRootR :: Handler ()
getRootR = return ()
specs :: [Spec]
specs :: UnevaluatedSpec
specs = describe "WaiSubsite" [
it "root" $ app $ do
res <- request defaultRequest { pathInfo = [] }

View File

@ -4,6 +4,7 @@
module YesodCoreTest.Widget (widgetTest) where
import Test.Hspec
import Test.Hspec.Core (UnevaluatedSpec)
import Test.Hspec.HUnit ()
import Yesod.Core hiding (Request)
@ -77,7 +78,7 @@ getAutoR = defaultLayout [whamlet|
where
someHtml = [shamlet|somehtml|]
widgetTest :: [Spec]
widgetTest :: UnevaluatedSpec
widgetTest = describe "Test.Widget"
[ it "addJuliusBody" case_addJuliusBody
, it "whamlet" case_whamlet

View File

@ -119,7 +119,7 @@ test-suite tests
cpp-options: -DTEST
build-depends: base
,hspec >= 0.8 && < 0.10
,hspec >= 1.0 && < 1.1
,wai-test
,wai
,yesod-core

View File

@ -41,7 +41,7 @@ test-suite runtests
, yesod-routes
, text >= 0.5 && < 0.12
, HUnit >= 1.2 && < 1.3
, hspec >= 0.6 && < 0.10
, hspec >= 0.6 && < 1.1
, containers
, template-haskell
, path-pieces

View File

@ -11,7 +11,7 @@ cabal-version: >= 1.8
build-type: Simple
homepage: http://www.yesodweb.com
description: Behaviour Oriented integration Testing for Yesod Applications
extra-source-files: README.md, LICENSE
extra-source-files: README.md, LICENSE, test/main.hs
flag blaze_html_0_5
description: use blaze-html 0.5 and blaze-markup 0.5