ide-backend-0.9.0: TestSuite/TestSuite.hs
module Main where
import Test.HUnit
import Test.Tasty
import IdeSession
import TestSuite.State
import TestSuite.Tests.API
import TestSuite.Tests.Autocompletion
import TestSuite.Tests.BufferMode
import TestSuite.Tests.BuildDoc
import TestSuite.Tests.BuildExe
import TestSuite.Tests.BuildLicenses
import TestSuite.Tests.C
import TestSuite.Tests.CabalMacros
import TestSuite.Tests.Compilation
import TestSuite.Tests.Compliance
import TestSuite.Tests.Concurrency
import TestSuite.Tests.Crash
import TestSuite.Tests.Debugger
import TestSuite.Tests.FFI
import TestSuite.Tests.Integration
import TestSuite.Tests.InterruptRunExe
import TestSuite.Tests.InterruptRunStmt
import TestSuite.Tests.Issues
import TestSuite.Tests.Packages
import TestSuite.Tests.Performance
import TestSuite.Tests.SessionRestart
import TestSuite.Tests.SessionState
import TestSuite.Tests.SnippetEnvironment
import TestSuite.Tests.StdIO
import TestSuite.Tests.TH
import TestSuite.Tests.TypeInformation
import TestSuite.Tests.UpdateTargets
-- | Sanity check: make sure we can communicate with the server at all
-- and that we get the expected version
testGetGhcVersion :: TestSuiteEnv -> Assertion
testGetGhcVersion env = withAvailableSession env $ \session -> do
version <- getGhcVersion session
assertEqual "" (testSuiteEnvGhcVersion env) version
allTests :: String -> TestSuiteEnv -> TestTree
allTests name env = testGroup name [
stdTest env "getGhcVersion" testGetGhcVersion
, testGroupIntegration env
, testGroupAPI env
, testGroupSessionState env
, testGroupCompilation env
, testGroupUpdateTargets env
, testGroupInterruptRunStmt env
, testGroupInterruptRunExe env
, testGroupStdIO env
, testGroupBufferMode env
, testGroupSnippetEnvironment env
, testGroupTypeInformation env
, testGroupAutocompletion env
, testGroupFFI env
, testGroupC env
, testGroupBuildExe env
, testGroupBuildDoc env
, testGroupBuildLicenses env
, testGroupCabalMacros env
, testGroupTH env
, testGroupIssues env
, testGroupPackages env
, testGroupSessionRestart env
, testGroupCrash env
, testGroupCompliance env
, testGroupDebugger env
, testGroupConcurrency env
, testGroupPerformance env
]
main :: IO ()
main =
defaultMainWithIngredients ings $ testSuite $ \env ->
let TestSuiteConfig{..} = testSuiteEnvConfig env
env74 = env { testSuiteEnvGhcVersion = GHC_7_4 }
env78 = env { testSuiteEnvGhcVersion = GHC_7_8 }
env710 = env { testSuiteEnvGhcVersion = GHC_7_10 }
in testGroup "IDE backend tests" $
(if testSuiteConfigTest74 then [allTests "GHC 7.4" env74] else [])
++ (if testSuiteConfigTest78 then [allTests "GHC 7.8" env78] else [])
++ (if testSuiteConfigTest710 then [allTests "GHC 7.10" env710] else [])
where
ings = includingOptions testSuiteCommandLineOptions
: defaultIngredients