2019-06-12 20:53:59 +03:00
|
|
|
{-# LANGUAGE ImplicitParams #-}
|
|
|
|
|
2019-06-15 07:53:02 +03:00
|
|
|
module Main (allTests, legacySpecs, main, tests) where
|
2016-01-05 19:27:37 +03:00
|
|
|
|
2018-03-13 21:14:55 +03:00
|
|
|
import qualified Analysis.Go.Spec
|
2018-03-20 00:42:00 +03:00
|
|
|
import qualified Analysis.PHP.Spec
|
2018-03-10 02:16:07 +03:00
|
|
|
import qualified Analysis.Python.Spec
|
2018-03-14 02:19:26 +03:00
|
|
|
import qualified Analysis.Ruby.Spec
|
2018-03-10 03:24:32 +03:00
|
|
|
import qualified Analysis.TypeScript.Spec
|
2017-11-27 21:47:04 +03:00
|
|
|
import qualified Assigning.Assignment.Spec
|
2018-05-07 21:21:05 +03:00
|
|
|
import qualified Control.Abstract.Evaluator.Spec
|
2017-11-27 21:59:44 +03:00
|
|
|
import qualified Data.Diff.Spec
|
2018-10-31 20:19:43 +03:00
|
|
|
import qualified Data.Abstract.Name.Spec
|
2018-04-18 00:13:01 +03:00
|
|
|
import qualified Data.Abstract.Path.Spec
|
2017-11-30 18:24:48 +03:00
|
|
|
import qualified Data.Functor.Classes.Generic.Spec
|
2018-10-31 19:20:38 +03:00
|
|
|
import qualified Data.Graph.Spec
|
2019-08-16 01:48:17 +03:00
|
|
|
import qualified Data.Language.Spec
|
2018-04-04 00:02:56 +03:00
|
|
|
import qualified Data.Scientific.Spec
|
2018-10-31 22:47:30 +03:00
|
|
|
import qualified Data.Semigroup.App.Spec
|
2017-11-27 22:02:03 +03:00
|
|
|
import qualified Data.Term.Spec
|
2017-11-27 21:48:43 +03:00
|
|
|
import qualified Diffing.Algorithm.RWS.Spec
|
2017-11-27 21:51:05 +03:00
|
|
|
import qualified Diffing.Algorithm.SES.Spec
|
2017-11-27 22:03:45 +03:00
|
|
|
import qualified Diffing.Interpreter.Spec
|
2018-07-16 18:07:40 +03:00
|
|
|
import qualified Graphing.Calls.Spec
|
2017-11-27 22:06:12 +03:00
|
|
|
import qualified Integration.Spec
|
2018-06-25 18:55:32 +03:00
|
|
|
import qualified Numeric.Spec
|
2019-03-19 20:13:03 +03:00
|
|
|
import qualified Parsing.Spec
|
2017-11-27 22:04:58 +03:00
|
|
|
import qualified Rendering.TOC.Spec
|
2018-07-31 19:44:20 +03:00
|
|
|
import qualified Reprinting.Spec
|
2018-12-12 01:21:39 +03:00
|
|
|
import qualified Rewriting.Go.Spec
|
2018-12-12 01:36:42 +03:00
|
|
|
import qualified Rewriting.JSON.Spec
|
2018-12-12 01:21:39 +03:00
|
|
|
import qualified Rewriting.Python.Spec
|
2018-11-02 23:55:30 +03:00
|
|
|
import qualified Tags.Spec
|
2017-11-27 22:00:53 +03:00
|
|
|
import qualified Semantic.Spec
|
2017-11-27 21:57:25 +03:00
|
|
|
import qualified Semantic.CLI.Spec
|
2017-11-27 21:52:48 +03:00
|
|
|
import qualified Semantic.IO.Spec
|
2017-11-27 21:58:23 +03:00
|
|
|
import qualified Semantic.Stat.Spec
|
2019-02-02 02:04:23 +03:00
|
|
|
import Semantic.Config (defaultOptions, optionsLogLevel)
|
|
|
|
import Semantic.Task (withOptions, TaskSession(..))
|
2016-01-05 19:27:37 +03:00
|
|
|
import Test.Hspec
|
2019-06-12 18:30:20 +03:00
|
|
|
import Test.Tasty as Tasty
|
|
|
|
import Test.Tasty.Hspec as Tasty
|
|
|
|
|
2019-06-12 20:53:59 +03:00
|
|
|
tests :: (?session :: TaskSession) => [TestTree]
|
|
|
|
tests =
|
2019-06-20 00:56:37 +03:00
|
|
|
[ Integration.Spec.testTree
|
|
|
|
, Semantic.CLI.Spec.testTree
|
2019-08-19 20:34:55 +03:00
|
|
|
, Data.Language.Spec.testTree
|
2019-06-20 00:54:53 +03:00
|
|
|
, Semantic.Stat.Spec.testTree
|
2019-08-07 18:26:54 +03:00
|
|
|
, Data.Scientific.Spec.testTree
|
2019-06-12 18:30:20 +03:00
|
|
|
]
|
|
|
|
|
|
|
|
-- We can't bring this out of the IO monad until we divest
|
|
|
|
-- from hspec, since testSpec operates in IO.
|
2019-06-12 20:53:59 +03:00
|
|
|
allTests :: (?session :: TaskSession) => IO TestTree
|
|
|
|
allTests = do
|
|
|
|
asTastySpecs <- Tasty.testSpecs legacySpecs
|
|
|
|
let allSpecs = tests <> asTastySpecs
|
2019-06-12 18:30:20 +03:00
|
|
|
pure . Tasty.localOption Tasty.Success $ testGroup "semantic" allSpecs
|
|
|
|
|
|
|
|
-- If you're writing new test modules, please don't add to this
|
|
|
|
-- stanza: it is only there to prevent massive rewrites, and is
|
|
|
|
-- converted into a Tasty TestTree in 'main'. (Quoth the tasty-hspec
|
|
|
|
-- documentation: "hspec and tasty serve similar purposes; consider
|
2019-06-12 20:27:34 +03:00
|
|
|
-- using one or the other.") Instead, create a new TestTree value
|
|
|
|
-- in your spec module and add it to the above 'tests' list.
|
2019-06-12 20:53:59 +03:00
|
|
|
legacySpecs :: (?session :: TaskSession) => Spec
|
2019-06-20 00:54:53 +03:00
|
|
|
legacySpecs = parallel $ do
|
2019-06-20 00:22:09 +03:00
|
|
|
describe "Analysis.Go" Analysis.Go.Spec.spec
|
|
|
|
describe "Analysis.PHP" Analysis.PHP.Spec.spec
|
|
|
|
describe "Analysis.Python" Analysis.Python.Spec.spec
|
|
|
|
describe "Analysis.Ruby" Analysis.Ruby.Spec.spec
|
|
|
|
describe "Analysis.TypeScript" Analysis.TypeScript.Spec.spec
|
|
|
|
describe "Assigning.Assignment" Assigning.Assignment.Spec.spec
|
|
|
|
describe "Control.Abstract.Evaluator" Control.Abstract.Evaluator.Spec.spec
|
|
|
|
describe "Data.Diff" Data.Diff.Spec.spec
|
|
|
|
describe "Data.Graph" Data.Graph.Spec.spec
|
|
|
|
describe "Data.Abstract.Path" Data.Abstract.Path.Spec.spec
|
|
|
|
describe "Data.Abstract.Name" Data.Abstract.Name.Spec.spec
|
|
|
|
describe "Data.Functor.Classes.Generic" Data.Functor.Classes.Generic.Spec.spec
|
|
|
|
describe "Data.Semigroup.App" Data.Semigroup.App.Spec.spec
|
|
|
|
describe "Data.Term" Data.Term.Spec.spec
|
|
|
|
describe "Diffing.Algorithm.RWS" Diffing.Algorithm.RWS.Spec.spec
|
|
|
|
describe "Diffing.Algorithm.SES" Diffing.Algorithm.SES.Spec.spec
|
|
|
|
describe "Diffing.Interpreter" Diffing.Interpreter.Spec.spec
|
|
|
|
describe "Graphing.Calls" Graphing.Calls.Spec.spec
|
|
|
|
describe "Numeric" Numeric.Spec.spec
|
|
|
|
describe "Rendering.TOC" Rendering.TOC.Spec.spec
|
|
|
|
describe "Reprinting.Spec" Reprinting.Spec.spec
|
|
|
|
describe "Rewriting.Go" Rewriting.Go.Spec.spec
|
|
|
|
describe "Rewriting.JSON" Rewriting.JSON.Spec.spec
|
|
|
|
describe "Rewriting.Python" Rewriting.Python.Spec.spec
|
|
|
|
describe "Tags.Spec" Tags.Spec.spec
|
|
|
|
describe "Semantic" Semantic.Spec.spec
|
|
|
|
describe "Semantic.IO" Semantic.IO.Spec.spec
|
|
|
|
describe "Parsing" Parsing.Spec.spec
|
2019-06-12 18:30:20 +03:00
|
|
|
|
2016-01-05 19:27:37 +03:00
|
|
|
|
|
|
|
main :: IO ()
|
2018-07-09 21:26:15 +03:00
|
|
|
main = do
|
2019-06-12 18:30:20 +03:00
|
|
|
withOptions defaultOptions { optionsLogLevel = Nothing } $ \ config logger statter ->
|
2019-06-12 20:53:59 +03:00
|
|
|
let ?session = TaskSession config "-" False logger statter
|
|
|
|
in allTests >>= defaultMain
|