Commit 6e28c0eb authored by Masaki Muranaka's avatar Masaki Muranaka

Add "test runner" support for cross builds.

 "test runner" means target simulator like QEmu, GDB sim, and so on. Also "test runner" might be debug agents for real targets.
If you do not setup test_runner, Rake will work same as before.
parent e885e59d
...@@ -114,4 +114,7 @@ end ...@@ -114,4 +114,7 @@ end
# conf.build_mrbtest_lib_only # conf.build_mrbtest_lib_only
# #
# conf.gem 'examples/mrbgems/c_and_ruby_extension_example' # conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
#
# conf.test_runner.command = 'env'
#
# end # end
...@@ -194,10 +194,21 @@ module MRuby ...@@ -194,10 +194,21 @@ module MRuby
end # Build end # Build
class CrossBuild < Build class CrossBuild < Build
attr_block %w(test_runner)
def initialize(name, &block)
@test_runner = Command::CrossTestRunner.new(self)
super
end
def run_test def run_test
mrbtest = exefile("#{build_dir}/test/mrbtest") mrbtest = exefile("#{build_dir}/test/mrbtest")
puts "You should run #{mrbtest} on target device." if (@test_runner.command == nil)
puts puts "You should run #{mrbtest} on target device."
puts
else
@test_runner.run(mrbtest)
end
end end
end # CrossBuild end # CrossBuild
end # MRuby end # MRuby
...@@ -259,4 +259,24 @@ module MRuby ...@@ -259,4 +259,24 @@ module MRuby
end end
end end
end end
class Command::CrossTestRunner < Command
attr_accessor :runner_options
attr_accessor :verbose_flag
attr_accessor :flags
def initialize(build)
super
@command = nil
@runner_options = '%{flags} %{infile}'
@verbose_flag = ''
@flags = []
end
def run(testbinfile)
puts "TEST for " + @build.name
_run runner_options, { :flags => [flags, verbose_flag].flatten.join(' '), :infile => testbinfile }
end
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment