diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-01-30 05:31:50 -0800 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-01-30 05:31:50 -0800 |
| commit | 7c813a9e15cb64cdaa6c8c47c84839357d6badcd (patch) | |
| tree | 3efb1b479c9b1a68ff0bcea90a6a1a53413cbb74 /tasks | |
| parent | a5fbaf17f78136d52260a90c3a3647b1893e44e2 (diff) | |
| parent | c1ca6621700fcc486daed1209d0a9b0440a985bf (diff) | |
| download | mruby-7c813a9e15cb64cdaa6c8c47c84839357d6badcd.tar.gz mruby-7c813a9e15cb64cdaa6c8c47c84839357d6badcd.zip | |
Merge pull request #802 from carsonmcdonald/mrbgemstestpassargs
Add ability to pass parameters from mrbgem.rake spec into test scripts.
Diffstat (limited to 'tasks')
| -rw-r--r-- | tasks/mrbgem_spec.rake | 4 | ||||
| -rw-r--r-- | tasks/mrbgems_test.rake | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake index 49e45bbc9..daf4410de 100644 --- a/tasks/mrbgem_spec.rake +++ b/tasks/mrbgem_spec.rake @@ -22,7 +22,7 @@ module MRuby alias :author= :authors= attr_accessor :rbfiles, :objs - attr_accessor :test_objs, :test_rbfiles + attr_accessor :test_objs, :test_rbfiles, :test_args attr_accessor :test_preload attr_block MRuby::Build::COMMANDS @@ -54,6 +54,7 @@ module MRuby objfile(f.relative_path_from(dir).to_s.pathmap("#{build_dir}/%X")) end @test_preload = 'test/assert.rb' + @test_args = {} instance_eval(&@initializer) @@ -140,6 +141,7 @@ module MRuby f.puts %Q[#include "mruby/proc.h"] f.puts %Q[#include "mruby/variable.h"] f.puts %Q[#include "mruby/array.h"] + f.puts %Q[#include "mruby/hash.h"] end end # Specification diff --git a/tasks/mrbgems_test.rake b/tasks/mrbgems_test.rake index cb00aba57..80c309c44 100644 --- a/tasks/mrbgems_test.rake +++ b/tasks/mrbgems_test.rake @@ -32,7 +32,17 @@ MRuby.each_target do f.puts %Q[ exit(0);] f.puts %Q[ }] f.puts %Q[ mrb_const_set(mrb2, mrb_obj_value(mrb2->object_class), mrb_intern(mrb2, "GEMNAME"), mrb_str_new(mrb2, "#{g.name}", #{g.name.length}));] - + + if not g.test_args.empty? + f.puts %Q[ mrb_value test_args_hash = mrb_hash_new_capa(mrb, #{g.test_args.length}); ] + g.test_args.each do |arg_name, arg_value| + escaped_arg_name = arg_name.gsub('\\', '\\\\\\\\').gsub('"', '\"') + escaped_arg_value = arg_value.gsub('\\', '\\\\\\\\').gsub('"', '\"') + f.puts %Q[ mrb_hash_set(mrb2, test_args_hash, mrb_str_new(mrb2, "#{escaped_arg_name.to_s}", #{escaped_arg_name.to_s.length}), mrb_str_new(mrb2, "#{escaped_arg_value.to_s}", #{escaped_arg_value.to_s.length})); ] + end + f.puts %Q[ mrb_const_set(mrb2, mrb_obj_value(mrb2->object_class), mrb_intern(mrb2, "TEST_ARGS"), test_args_hash); ] + end + f.puts %Q[ mrb_#{g.funcname}_gem_test(mrb2);] unless g.test_objs.empty? f.puts %Q[ mrb_load_irep(mrb2, gem_test_irep_#{g.funcname}_#{i});] |
