On 07/08/2017 01:41 AM, fr33domlo...@riseup.net wrote:
> From: fr33domlover <fr33domlo...@rel4tion.org>
> 
> ---
>  website/Snowdrift.cabal       | 12 +++++++-----
>  website/test/AlertsSpec.hs    |  6 +++---
>  website/test/AuthSiteSpec.hs  |  8 ++++----
>  website/test/DiscourseSpec.hs | 35 ++++++++++++++++-------------------
>  website/test/HandlerSpec.hs   |  6 +++---
>  website/test/SampleSpec.hs    |  6 +++---
>  website/test/Spec.hs          |  1 -
>  website/test/StripeMock.hs    |  2 +-
>  website/test/Tasty.hs         |  1 +
>  website/test/TestImport.hs    |  4 ++--
>  10 files changed, 40 insertions(+), 41 deletions(-)
>  delete mode 100644 website/test/Spec.hs
>  create mode 100644 website/test/Tasty.hs
> 
> diff --git a/website/Snowdrift.cabal b/website/Snowdrift.cabal
> index 1f1ffc5..c7be912 100644
> --- a/website/Snowdrift.cabal
> +++ b/website/Snowdrift.cabal
> @@ -152,7 +152,7 @@ executable Snowdrift
>  -- test-suite test {{{1
>  test-suite test
>      type:           exitcode-stdio-1.0
> -    main-is:        Spec.hs
> +    main-is:        Tasty.hs
>      hs-source-dirs: test
>      ghc-options:    -Wall
>  
> @@ -178,24 +178,26 @@ test-suite test
>      -- build-depends {{{2
>      build-depends:
>          Snowdrift
> -        -- For htmlHasLink (should move upstream)
> -        , HUnit >= 1.3.1.1
>          , base
>          , bytestring
>          , classy-prelude
>          , classy-prelude-yesod
>          , cryptonite
> -        , hspec >= 2.0.0
>          , http-types
>          , memory
>          , persistent
>          , persistent-postgresql
>          , postgresql-simple
> -        , QuickCheck
>          , quickcheck-text
>          , shakespeare
>          , stripe-core
>          , stripe-haskell
> +        , tasty
> +        , tasty-discover
> +        -- For htmlHasLink (should move upstream)
> +        , tasty-hunit
> +        , tasty-hspec
> +        , tasty-quickcheck
>          , text >= 1.2.2.1
>          , wai-extra
>          , yesod
> diff --git a/website/test/AlertsSpec.hs b/website/test/AlertsSpec.hs
> index 62235e8..cf0d9c5 100644
> --- a/website/test/AlertsSpec.hs
> +++ b/website/test/AlertsSpec.hs
> @@ -1,4 +1,4 @@
> -module AlertsSpec (spec) where
> +module AlertsSpec (spec_alerts) where
>  
>  import TestImport
>  import Alerts
> @@ -20,8 +20,8 @@ alertSite = LiteApp go
>  withAlertSite :: SpecWith (TestApp LiteApp) -> Spec
>  withAlertSite = before $ pure (alertSite, id)
>  
> -spec :: Spec
> -spec = withAlertSite $
> +spec_alerts :: Spec
> +spec_alerts = withAlertSite $
>      it "adds an alert" $ do
>          get getR
>          htmlCount ".alert" 0
> diff --git a/website/test/AuthSiteSpec.hs b/website/test/AuthSiteSpec.hs
> index e962fce..a251a9e 100644
> --- a/website/test/AuthSiteSpec.hs
> +++ b/website/test/AuthSiteSpec.hs
> @@ -4,13 +4,13 @@
>  {-# LANGUAGE ScopedTypeVariables #-}
>  {-# LANGUAGE ViewPatterns #-}
>  {-# OPTIONS_GHC -fno-warn-unused-binds #-}
> -module AuthSiteSpec (spec) where
> +module AuthSiteSpec (spec_authSite) where
>  
>  import TestImport hiding (Handler)
>  import Database.Persist.Sql hiding (get)
>  import Database.Persist.Postgresql (pgConnStr)
>  import Network.Wai.Test (SResponse(..))
> -import Test.HUnit (assertBool)
> +import Test.Tasty.HUnit (assertBool)
>  import Yesod hiding (get)
>  import Yesod.Default.Config2 (ignoreEnv, loadYamlSettings)
>  import qualified Data.Text as T
> @@ -171,8 +171,8 @@ withBob = beforeWith makeBob
>  
>  -- ** The actual tests!
>  
> -spec :: Spec
> -spec = mainSpecs >> authRouteSpec
> +spec_authSite :: Spec
> +spec_authSite = mainSpecs >> authRouteSpec
>  
>  -- | Having this defined separately is clumsy. It should be moved back into
>  -- the right spot. The problem is that it needs a different value of
> diff --git a/website/test/DiscourseSpec.hs b/website/test/DiscourseSpec.hs
> index f00c084..e4cc0b0 100644
> --- a/website/test/DiscourseSpec.hs
> +++ b/website/test/DiscourseSpec.hs
> @@ -13,30 +13,27 @@ import Crypto.MAC.HMAC (HMAC, hmac)
>  import Data.ByteArray (ByteArray, ByteArrayAccess)
>  import Data.ByteArray.Encoding (Base(Base16, Base64URLUnpadded), 
> convertToBase)
>  import Data.Text.Arbitrary ()
> -import Test.Hspec.QuickCheck (prop)
> -import Test.QuickCheck (Arbitrary, arbitrary, choose, oneof, vectorOf, 
> NonEmptyList(..))
> +import Test.Tasty.QuickCheck (Arbitrary, arbitrary, choose, oneof, vectorOf, 
> NonEmptyList(..))
>  
>  import qualified Data.ByteString.Char8 as Char8
>  
>  {-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
>  
> -spec :: Spec
> -spec = do
> -    prop "validateSig" $ \(NonEmpty secret) (NonEmpty payload) -> do
> -        let secret' = pack secret
> -            payload' = pack payload
> -
> -        validateSig (DiscourseSecret secret') payload'
> -            (base16 (hmac secret' payload' :: HMAC SHA256))
> -
> -    prop "parsePayload" $ \(Nonce nonce) (Url url) -> do
> -        let payload = "nonce=" <> nonce <> "&return_sso_url=" <> encodeUtf8 
> url
> -        parsePayload (base64 payload)
> -            `shouldBe`
> -            Right DiscoursePayload
> -                    { dpNonce = nonce
> -                    , dpUrl   = url
> -                    }
> +prop_validateSig (NonEmpty secret) (NonEmpty payload) = do
> +    let secret' = pack secret
> +        payload' = pack payload
> +
> +    validateSig (DiscourseSecret secret') payload'
> +        (base16 (hmac secret' payload' :: HMAC SHA256))
> +
> +prop_parsePayload (Nonce nonce) (Url url) = do
> +    let payload = "nonce=" <> nonce <> "&return_sso_url=" <> encodeUtf8 url
> +    parsePayload (base64 payload)
> +        `shouldBe`
> +        Right DiscoursePayload
> +                { dpNonce = nonce
> +                , dpUrl   = url
> +                }
>  
>  -- 16 bytes of [0-9A-F]
>  newtype Nonce
> diff --git a/website/test/HandlerSpec.hs b/website/test/HandlerSpec.hs
> index 5a537fb..12d9f39 100644
> --- a/website/test/HandlerSpec.hs
> +++ b/website/test/HandlerSpec.hs
> @@ -1,4 +1,4 @@
> -module HandlerSpec (spec) where
> +module HandlerSpec (spec_handler) where
>  
>  import TestImport
>  
> @@ -14,8 +14,8 @@ import Network.Wai.Test (SResponse(..))
>  
>  {-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
>  
> -spec :: Spec
> -spec = withApp $ do
> +spec_handler :: Spec
> +spec_handler = withApp $ do
>      describe "getRobotsR" getRobotsSpec
>      describe "getFaviconR" getFaviconSpec
>      describe "getWelcomeR" getWelcomeSpec
> diff --git a/website/test/SampleSpec.hs b/website/test/SampleSpec.hs
> index c95170e..35971d6 100644
> --- a/website/test/SampleSpec.hs
> +++ b/website/test/SampleSpec.hs
> @@ -1,9 +1,9 @@
> -module SampleSpec (spec) where
> +module SampleSpec (spec_sample) where
>  
>  import TestImport
>  
> -spec :: Spec
> -spec = withApp $ do
> +spec_sample :: Spec
> +spec_sample = withApp $ do
>      describe "various properties" $ do
>          it "/home links to /privacy and /terms" $ do
>              get WelcomeR
> diff --git a/website/test/Spec.hs b/website/test/Spec.hs
> deleted file mode 100644
> index a824f8c..0000000
> --- a/website/test/Spec.hs
> +++ /dev/null
> @@ -1 +0,0 @@
> -{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
> diff --git a/website/test/StripeMock.hs b/website/test/StripeMock.hs
> index 23c5b8a..51ffb86 100644
> --- a/website/test/StripeMock.hs
> +++ b/website/test/StripeMock.hs
> @@ -9,7 +9,7 @@ import ClassyPrelude.Yesod hiding (method)
>  import Data.Typeable
>  import Web.Stripe
>  import Web.Stripe.Error
> -import Test.Hspec (shouldBe)
> +import Test.Tasty.Hspec (shouldBe)
>  
>  data StripeMockEffects
>      = forall a. Typeable (StripeReturn a)
> diff --git a/website/test/Tasty.hs b/website/test/Tasty.hs
> new file mode 100644
> index 0000000..70c55f5
> --- /dev/null
> +++ b/website/test/Tasty.hs
> @@ -0,0 +1 @@
> +{-# OPTIONS_GHC -F -pgmF tasty-discover #-}
> diff --git a/website/test/TestImport.hs b/website/test/TestImport.hs
> index ccce560..a452a66 100644
> --- a/website/test/TestImport.hs
> +++ b/website/test/TestImport.hs
> @@ -10,14 +10,14 @@ import Database.Persist.Postgresql (pgConnStr, 
> ConnectionString)
>  import Foundation as X
>  import Network.HTTP.Types (Status(..))
>  import Network.Wai.Test (SResponse(..))
> -import Test.Hspec as X
> +import Test.Tasty.Hspec as X
>  import Yesod.Default.Config2 (ignoreEnv, loadYamlSettings)
>  import Yesod.Test as X
>  import qualified Data.Text.Encoding as T
>  import qualified Database.PostgreSQL.Simple as PG
>  
>  -- For htmlHasLink
> -import Test.HUnit
> +import Test.Tasty.HUnit
>  import Yesod.Core
>  
>  import Application (makeFoundation, makeLogWare)
> 

In trying this patch, it looks like tasty-discover needs to be added to
stack.yaml also. I could just do it, but I wanted to check that it makes
sense to you that this is needed. Probably you had it installed manually
so didn't get the error I got:

```
$ make
stack build --only-dependencies --install-ghc Snowdrift:test

Error: While constructing the build plan, the following exceptions were
encountered:

In the dependencies for Snowdrift-0.1.4(+dev):
    tasty-discover must match -any, but the stack configuration has no
specified version (latest applicable is 2.0.3)

Recommended action: try adding the following to your extra-deps in
/home/aaron/sites-programs/snowdrift/stack.yaml:
- tasty-discover-2.0.3

You may also want to try the 'stack solver' command
Plan construction failed.
Makefile:8: recipe for target 'deps' failed
make: *** [deps] Error 1
```

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Dev mailing list
Dev@lists.snowdrift.coop
https://lists.snowdrift.coop/mailman/listinfo/dev

Reply via email to