@@ -66,33 +66,27 @@ MRuby::Gem::Specification.new('mruby-test') do |spec|
6666f.puts %Q[void mrb_t_pass_result(mrb_state *dst, mrb_state *src);]
6767f.puts %Q[void GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb_state *mrb) {]
6868unless g.test_rbfiles.empty?
69-f.puts %Q[ mrb_state *mrb2;]
7069unless g.test_args.empty?
7170f.puts %Q[ mrb_value test_args_hash;]
7271end
72+f.puts %Q[ mrb_state *mrb2 = mrb_open_core(mrb_default_allocf, NULL);]
73+f.puts %Q[ if (mrb2 == NULL) {]
74+f.puts %Q[ fprintf(stderr, "Invalid mrb_state, exiting \%s", __func__);]
75+f.puts %Q[ exit(EXIT_FAILURE);]
76+f.puts %Q[ }]
77+f.puts %Q[ mrb_const_set(mrb2, mrb_obj_value(mrb2->object_class), mrb_intern_lit(mrb2, "GEMNAME"), mrb_str_new(mrb2, "#{g.name}", #{g.name.length}));]
78+if test_preload.nil?
79+f.puts %Q[ mrb_load_irep(mrb2, mrbtest_assert_irep);]
80+else
81+f.puts %Q[ mrb_load_irep(mrb2, gem_test_irep_#{g.funcname}_preload);]
82+end
83+dep_list.each do |d|
84+f.puts %Q[ GENERATED_TMP_mrb_#{d.funcname}_gem_init(mrb2);]
85+f.puts %Q[ mrb_state_atexit(mrb2, GENERATED_TMP_mrb_#{d.funcname}_gem_final);]
86+end
87+f.puts %Q[ mrb_init_test_driver(mrb2, mrb_test(mrb_gv_get(mrb, mrb_intern_lit(mrb, "$mrbtest_verbose"))));]
88+f.puts %Q[ ]
7389g.test_rbfiles.count.times do |i|
74-f.puts %Q[ mrb2 = mrb_open_core(mrb_default_allocf, NULL);]
75-f.puts %Q[ if (mrb2 == NULL) {]
76-f.puts %Q[ fprintf(stderr, "Invalid mrb_state, exiting \%s", __func__);]
77-f.puts %Q[ exit(EXIT_FAILURE);]
78-f.puts %Q[ }]
79-dep_list.each do |d|
80-f.puts %Q[ GENERATED_TMP_mrb_#{d.funcname}_gem_init(mrb2);]
81-f.puts %Q[ mrb_state_atexit(mrb2, GENERATED_TMP_mrb_#{d.funcname}_gem_final);]
82-end
83-f.puts %Q[ mrb_init_test_driver(mrb2, mrb_test(mrb_gv_get(mrb, mrb_intern_lit(mrb, "$mrbtest_verbose"))));]
84-if test_preload.nil?
85-f.puts %Q[ mrb_load_irep(mrb2, mrbtest_assert_irep);]
86-else
87-f.puts %Q[ mrb_load_irep(mrb2, gem_test_irep_#{g.funcname}_preload);]
88-end
89-f.puts %Q[ if (mrb2->exc) {]
90-f.puts %Q[ mrb_print_error(mrb2);]
91-f.puts %Q[ mrb_close(mrb2);]
92-f.puts %Q[ exit(EXIT_FAILURE);]
93-f.puts %Q[ }]
94-f.puts %Q[ mrb_const_set(mrb2, mrb_obj_value(mrb2->object_class), mrb_intern_lit(mrb2, "GEMNAME"), mrb_str_new(mrb2, "#{g.name}", #{g.name.length}));]
95-9690unless g.test_args.empty?
9791f.puts %Q[ test_args_hash = mrb_hash_new_capa(mrb2, #{g.test_args.length}); ]
9892g.test_args.each do |arg_name, arg_value|
@@ -104,13 +98,16 @@ MRuby::Gem::Specification.new('mruby-test') do |spec|
10498end
10599106100f.puts %Q[ mrb_#{g.funcname}_gem_test(mrb2);] if g.custom_test_init?
107-108101f.puts %Q[ mrb_load_irep(mrb2, gem_test_irep_#{g.funcname}_#{i});]
102+f.puts %Q[ if (mrb2->exc) {]
103+f.puts %Q[ mrb_print_error(mrb2);]
104+f.puts %Q[ mrb_close(mrb2);]
105+f.puts %Q[ exit(EXIT_FAILURE);]
106+f.puts %Q[ }]
109107f.puts %Q[ ]
110-111-f.puts %Q[ mrb_t_pass_result(mrb, mrb2);]
112-f.puts %Q[ mrb_close(mrb2);]
113108end
109+f.puts %Q[ mrb_t_pass_result(mrb, mrb2);]
110+f.puts %Q[ mrb_close(mrb2);]
114111end
115112f.puts %Q[}]
116113end