mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-16 15:52:43 +03:00
92066c24fe
This is set to 1 second by default. Usually if it hasn't found a result by then, it never will, but given that we find the first batch of results then sort them, the timeout also stops us fruitlessly searching for more solutions. Hopefully 1s is more than enough for CI too. There is a mechanism to change the timeout (%search_timeout) so if it turns out that CI needs longer in some cases, we can increase it there. I haven't documented this yet, but proof/definition search needs documenting in general. I'll get to that. The timer mechanism may also be useful elsewhere - I'm considering it for ambiguity warnings, because the ambiguity depth limit isn't working very well for that.
343 lines
13 KiB
Idris
343 lines
13 KiB
Idris
module Main
|
|
|
|
import Test.Golden
|
|
|
|
%default covering
|
|
|
|
------------------------------------------------------------------------
|
|
-- Test cases
|
|
|
|
ttimpTests : TestPool
|
|
ttimpTests = MkTestPool "TTImp" [] Nothing
|
|
[ "basic001", "basic002", "basic003", "basic004", "basic005"
|
|
, "basic006"
|
|
, "coverage001", "coverage002"
|
|
, "dot001"
|
|
, "eta001", "eta002"
|
|
, "lazy001"
|
|
, "nest001", "nest002"
|
|
, "perf001", "perf002", "perf003"
|
|
, "record001", "record002", "record003"
|
|
, "qtt001", "qtt003"
|
|
, "total001", "total002", "total003"
|
|
]
|
|
|
|
idrisTestsBasic : TestPool
|
|
idrisTestsBasic = MkTestPool "Fundamental language features" [] Nothing
|
|
-- Fundamental language features
|
|
["basic001", "basic002", "basic003", "basic004", "basic005",
|
|
"basic006", "basic007", "basic008", "basic009", "basic010",
|
|
"basic011", "basic012", "basic013", "basic014", "basic015",
|
|
"basic016", "basic017", "basic018", "basic019", "basic020",
|
|
"basic021", "basic022", "basic023", "basic024", "basic025",
|
|
"basic026", "basic027", "basic028", "basic029", "basic030",
|
|
"basic031", "basic032", "basic033", "basic034", "basic035",
|
|
"basic036", "basic037", "basic038", "basic039", "basic040",
|
|
"basic041", "basic042", "basic043", "basic044", "basic045",
|
|
"basic046", "basic047", "basic049", "basic050",
|
|
"basic051", "basic052", "basic053", "basic054", "basic055",
|
|
"basic056", "basic057", "basic058", "basic059", "basic060",
|
|
"basic061"]
|
|
|
|
idrisTestsCoverage : TestPool
|
|
idrisTestsCoverage = MkTestPool "Coverage checking" [] Nothing
|
|
-- Coverage checking
|
|
["coverage001", "coverage002", "coverage003", "coverage004",
|
|
"coverage005", "coverage006", "coverage007", "coverage008",
|
|
"coverage009", "coverage010", "coverage011", "coverage012",
|
|
"coverage013", "coverage014", "coverage015", "coverage016",
|
|
"coverage017"]
|
|
|
|
idrisTestsCasetree : TestPool
|
|
idrisTestsCasetree = MkTestPool "Case tree building" [] Nothing
|
|
-- Case tree building
|
|
["casetree001"]
|
|
|
|
idrisTestsWarning : TestPool
|
|
idrisTestsWarning = MkTestPool "Warnings" [] Nothing
|
|
["warning001"]
|
|
|
|
idrisTestsError : TestPool
|
|
idrisTestsError = MkTestPool "Error messages" [] Nothing
|
|
-- Error messages
|
|
["error001", "error002", "error003", "error004", "error005",
|
|
"error006", "error007", "error008", "error009", "error010",
|
|
"error011", "error012", "error013", "error014", "error015",
|
|
"error016", "error017", "error018", "error019",
|
|
-- Parse errors
|
|
"perror001", "perror002", "perror003", "perror004", "perror005",
|
|
"perror006", "perror007", "perror008"]
|
|
|
|
idrisTestsInteractive : TestPool
|
|
idrisTestsInteractive = MkTestPool "Interactive editing" [] Nothing
|
|
-- Interactive editing support
|
|
["interactive001", "interactive002", "interactive003", "interactive004",
|
|
"interactive005", "interactive006", "interactive007", "interactive008",
|
|
"interactive009", "interactive010", "interactive011", "interactive012",
|
|
"interactive013", "interactive014", "interactive015", "interactive016",
|
|
"interactive017", "interactive018", "interactive019", "interactive020",
|
|
"interactive021", "interactive022", "interactive023", "interactive024",
|
|
"interactive025", "interactive026", "interactive027", "interactive028",
|
|
"interactive029", "interactive030", "interactive031", "interactive032",
|
|
"interactive033", "interactive034"]
|
|
|
|
idrisTestsInterface : TestPool
|
|
idrisTestsInterface = MkTestPool "Interface" [] Nothing
|
|
-- Interfaces
|
|
["interface001", "interface002", "interface003", "interface004",
|
|
"interface005", "interface006", "interface007", "interface008",
|
|
"interface009", "interface010", "interface011", "interface012",
|
|
"interface013", "interface014", "interface015", "interface016",
|
|
"interface017", "interface018", "interface019", "interface020",
|
|
"interface021", "interface022", "interface023", "interface024",
|
|
"interface025"]
|
|
|
|
idrisTestsLinear : TestPool
|
|
idrisTestsLinear = MkTestPool "Quantities" [] Nothing
|
|
-- QTT and linearity related
|
|
["linear001", "linear002", "linear003", -- "linear004" -- disabled due to requiring linearity subtyping
|
|
"linear005", "linear006", "linear007", "linear008",
|
|
"linear009", "linear010", "linear011", "linear012",
|
|
"linear013", "linear014"]
|
|
|
|
idrisTestsLiterate : TestPool
|
|
idrisTestsLiterate = MkTestPool "Literate programming" [] Nothing
|
|
-- Literate
|
|
["literate001", "literate002", "literate003", "literate004",
|
|
"literate005", "literate006", "literate007", "literate008",
|
|
"literate009", "literate010", "literate011", "literate012",
|
|
"literate013", "literate014", "literate015", "literate016"]
|
|
|
|
idrisTestsPerformance : TestPool
|
|
idrisTestsPerformance = MkTestPool "Performance" [] Nothing
|
|
-- Performance: things which have been slow in the past, or which
|
|
-- pose interesting challenges for the elaborator
|
|
["perf001", "perf002", "perf003", "perf004", "perf005",
|
|
"perf007", "perf008"]
|
|
|
|
idrisTestsRegression : TestPool
|
|
idrisTestsRegression = MkTestPool "Various regressions" [] Nothing
|
|
-- Miscellaneous regressions
|
|
["reg001", "reg002", "reg003", "reg004", "reg005", "reg006", "reg007",
|
|
"reg008", "reg009", "reg010", "reg011", "reg012", "reg013", "reg014",
|
|
"reg015", "reg016", "reg017", "reg018", "reg019", "reg020", "reg021",
|
|
"reg022", "reg023", "reg024", "reg025", "reg026", "reg027", "reg028",
|
|
"reg029", "reg030", "reg031", "reg032", "reg033", "reg034", "reg035",
|
|
"reg036", "reg037", "reg038", "reg039", "reg040", "reg041", "reg042"]
|
|
|
|
idrisTestsData : TestPool
|
|
idrisTestsData = MkTestPool "Data and record types" [] Nothing
|
|
[-- Data types
|
|
"data001",
|
|
-- Records, access and dependent update
|
|
"record001", "record002", "record003", "record004", "record005",
|
|
"record006", "record007", "record008"]
|
|
|
|
idrisTestsBuiltin : TestPool
|
|
idrisTestsBuiltin = MkTestPool "Builtin types and functions" [] Nothing
|
|
-- %builtin related tests for the frontend (type-checking)
|
|
["builtin001", "builtin002", "builtin003", "builtin004", "builtin005",
|
|
"builtin006", "builtin007", "builtin008", "builtin009", "builtin010",
|
|
"builtin011"]
|
|
|
|
idrisTestsEvaluator : TestPool
|
|
idrisTestsEvaluator = MkTestPool "Evaluation" [] Nothing
|
|
[ -- Evaluator
|
|
"evaluator001", "evaluator002", "evaluator003",
|
|
-- Miscellaneous REPL
|
|
"interpreter001", "interpreter002", "interpreter003", "interpreter004",
|
|
"interpreter005", "interpreter006", "interpreter007"]
|
|
|
|
idrisTestsAllBackends : Requirement -> TestPool
|
|
idrisTestsAllBackends cg = MkTestPool
|
|
("Test across all backends: " ++ show cg ++ " instance")
|
|
[] (Just cg)
|
|
[ -- Evaluator
|
|
"evaluator004",
|
|
-- Unfortunately the behaviour of Double is platform dependent so the
|
|
-- following test is turned off.
|
|
-- "evaluator005",
|
|
"basic048",
|
|
"perf006"]
|
|
|
|
idrisTests : TestPool
|
|
idrisTests = MkTestPool "Misc" [] Nothing
|
|
-- Documentation strings
|
|
["docs001", "docs002", "docs003",
|
|
-- Eta equality
|
|
"eta001",
|
|
-- Modules and imports
|
|
"import001", "import002", "import003", "import004", "import005",
|
|
-- Implicit laziness, lazy evaluation
|
|
"lazy001", "lazy002",
|
|
-- Namespace blocks
|
|
"namespace001",
|
|
-- Parameters blocks
|
|
"params001","params002",
|
|
-- Packages and ipkg files
|
|
"pkg001", "pkg002", "pkg003", "pkg004", "pkg005", "pkg006", "pkg007",
|
|
"pkg008", "pkg009", "pkg010",
|
|
-- Positivity checking
|
|
"positivity001", "positivity002", "positivity003",
|
|
-- Larger programs arising from real usage. Typically things with
|
|
-- interesting interactions between features
|
|
"real001", "real002",
|
|
-- Quotation and reflection
|
|
"reflection001", "reflection002", "reflection003", "reflection004",
|
|
"reflection005", "reflection006", "reflection007", "reflection008",
|
|
"reflection009",
|
|
-- Totality checking
|
|
"total001", "total002", "total003", "total004", "total005",
|
|
"total006", "total007", "total008", "total009", "total010",
|
|
-- The 'with' rule
|
|
"with001", "with002", "with004", "with005",
|
|
-- with-disambiguation
|
|
"with003",
|
|
-- pretty printing
|
|
"pretty001"]
|
|
|
|
typeddTests : TestPool
|
|
typeddTests = MkTestPool "Type Driven Development" [] Nothing
|
|
[ "chapter01", "chapter02", "chapter03", "chapter04", "chapter05"
|
|
, "chapter06", "chapter07", "chapter08", "chapter09", "chapter10"
|
|
, "chapter11", "chapter12", "chapter13", "chapter14"
|
|
]
|
|
|
|
chezTests : TestPool
|
|
chezTests = MkTestPool "Chez backend" [] (Just Chez)
|
|
[ "chez001", "chez002", "chez003", "chez004", "chez005", "chez006"
|
|
, "chez007", "chez008", "chez009", "chez010", "chez011", "chez012"
|
|
, "chez013", "chez014", "chez015", "chez016", "chez017", "chez018"
|
|
, "chez019", "chez020", "chez021", "chez022", "chez023", "chez024"
|
|
, "chez025", "chez026", "chez027", "chez028", "chez029", "chez030"
|
|
, "chez031", "chez032"
|
|
, "futures001"
|
|
, "bitops"
|
|
, "casts"
|
|
, "newints"
|
|
, "integers"
|
|
, "semaphores001"
|
|
, "semaphores002"
|
|
, "perf001"
|
|
, "reg001"
|
|
]
|
|
|
|
refcTests : TestPool
|
|
refcTests = MkTestPool "Reference counting C backend" [] (Just C)
|
|
[ "refc001" , "refc002"
|
|
, "strings", "integers", "doubles"
|
|
, "buffer", "clock", "args"
|
|
]
|
|
|
|
racketTests : TestPool
|
|
racketTests = MkTestPool "Racket backend" [] (Just Racket)
|
|
[ "forkjoin001"
|
|
, "semaphores001", "semaphores002"
|
|
, "futures001"
|
|
, "mutex001", "mutex002", "mutex003", "mutex004", "mutex005"
|
|
, "conditions001"
|
|
, "conditions002"
|
|
, "conditions003"
|
|
, "conditions004"
|
|
, "conditions005"
|
|
-- , "conditions006"
|
|
-- , "conditions007"
|
|
]
|
|
|
|
nodeTests : TestPool
|
|
nodeTests = MkTestPool "Node backend" [] (Just Node)
|
|
[ "node001", "node002", "node003", "node004", "node005", "node006"
|
|
, "node007", "node008", "node009", "node011", "node012", "node015"
|
|
, "node017", "node018", "node019", "node021", "node022", "node023"
|
|
, "node024", "node025"
|
|
, "perf001"
|
|
-- , "node14", "node020"
|
|
, "args"
|
|
, "bitops"
|
|
, "casts"
|
|
, "newints"
|
|
, "reg001"
|
|
, "syntax001"
|
|
, "tailrec001"
|
|
, "idiom001"
|
|
, "integers"
|
|
]
|
|
|
|
ideModeTests : TestPool
|
|
ideModeTests = MkTestPool "IDE mode" [] Nothing
|
|
[ "ideMode001", "ideMode002", "ideMode003", "ideMode004", "ideMode005"
|
|
]
|
|
|
|
preludeTests : TestPool
|
|
preludeTests = MkTestPool "Prelude library" [] Nothing
|
|
[ "reg001"
|
|
]
|
|
|
|
templateTests : TestPool
|
|
templateTests = MkTestPool "Test templates" [] Nothing
|
|
[ "simple-test", "ttimp", "with-ipkg"
|
|
]
|
|
|
|
-- base library tests are run against
|
|
-- each codegen supported and to keep
|
|
-- things simple it's all one test group
|
|
-- that only runs if all backends are
|
|
-- available.
|
|
baseLibraryTests : TestPool
|
|
baseLibraryTests = MkTestPool "Base library" [Chez, Node] Nothing
|
|
[ "system_file001"
|
|
, "data_bits001"
|
|
, "system_info001"
|
|
, "system_signal001", "system_signal002", "system_signal003", "system_signal004"
|
|
]
|
|
|
|
-- same behavior as `baseLibraryTests`
|
|
contribLibraryTests : TestPool
|
|
contribLibraryTests = MkTestPool "Contrib library" [Chez, Node] Nothing
|
|
[ "json_001"
|
|
]
|
|
|
|
codegenTests : TestPool
|
|
codegenTests = MkTestPool "Code generation" [] Nothing
|
|
[ "con001"
|
|
, "builtin001"
|
|
]
|
|
|
|
main : IO ()
|
|
main = runner $
|
|
[ testPaths "ttimp" ttimpTests
|
|
, testPaths "idris2" idrisTestsBasic
|
|
, testPaths "idris2" idrisTestsCoverage
|
|
, testPaths "idris2" idrisTestsCasetree
|
|
, testPaths "idris2" idrisTestsError
|
|
, testPaths "idris2" idrisTestsWarning
|
|
, testPaths "idris2" idrisTestsInteractive
|
|
, testPaths "idris2" idrisTestsInterface
|
|
, testPaths "idris2" idrisTestsLiterate
|
|
, testPaths "idris2" idrisTestsLinear
|
|
, testPaths "idris2" idrisTestsPerformance
|
|
, testPaths "idris2" idrisTestsRegression
|
|
, testPaths "idris2" idrisTestsData
|
|
, testPaths "idris2" idrisTestsBuiltin
|
|
, testPaths "idris2" idrisTestsEvaluator
|
|
, testPaths "idris2" idrisTests
|
|
, testPaths "typedd-book" typeddTests
|
|
, testPaths "ideMode" ideModeTests
|
|
, testPaths "prelude" preludeTests
|
|
, testPaths "base" baseLibraryTests
|
|
, testPaths "contrib" contribLibraryTests
|
|
, testPaths "chez" chezTests
|
|
, testPaths "refc" refcTests
|
|
, testPaths "racket" racketTests
|
|
, testPaths "node" nodeTests
|
|
, testPaths "templates" templateTests
|
|
, testPaths "codegen" codegenTests
|
|
]
|
|
++ map (testPaths "allbackends" . idrisTestsAllBackends) [Chez, Node, Racket]
|
|
|
|
|
|
where
|
|
|
|
testPaths : String -> TestPool -> TestPool
|
|
testPaths dir = record { testCases $= map ((dir ++ "/") ++) }
|