Idris2-boot/tests/Main.idr

74 lines
2.2 KiB
Idris
Raw Normal View History

module Main
import System
%default covering
ttimpTests : List String
ttimpTests
= ["basic001", "basic002", "basic003", "basic004", "basic005",
"basic006",
"coverage001", "coverage002",
"dot001",
"eta001", "eta002",
"lazy001",
"nest001", "nest002",
"perf001", "perf002", "perf003",
"record001", "record002",
"rewrite001",
"qtt001", "qtt002", "qtt003",
"search001", "search002", "search003", "search004", "search005",
"total001", "total002", "total003",
2019-05-29 13:57:07 +03:00
"with001"]
idrisTests : List String
idrisTests
2019-06-11 13:54:47 +03:00
= ["basic001",
"coverage001", "coverage002",
"interactive001", "interactive002", "interactive003", "interactive004",
"interactive005", "interactive006", "interactive007", "interactive008",
"interactive009", "interactive010", "interactive011", "interactive012",
"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"]
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
| _ => 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))
then exitWith (ExitFailure 1)
else exitWith ExitSuccess