diff --git a/.travis.yml b/.travis.yml index 15fd644..21b13b1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,8 +47,7 @@ matrix: - hvr-ghc packages: - ghc-head - allow_failures: - - env: GHCVER=head RESOLVER=nightly EXTRADEPS="" STACKARGS="" + - env: GHCVER=head RESOLVER=nightly EXTRADEPS="" STACKARGS="--stack-yaml=stack_nightly.yaml" before_install: # Download and unpack the stack executable diff --git a/examples/serversession-example-yesod-persistent/Application.hs b/examples/serversession-example-yesod-persistent/Application.hs index 905de21..2595a61 100644 --- a/examples/serversession-example-yesod-persistent/Application.hs +++ b/examples/serversession-example-yesod-persistent/Application.hs @@ -126,7 +126,7 @@ getApplicationDev = do return (wsettings, app) getAppSettings :: IO AppSettings -getAppSettings = loadAppSettings [configSettingsYml] [] useEnv +getAppSettings = loadYamlSettings [configSettingsYml] [] useEnv -- | main function for use by yesod devel develMain :: IO () @@ -136,7 +136,7 @@ develMain = develMainHelper getApplicationDev appMain :: IO () appMain = do -- Get the settings from all relevant sources - settings <- loadAppSettingsArgs + settings <- loadYamlSettingsArgs -- fall back to compile-time values, set to [] to require values at runtime [configSettingsYmlValue] diff --git a/examples/serversession-example-yesod-persistent/Foundation.hs b/examples/serversession-example-yesod-persistent/Foundation.hs index 1f77fe9..966b511 100644 --- a/examples/serversession-example-yesod-persistent/Foundation.hs +++ b/examples/serversession-example-yesod-persistent/Foundation.hs @@ -6,7 +6,7 @@ import Text.Hamlet (hamletFile) import Text.Jasmine (minifym) import Web.ServerSession.Backend.Persistent import Web.ServerSession.Frontend.Yesod -import Yesod.Auth.BrowserId (authBrowserId) +import Yesod.Auth.Dummy (authDummy) import Yesod.Default.Util (addStaticContentExternal) import Yesod.Core.Types (Logger) import qualified Yesod.Core.Unsafe as Unsafe @@ -140,7 +140,7 @@ instance YesodAuth App where } -- You can add other plugins like BrowserID, email or OAuth here - authPlugins _ = [authBrowserId def] + authPlugins _ = [authDummy] authHttpManager = getHttpManager diff --git a/examples/serversession-example-yesod-persistent/Handler/Home.hs b/examples/serversession-example-yesod-persistent/Handler/Home.hs index 6222753..d9c68fd 100644 --- a/examples/serversession-example-yesod-persistent/Handler/Home.hs +++ b/examples/serversession-example-yesod-persistent/Handler/Home.hs @@ -24,12 +24,12 @@ getHomeR = do -- | Invalidate the session as requested via 'forceForm'. postForceR :: Handler () postForceR = - processForm "Force form" forceForm $ \force -> do + processForm "Force form" forceForm $ \frce -> do msid <- getSessionId - SS.forceInvalidate force + SS.forceInvalidate frce return $ concat [ "Forced session invalidation using " - , show force + , show frce , " [old session ID was " , show msid , "]." ] diff --git a/examples/serversession-example-yesod-persistent/Settings.hs b/examples/serversession-example-yesod-persistent/Settings.hs index fb4310e..380989e 100644 --- a/examples/serversession-example-yesod-persistent/Settings.hs +++ b/examples/serversession-example-yesod-persistent/Settings.hs @@ -6,7 +6,7 @@ module Settings where import ClassyPrelude.Yesod -import Control.Exception (throw) +import Control.Exception as E import Data.Aeson (Result (..), fromJSON, withObject, (.!=), (.:?)) import Data.FileEmbed (embedFile) @@ -108,7 +108,7 @@ configSettingsYmlBS = $(embedFile configSettingsYml) -- | @config/settings.yml@, parsed to a @Value@. configSettingsYmlValue :: Value -configSettingsYmlValue = either throw id $ decodeEither' configSettingsYmlBS +configSettingsYmlValue = either E.throw id $ decodeEither' configSettingsYmlBS -- | A version of @AppSettings@ parsed at compile time from @config/settings.yml@. compileTimeAppSettings :: AppSettings diff --git a/examples/serversession-example-yesod-persistent/test/Handler/CommonSpec.hs b/examples/serversession-example-yesod-persistent/test/Handler/CommonSpec.hs index e1920fb..7f30909 100644 --- a/examples/serversession-example-yesod-persistent/test/Handler/CommonSpec.hs +++ b/examples/serversession-example-yesod-persistent/test/Handler/CommonSpec.hs @@ -3,15 +3,15 @@ module Handler.CommonSpec (spec) where import TestImport spec :: Spec -spec = withApp $ do - describe "robots.txt" $ do - it "gives a 200" $ do - get RobotsR - statusIs 200 - it "has correct User-agent" $ do - get RobotsR - bodyContains "User-agent: *" - describe "favicon.ico" $ do - it "gives a 200" $ do - get FaviconR - statusIs 200 +spec = yesodSpecWithSiteGenerator mkApp $ do + ydescribe "robots.txt" $ do + yit "gives a 200" $ do + get RobotsR + statusIs 200 + yit "has correct User-agent" $ do + get RobotsR + bodyContains "User-agent: *" + ydescribe "favicon.ico" $ do + yit "gives a 200" $ do + get FaviconR + statusIs 200 diff --git a/examples/serversession-example-yesod-persistent/test/Handler/HomeSpec.hs b/examples/serversession-example-yesod-persistent/test/Handler/HomeSpec.hs index 3301d21..8f4d895 100644 --- a/examples/serversession-example-yesod-persistent/test/Handler/HomeSpec.hs +++ b/examples/serversession-example-yesod-persistent/test/Handler/HomeSpec.hs @@ -3,7 +3,7 @@ module Handler.HomeSpec (spec) where import TestImport spec :: Spec -spec = withApp $ do +spec = yesodSpecWithSiteGenerator mkApp $ do return () {- it "loads the index and checks it looks right" $ do diff --git a/examples/serversession-example-yesod-persistent/test/TestImport.hs b/examples/serversession-example-yesod-persistent/test/TestImport.hs index 6e0ca2b..4fe7b3d 100644 --- a/examples/serversession-example-yesod-persistent/test/TestImport.hs +++ b/examples/serversession-example-yesod-persistent/test/TestImport.hs @@ -5,12 +5,12 @@ module TestImport import Application (makeFoundation) import ClassyPrelude as X -import Database.Persist as X hiding (get) +import Database.Persist as X hiding (delete, deleteBy, get) import Database.Persist.Sql (SqlPersistM, SqlBackend, runSqlPersistMPool, rawExecute, rawSql, unSingle, connEscapeName) -import Foundation as X +import Foundation as X hiding (Handler) import Model as X import Test.Hspec as X -import Yesod.Default.Config2 (ignoreEnv, loadAppSettings) +import Yesod.Default.Config2 (ignoreEnv, loadYamlSettings) import Yesod.Test as X -- Wiping the database @@ -25,9 +25,9 @@ runDB query = do pool <- fmap appConnPool getTestYesod liftIO $ runSqlPersistMPool query pool -withApp :: SpecWith App -> Spec -withApp = before $ do - settings <- loadAppSettings +mkApp :: IO App +mkApp = do + settings <- loadYamlSettings ["config/test-settings.yml", "config/settings.yml"] [] ignoreEnv @@ -48,8 +48,8 @@ wipeDB app = do -- Aside: SQLite by default *does not enable foreign key checks* -- (disabling foreign keys is only necessary for those who specifically enable them). - let settings = appSettings app - sqliteConn <- rawConnection (sqlDatabase $ appDatabaseConf settings) + let settings = appSettings app + sqliteConn <- rawConnection (sqlDatabase $ appDatabaseConf settings) disableForeignKeys sqliteConn let logFunc = messageLoggerSource app (appLogger app) diff --git a/serversession-backend-persistent/serversession-backend-persistent.cabal b/serversession-backend-persistent/serversession-backend-persistent.cabal index ec2f901..5cc19cd 100644 --- a/serversession-backend-persistent/serversession-backend-persistent.cabal +++ b/serversession-backend-persistent/serversession-backend-persistent.cabal @@ -26,7 +26,7 @@ library , bytestring , cereal >= 0.4 , path-pieces - , persistent >= 2.1 && < 2.3 + , persistent >= 2.1 , tagged >= 0.7 , text , time @@ -71,8 +71,8 @@ test-suite tests , hspec >= 2.1 && < 3 , monad-logger - , persistent-sqlite >= 2.1 && < 2.3 - , persistent-postgresql >= 2.1 && < 2.3 + , persistent-sqlite >= 2.1 + , persistent-postgresql >= 2.1 , resource-pool , QuickCheck diff --git a/serversession-frontend-snap/serversession-frontend-snap.cabal b/serversession-frontend-snap/serversession-frontend-snap.cabal index 61ee43f..0b9c3e5 100644 --- a/serversession-frontend-snap/serversession-frontend-snap.cabal +++ b/serversession-frontend-snap/serversession-frontend-snap.cabal @@ -25,8 +25,8 @@ library , bytestring , nonce , path-pieces - , snap == 0.14.* - , snap-core == 0.9.* + , snap >= 0.14 + , snap-core >= 0.9 , text , time , transformers diff --git a/stack_nightly.yaml b/stack_nightly.yaml new file mode 100644 index 0000000..ee4d268 --- /dev/null +++ b/stack_nightly.yaml @@ -0,0 +1,29 @@ +resolver: nightly-2017-02-02 +packages: + - serversession + - serversession-backend-acid-state + - serversession-backend-persistent + - serversession-backend-redis + - serversession-frontend-snap + - serversession-frontend-wai + - serversession-frontend-yesod + - examples/serversession-example-yesod-persistent +flags: + serversession: + lib-Werror: true + serversession-backend-acid-state: + lib-Werror: true + serversession-backend-persistent: + lib-Werror: true + serversession-backend-redis: + lib-Werror: true + serversession-frontend-snap: + lib-Werror: true + serversession-frontend-wai: + lib-Werror: true + serversession-frontend-yesod: + lib-Werror: true +extra-deps: + - snap-1.0.0.1 + - heist-1.0.1.0 + - map-syntax-0.2.0.2