diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/assert.rb | 33 | ||||
| -rw-r--r-- | test/mrbtest.rake | 20 | ||||
| -rw-r--r-- | test/t/exception.rb | 28 |
3 files changed, 72 insertions, 9 deletions
diff --git a/test/assert.rb b/test/assert.rb index 9f3231cd4..027d2a66f 100644 --- a/test/assert.rb +++ b/test/assert.rb @@ -79,6 +79,39 @@ def assert_nil(obj, msg = nil) assert_true(obj.nil?, msg, diff) end +def assert_include(collection, obj, msg = nil) + msg = "Expected #{collection.inspect} to include #{obj.inspect}" unless msg + diff = " Collection: #{collection.inspect}\n" + + " Object: #{obj.inspect}" + assert_true(collection.include?(obj), msg, diff) +end + +def assert_raise(*exp) + if $mrbtest_assert + $mrbtest_assert_idx += 1 + msg = exp.last.class == String ? exp.pop : nil + msg = msg.to_s + " : " if msg + should_raise = false + begin + yield + should_raise = true + rescue Exception => e + msg = "#{msg}#{exp.inspect} exception expected, not" + diff = " Class: <#{e.class}>\n" + + " Message: #{e.message}" + if exp.any?{|ex| ex.instance_of?(Module) ? e.kind_of?(ex) : ex == e.class } + $mrbtest_assert.push([$mrbtest_assert_idx, msg, diff]) + end + end + + exp = exp.first if exp.first + if should_raise + msg = "#{msg}#{exp.inspect} expected but nothing was raised." + $mrbtest_assert.push([$mrbtest_assert_idx, msg, nil]) + end + end +end + ## # Report the test result and print all assertions # which were reported broken. diff --git a/test/mrbtest.rake b/test/mrbtest.rake index 03e6c7ece..0507981d6 100644 --- a/test/mrbtest.rake +++ b/test/mrbtest.rake @@ -1,20 +1,22 @@ MRuby.each_target do - dir = File.dirname(__FILE__).relative_path_from(root) + current_dir = File.dirname(__FILE__).relative_path_from(Dir.pwd) + relative_from_root = File.dirname(__FILE__).relative_path_from(MRUBY_ROOT) + current_build_dir = "#{build_dir}/#{relative_from_root}" - exec = exefile("#{build_dir}/#{dir}/mrbtest") - clib = "#{build_dir}/#{dir}/mrbtest.c" + exec = exefile("#{current_build_dir}/mrbtest") + clib = "#{current_build_dir}/mrbtest.c" mlib = clib.ext(exts.object) - mrbs = Dir.glob("#{dir}/t/*.rb") - init = "#{dir}/init_mrbtest.c" - asslib = "#{dir}/assert.rb" + mrbs = Dir.glob("#{current_dir}/t/*.rb") + init = "#{current_dir}/init_mrbtest.c" + asslib = "#{current_dir}/assert.rb" - mrbtest_lib = libfile("#{build_dir}/#{dir}/mrbtest") + mrbtest_lib = libfile("#{current_build_dir}/mrbtest") file mrbtest_lib => [mlib, gems.map(&:test_objs), gems.map { |g| g.test_rbireps.ext(exts.object) }].flatten do |t| archiver.run t.name, t.prerequisites end unless build_mrbtest_lib_only? - driver_obj = objfile("#{build_dir}/#{dir}/driver") + driver_obj = objfile("#{current_build_dir}/driver") file exec => [driver_obj, mrbtest_lib, libfile("#{build_dir}/lib/libmruby")] do |t| gem_flags = gems.map { |g| g.linker.flags } gem_flags_before_libraries = gems.map { |g| g.linker.flags_before_libraries } @@ -27,7 +29,7 @@ MRuby.each_target do file mlib => [clib] file clib => [mrbcfile, init, asslib] + mrbs do |t| - _pp "GEN", "*.rb", "#{clib}" + _pp "GEN", "*.rb", "#{clib.relative_path}" FileUtils.mkdir_p File.dirname(clib) open(clib, 'w') do |f| f.puts IO.read(init) diff --git a/test/t/exception.rb b/test/t/exception.rb index a2e6acc07..663c8f337 100644 --- a/test/t/exception.rb +++ b/test/t/exception.rb @@ -287,6 +287,34 @@ assert('Exception 16') do end end +assert('Exception 17') do + begin + raise "a" # StandardError + rescue ArgumentError + 1 + rescue StandardError + 2 + else + 3 + ensure + 4 + end == 2 +end + +assert('Exception 18') do + begin + 0 + rescue ArgumentError + 1 + rescue StandardError + 2 + else + 3 + ensure + 4 + end == 3 +end + assert('Exception#inspect without message') do Exception.new.inspect end |
