Files
kraken/tests/tester.krak

66 lines
2.8 KiB
Plaintext
Raw Normal View History

import string:*
import io:*
import os:*
fun error(message: *char) {
println("ERROR:")
println(message)
}
fun main(argc: int, argv: **char): int {
var kraken_path = string("../kraken")
var all_results = string()
var num_passed = 0
var all_results_interp = string()
var num_passed_interp = 0
var name_length = 0
// first iterate and get the length of the longest line
for (var i = 1; i < argc; i++;) {
var name = string(argv[i])
if (name.length() > name_length)
name_length = name.length()
}
var pad_with_spaces = fun(name: string): string {
while (name.length() < name_length) name += " "
return name
}
for (var i = 1; i < argc; i++;) {
var test_name = string(argv[i])
println(string("Doing test for ") + test_name)
var results_file_name = test_name + ".results"
var expected_results_file_name = test_name + ".expected_results"
if (system(kraken_path + " " + test_name + ".krak > " + results_file_name)) error("could not compile")
if (system(string("./") + test_name + " >> " + results_file_name)) error("could not run")
if (file_exists(results_file_name) && file_exists(expected_results_file_name) && read_file(results_file_name) == read_file(expected_results_file_name)) {
println(test_name + "\tPASSED!")
all_results += pad_with_spaces(test_name) + "\tPASSED!\n"
num_passed++
system(string("rm ./") + results_file_name)
} else {
println(test_name + "\tFAILED!")
all_results += pad_with_spaces(test_name) + "\tFAILED!!!\n"
}
results_file_name += ".interp"
if (system(kraken_path + " -i " + test_name + ".krak > " + results_file_name)) error("could not interpret")
if (file_exists(results_file_name) && file_exists(expected_results_file_name) && read_file(results_file_name) == read_file(expected_results_file_name)) {
println(test_name + "interp\tPASSED!")
all_results_interp += pad_with_spaces(test_name+"_interp") + "\tPASSED!\n"
num_passed_interp++
system(string("rm ./") + results_file_name)
} else {
println(test_name + "_interp\tFAILED!")
all_results_interp += pad_with_spaces(test_name + "_interp") + "\tFAILED!!!\n"
}
system(string("rm ./") + test_name + ".krak.*")
system(string("rm ./") + test_name)
}
println(string("\n\nTEST RESULTS: ") + num_passed + "/" + (argc-1))
println(all_results)
println(string("TEST RESULTS: ") + num_passed + "/" + (argc-1))
println(string("\n\nTEST RESULTS INERPRETED: ") + num_passed_interp + "/" + (argc-1))
println(all_results_interp)
println(string("TEST RESULTS: ") + num_passed_interp + "/" + (argc-1))
return 0
}