@@ -66,33 +66,27 @@ MRuby::Gem::Specification.new('mruby-test') do |spec|
6666 f . puts %Q[void mrb_t_pass_result(mrb_state *dst, mrb_state *src);]
6767 f . puts %Q[void GENERATED_TMP_mrb_#{ g . funcname } _gem_test(mrb_state *mrb) {]
6868 unless g . test_rbfiles . empty?
69- f . puts %Q[ mrb_state *mrb2;]
7069 unless g . test_args . empty?
7170 f . puts %Q[ mrb_value test_args_hash;]
7271 end
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[ ]
7389 g . 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-
9690 unless g . test_args . empty?
9791 f . puts %Q[ test_args_hash = mrb_hash_new_capa(mrb2, #{ g . test_args . length } ); ]
9892 g . test_args . each do |arg_name , arg_value |
@@ -104,13 +98,16 @@ MRuby::Gem::Specification.new('mruby-test') do |spec|
10498 end
10599
106100 f . puts %Q[ mrb_#{ g . funcname } _gem_test(mrb2);] if g . custom_test_init?
107-
108101 f . 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[ }]
109107 f . puts %Q[ ]
110-
111- f . puts %Q[ mrb_t_pass_result(mrb, mrb2);]
112- f . puts %Q[ mrb_close(mrb2);]
113108 end
109+ f . puts %Q[ mrb_t_pass_result(mrb, mrb2);]
110+ f . puts %Q[ mrb_close(mrb2);]
114111 end
115112 f . puts %Q[}]
116113 end
0 commit comments