From 9f4c92f181d05b13531f5572071aa7fc9b0e92d0 Mon Sep 17 00:00:00 2001 From: Mark Wright Date: Sun, 6 May 2012 12:18:49 +1000 Subject: [PATCH 1/3] yesod-core changes for hspec 1.0 --- yesod-core/test.hs | 2 +- yesod-core/test/YesodCoreTest.hs | 4 ++-- yesod-core/test/YesodCoreTest/Cache.hs | 3 ++- yesod-core/test/YesodCoreTest/CleanPath.hs | 3 ++- yesod-core/test/YesodCoreTest/ErrorHandling.hs | 3 ++- yesod-core/test/YesodCoreTest/Exceptions.hs | 3 ++- .../test/YesodCoreTest/InternalRequest.hs | 18 ++++++++++-------- yesod-core/test/YesodCoreTest/JsLoader.hs | 3 ++- yesod-core/test/YesodCoreTest/Links.hs | 3 ++- yesod-core/test/YesodCoreTest/Media.hs | 3 ++- .../test/YesodCoreTest/NoOverloadedStrings.hs | 3 ++- yesod-core/test/YesodCoreTest/Redirect.hs | 3 ++- yesod-core/test/YesodCoreTest/WaiSubsite.hs | 3 ++- yesod-core/test/YesodCoreTest/Widget.hs | 3 ++- yesod-core/yesod-core.cabal | 2 +- 15 files changed, 36 insertions(+), 23 deletions(-) diff --git a/yesod-core/test.hs b/yesod-core/test.hs index b04ec7db..49141594 100644 --- a/yesod-core/test.hs +++ b/yesod-core/test.hs @@ -2,4 +2,4 @@ import Test.Hspec import qualified YesodCoreTest main :: IO () -main = hspecX $ descriptions $ YesodCoreTest.specs +main = hspecX $ YesodCoreTest.specs diff --git a/yesod-core/test/YesodCoreTest.hs b/yesod-core/test/YesodCoreTest.hs index 26047caf..db4e2ccf 100644 --- a/yesod-core/test/YesodCoreTest.hs +++ b/yesod-core/test/YesodCoreTest.hs @@ -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 diff --git a/yesod-core/test/YesodCoreTest/Cache.hs b/yesod-core/test/YesodCoreTest/Cache.hs index 30dcfaaa..e38fddb6 100644 --- a/yesod-core/test/YesodCoreTest/Cache.hs +++ b/yesod-core/test/YesodCoreTest/Cache.hs @@ -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 diff --git a/yesod-core/test/YesodCoreTest/CleanPath.hs b/yesod-core/test/YesodCoreTest/CleanPath.hs index ba3d7a00..a7a1a6f0 100644 --- a/yesod-core/test/YesodCoreTest/CleanPath.hs +++ b/yesod-core/test/YesodCoreTest/CleanPath.hs @@ -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 diff --git a/yesod-core/test/YesodCoreTest/ErrorHandling.hs b/yesod-core/test/YesodCoreTest/ErrorHandling.hs index 40038082..3928047b 100644 --- a/yesod-core/test/YesodCoreTest/ErrorHandling.hs +++ b/yesod-core/test/YesodCoreTest/ErrorHandling.hs @@ -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 diff --git a/yesod-core/test/YesodCoreTest/Exceptions.hs b/yesod-core/test/YesodCoreTest/Exceptions.hs index 93368b7a..df52df81 100644 --- a/yesod-core/test/YesodCoreTest/Exceptions.hs +++ b/yesod-core/test/YesodCoreTest/Exceptions.hs @@ -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 diff --git a/yesod-core/test/YesodCoreTest/InternalRequest.hs b/yesod-core/test/YesodCoreTest/InternalRequest.hs index 66880b86..a5106570 100644 --- a/yesod-core/test/YesodCoreTest/InternalRequest.hs +++ b/yesod-core/test/YesodCoreTest/InternalRequest.hs @@ -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 + ] diff --git a/yesod-core/test/YesodCoreTest/JsLoader.hs b/yesod-core/test/YesodCoreTest/JsLoader.hs index 676e0f1d..53b8beef 100644 --- a/yesod-core/test/YesodCoreTest/JsLoader.hs +++ b/yesod-core/test/YesodCoreTest/JsLoader.hs @@ -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 diff --git a/yesod-core/test/YesodCoreTest/Links.hs b/yesod-core/test/YesodCoreTest/Links.hs index 34b5dc4c..98c2d7a8 100644 --- a/yesod-core/test/YesodCoreTest/Links.hs +++ b/yesod-core/test/YesodCoreTest/Links.hs @@ -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||] -linksTest :: [Spec] +linksTest :: UnevaluatedSpec linksTest = describe "Test.Links" [ it "linkToHome" case_linkToHome ] diff --git a/yesod-core/test/YesodCoreTest/Media.hs b/yesod-core/test/YesodCoreTest/Media.hs index 7ce98286..5ffaec37 100644 --- a/yesod-core/test/YesodCoreTest/Media.hs +++ b/yesod-core/test/YesodCoreTest/Media.hs @@ -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 "\n" -mediaTest :: [Spec] +mediaTest :: UnevaluatedSpec mediaTest = describe "Test.Media" [ it "media" caseMedia , it "media link" caseMediaLink diff --git a/yesod-core/test/YesodCoreTest/NoOverloadedStrings.hs b/yesod-core/test/YesodCoreTest/NoOverloadedStrings.hs index b32e6d65..7c9c932e 100644 --- a/yesod-core/test/YesodCoreTest/NoOverloadedStrings.hs +++ b/yesod-core/test/YesodCoreTest/NoOverloadedStrings.hs @@ -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 ] diff --git a/yesod-core/test/YesodCoreTest/Redirect.hs b/yesod-core/test/YesodCoreTest/Redirect.hs index 5019467a..0b406785 100644 --- a/yesod-core/test/YesodCoreTest/Redirect.hs +++ b/yesod-core/test/YesodCoreTest/Redirect.hs @@ -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"] } diff --git a/yesod-core/test/YesodCoreTest/WaiSubsite.hs b/yesod-core/test/YesodCoreTest/WaiSubsite.hs index ee313c32..f5e209c9 100644 --- a/yesod-core/test/YesodCoreTest/WaiSubsite.hs +++ b/yesod-core/test/YesodCoreTest/WaiSubsite.hs @@ -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 = [] } diff --git a/yesod-core/test/YesodCoreTest/Widget.hs b/yesod-core/test/YesodCoreTest/Widget.hs index 58aa13ba..bead9b6c 100644 --- a/yesod-core/test/YesodCoreTest/Widget.hs +++ b/yesod-core/test/YesodCoreTest/Widget.hs @@ -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 diff --git a/yesod-core/yesod-core.cabal b/yesod-core/yesod-core.cabal index 861fd8d9..d83407d5 100644 --- a/yesod-core/yesod-core.cabal +++ b/yesod-core/yesod-core.cabal @@ -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 From 1c4bbd52a7c094022c124ae2016ef5b201993fce Mon Sep 17 00:00:00 2001 From: Mark Wright Date: Sun, 6 May 2012 12:21:08 +1000 Subject: [PATCH 2/3] yesod-routes changes for hspec 1.0 --- yesod-routes/yesod-routes.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yesod-routes/yesod-routes.cabal b/yesod-routes/yesod-routes.cabal index 606a1687..f8f3eaa0 100644 --- a/yesod-routes/yesod-routes.cabal +++ b/yesod-routes/yesod-routes.cabal @@ -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 From 1b322d49c77070fec6d0cdc3b5189646edf296f8 Mon Sep 17 00:00:00 2001 From: Mark Wright Date: Sun, 6 May 2012 12:25:56 +1000 Subject: [PATCH 3/3] Include test/main.hs in the sdist tarball --- yesod-test/yesod-test.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yesod-test/yesod-test.cabal b/yesod-test/yesod-test.cabal index 54dab555..e7b681e0 100644 --- a/yesod-test/yesod-test.cabal +++ b/yesod-test/yesod-test.cabal @@ -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