hls-graph-2.7.0.0: test/DatabaseSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module DatabaseSpec where
import Development.IDE.Graph (shakeOptions)
import Development.IDE.Graph.Database (shakeNewDatabase,
shakeRunDatabase)
import Development.IDE.Graph.Internal.Action (apply1)
import Development.IDE.Graph.Internal.Rules (addRule)
import Development.IDE.Graph.Internal.Types
import Example
import System.Time.Extra (timeout)
import Test.Hspec
spec :: Spec
spec = do
describe "Evaluation" $ do
it "detects cycles" $ do
db <- shakeNewDatabase shakeOptions $ do
ruleBool
addRule $ \Rule _old _mode -> do
True <- apply1 (Rule @Bool)
return $ RunResult ChangedRecomputeDiff "" ()
let res = shakeRunDatabase db $ pure $ apply1 (Rule @())
timeout 1 res `shouldThrow` \StackException{} -> True