hspec-webdriver 0.3.1 → 0.3.2
raw patch · 2 files changed
+12/−30 lines, 2 filesdep ~HUnitdep ~hspecPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: HUnit, hspec
API changes (from Hackage documentation)
Files
Test/Hspec/WebDriver/Internal.hs view
@@ -20,33 +20,16 @@ import qualified Control.Exception as E --- | Force a spec tree to not contain any BuildSpecs-forceSpecTree :: SpecTree -> IO [SpecTree]-forceSpecTree s@(SpecItem _ _) = return [s]-forceSpecTree (SpecGroup msg ss) = do- ss' <- concat <$> mapM forceSpecTree ss- return [SpecGroup msg ss']-forceSpecTree (BuildSpecs m) = do- trees <- m- concat <$> mapM forceSpecTree trees---- | Force a spec to not contain any BuildSpecs-forceSpec :: Spec -> IO [SpecTree]-forceSpec s = do- trees <- runSpecM s- concat <$> mapM forceSpecTree trees- -- | Traverse a spec, but only if forceSpec has already been called traverseTree :: Applicative f => (Item -> f Item) -> SpecTree -> f SpecTree-traverseTree f (SpecItem msg i) = SpecItem msg <$> f i+traverseTree f (SpecItem i) = SpecItem <$> f i traverseTree f (SpecGroup msg ss) = SpecGroup msg <$> traverse (traverseTree f) ss-traverseTree _ (BuildSpecs _) = error "No BuildSpecs should be left"+traverseTree f (SpecWithCleanup c ss) = SpecWithCleanup c <$> traverse (traverseTree f) ss -- | Traverse a list of specs, but only if forceSpecs has already been called traverseSpec :: Applicative f => (Item -> f Item) -> [SpecTree] -> f [SpecTree] traverseSpec f = traverse (traverseTree f) - -- | Process the items in a depth-first walk, passing in the item counter value. mapWithCounter :: (Int -> Item -> Item) -> [SpecTree] -> [SpecTree] mapWithCounter f s = flip evalState 0 $ traverseSpec go s@@ -157,14 +140,13 @@ -> (s -> IO ()) -- ^ cleanup the state -> Spec -- ^ spec tree to process -> Spec-session create close s = fromSpecList [build]- where- build = BuildSpecs $ do- trees <- forceSpec s- let cnt = countItems trees- mvars <- replicateM cnt newEmptyMVar- let sess = Session cnt mvars create close- return (mapWithCounter (sessionItem sess) trees)+session create close s = do+ (sess, trees) <- runIO $ do+ trees <- runSpecM s+ let cnt = countItems trees+ mvars <- replicateM cnt newEmptyMVar+ return (Session cnt mvars create close, trees)+ fromSpecList (mapWithCounter (sessionItem sess) trees) -- | Create an example to pass to 'it' which accesses and modifies the state using the state monad. -- For example,
hspec-webdriver.cabal view
@@ -1,5 +1,5 @@ name: hspec-webdriver-version: 0.3.1+version: 0.3.2 cabal-version: >= 1.8 build-type: Simple synopsis: Write end2end web application tests using webdriver and hspec@@ -30,9 +30,9 @@ build-depends: base >= 4 && < 5 - , HUnit >= 1.2 && < 1.3+ , HUnit >= 1.2 , hashable >= 1.2- , hspec >= 1.11+ , hspec >= 1.12 && < 1.13 , data-default >= 0.5 , lifted-base >= 0.2 , stm >= 2.4