summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--build_config.rb3
-rw-r--r--tasks/mruby_build.rake15
-rw-r--r--tasks/mruby_build_commands.rake20
3 files changed, 36 insertions, 2 deletions
diff --git a/build_config.rb b/build_config.rb
index 5ea4aad4f..670721ee3 100644
--- a/build_config.rb
+++ b/build_config.rb
@@ -114,4 +114,7 @@ end
# conf.build_mrbtest_lib_only
#
# conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
+#
+# conf.test_runner.command = 'env'
+#
# end
diff --git a/tasks/mruby_build.rake b/tasks/mruby_build.rake
index e24a8ac61..dcb557bfd 100644
--- a/tasks/mruby_build.rake
+++ b/tasks/mruby_build.rake
@@ -194,10 +194,21 @@ module MRuby
end # Build
class CrossBuild < Build
+ attr_block %w(test_runner)
+
+ def initialize(name, &block)
+ @test_runner = Command::CrossTestRunner.new(self)
+ super
+ end
+
def run_test
mrbtest = exefile("#{build_dir}/test/mrbtest")
- puts "You should run #{mrbtest} on target device."
- puts
+ if (@test_runner.command == nil)
+ puts "You should run #{mrbtest} on target device."
+ puts
+ else
+ @test_runner.run(mrbtest)
+ end
end
end # CrossBuild
end # MRuby
diff --git a/tasks/mruby_build_commands.rake b/tasks/mruby_build_commands.rake
index b647ccf98..b968d07be 100644
--- a/tasks/mruby_build_commands.rake
+++ b/tasks/mruby_build_commands.rake
@@ -259,4 +259,24 @@ module MRuby
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