change test framework to use files for in and out (s-exp)

This commit is contained in:
Torsten Ruger
2015-09-18 21:55:02 +03:00
parent 396a843a5e
commit 22e3c59674
80 changed files with 946 additions and 13 deletions

View File

@@ -1,2 +1,32 @@
require_relative "unit/test_all"
require_relative "roots/test_all"
require_relative "setup"
require "parslet/convenience"
require "ast/sexp"
class TestAll < MiniTest::Test
include AST::Sexp
def check_file file
inn , out = File.new(file).read.split("-- -- --")
sexp = eval(out)
syntax = Parser::Salama.new.parse_with_debug(inn)
result = Parser::Transform.new.apply(syntax)
assert_equal sexp , result
end
# this creates test methods dynamically. For each test_* method we create
# three test_*[ast/parse/transf] methods that in turn check the three phases.
# runnable_methods is called by minitest to determine which tests to run
def self.runnable_methods
puts "called"
all = Dir["test/cases/*/*.tst"]
puts "case #{all.length}"
tests =[]
all.each do |file|
name = file.sub("test/cases/","").sub("/","_").sub(".tst","")
tests << name
self.send(:define_method, name ) do
send("check_file" , file)
end
end
tests
end
end