2019-05-07 12:42:45 +03:00
|
|
|
module Main
|
|
|
|
|
|
|
|
import System
|
|
|
|
|
|
|
|
%default covering
|
|
|
|
|
|
|
|
ttimpTests : List String
|
|
|
|
ttimpTests
|
2019-05-11 22:50:51 +03:00
|
|
|
= ["basic001", "basic002", "basic003", "basic004", "basic005",
|
2019-05-26 13:34:02 +03:00
|
|
|
"basic006",
|
2019-06-03 01:43:21 +03:00
|
|
|
"coverage001", "coverage002",
|
2019-05-25 20:39:21 +03:00
|
|
|
"dot001",
|
2019-05-07 17:06:00 +03:00
|
|
|
"eta001", "eta002",
|
2019-05-22 21:42:43 +03:00
|
|
|
"lazy001",
|
2019-05-17 15:52:09 +03:00
|
|
|
"nest001", "nest002",
|
2019-05-19 22:24:14 +03:00
|
|
|
"perf001", "perf002", "perf003",
|
2019-05-27 12:56:13 +03:00
|
|
|
"record001", "record002",
|
2019-05-27 14:15:37 +03:00
|
|
|
"rewrite001",
|
2019-05-26 13:34:02 +03:00
|
|
|
"qtt001", "qtt002", "qtt003",
|
2019-06-02 03:23:01 +03:00
|
|
|
"search001", "search002", "search003", "search004", "search005",
|
2019-06-05 19:28:55 +03:00
|
|
|
"total001", "total002", "total003",
|
2019-05-29 13:57:07 +03:00
|
|
|
"with001"]
|
2019-05-07 12:42:45 +03:00
|
|
|
|
2019-06-09 13:58:29 +03:00
|
|
|
idrisTests : List String
|
|
|
|
idrisTests
|
2019-06-11 13:54:47 +03:00
|
|
|
= ["basic001",
|
2019-06-23 22:36:06 +03:00
|
|
|
"coverage001", "coverage002",
|
2019-06-24 18:23:32 +03:00
|
|
|
"interactive001", "interactive002", "interactive003", "interactive004",
|
|
|
|
"interactive005", "interactive006", "interactive007", "interactive008",
|
|
|
|
"interactive009", "interactive010", "interactive011", "interactive012",
|
2019-06-24 20:04:43 +03:00
|
|
|
"interface001", "interface002", "interface003", "interface004",
|
|
|
|
"interface005",
|
2019-06-24 14:44:34 +03:00
|
|
|
"import001", "import002",
|
2019-06-24 20:08:32 +03:00
|
|
|
"lazy001",
|
2019-06-24 14:44:34 +03:00
|
|
|
"record001", "record002"]
|
2019-06-09 13:58:29 +03:00
|
|
|
|
2019-05-07 12:42:45 +03:00
|
|
|
chdir : String -> IO Bool
|
|
|
|
chdir dir
|
|
|
|
= do ok <- foreign FFI_C "chdir" (String -> IO Int) dir
|
|
|
|
pure (ok == 0)
|
|
|
|
|
|
|
|
fail : String -> IO ()
|
|
|
|
fail err
|
|
|
|
= do putStrLn err
|
|
|
|
exitWith (ExitFailure 1)
|
|
|
|
|
|
|
|
runTest : String -> String -> String -> IO Bool
|
|
|
|
runTest dir prog test
|
|
|
|
= do chdir (dir ++ "/" ++ test)
|
|
|
|
putStr $ dir ++ "/" ++ test ++ ": "
|
|
|
|
system $ "sh ./run " ++ prog ++ " > output"
|
|
|
|
Right out <- readFile "output"
|
|
|
|
| Left err => do print err
|
|
|
|
pure False
|
|
|
|
Right exp <- readFile "expected"
|
|
|
|
| Left err => do print err
|
|
|
|
pure False
|
|
|
|
if (out == exp)
|
|
|
|
then putStrLn "success"
|
|
|
|
else putStrLn "FAILURE"
|
|
|
|
chdir "../.."
|
|
|
|
pure (out == exp)
|
|
|
|
|
|
|
|
main : IO ()
|
|
|
|
main
|
2019-06-11 13:54:47 +03:00
|
|
|
= do [_, idris2] <- getArgs
|
2019-05-07 12:42:45 +03:00
|
|
|
| _ => do putStrLn "Usage: runtests [ttimp path]"
|
2019-06-11 13:54:47 +03:00
|
|
|
ttimps <- traverse (runTest "ttimp" idris2) ttimpTests
|
|
|
|
idrs <- traverse (runTest "idris2" idris2) idrisTests
|
|
|
|
if (any not (ttimps ++ idrs))
|
2019-05-07 12:42:45 +03:00
|
|
|
then exitWith (ExitFailure 1)
|
|
|
|
else exitWith ExitSuccess
|
|
|
|
|