diff options
Diffstat (limited to 'test/-ext-/load')
| -rw-r--r-- | test/-ext-/load/script.rb | 2 | ||||
| -rw-r--r-- | test/-ext-/load/test_dot_dot.rb | 11 | ||||
| -rw-r--r-- | test/-ext-/load/test_protect.rb | 14 | ||||
| -rw-r--r-- | test/-ext-/load/test_resolve_symbol.rb | 27 | ||||
| -rw-r--r-- | test/-ext-/load/test_stringify_symbols.rb | 35 |
5 files changed, 89 insertions, 0 deletions
diff --git a/test/-ext-/load/script.rb b/test/-ext-/load/script.rb new file mode 100644 index 0000000000..4bc2480587 --- /dev/null +++ b/test/-ext-/load/script.rb @@ -0,0 +1,2 @@ +# frozen_string_literal: true +raise "foo" diff --git a/test/-ext-/load/test_dot_dot.rb b/test/-ext-/load/test_dot_dot.rb new file mode 100644 index 0000000000..f087ff62c0 --- /dev/null +++ b/test/-ext-/load/test_dot_dot.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: false +require 'test/unit' + +class Test_DotDot < Test::Unit::TestCase + def test_load_dot_dot + feature = '[ruby-dev:41774]' + assert_nothing_raised(LoadError, feature) { + require '-test-/load/dot.dot' + } + end +end diff --git a/test/-ext-/load/test_protect.rb b/test/-ext-/load/test_protect.rb new file mode 100644 index 0000000000..83b179b34c --- /dev/null +++ b/test/-ext-/load/test_protect.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true +require 'test/unit' +require '-test-/load/protect' + +class Test_Load_Protect < Test::Unit::TestCase + def test_load_protect + assert_raise(LoadError) { + Bug.load_protect(__dir__+"/nonexistent.rb") + } + assert_raise_with_message(RuntimeError, "foo") { + Bug.load_protect(__dir__+"/script.rb") + } + end +end diff --git a/test/-ext-/load/test_resolve_symbol.rb b/test/-ext-/load/test_resolve_symbol.rb new file mode 100644 index 0000000000..471d3acebd --- /dev/null +++ b/test/-ext-/load/test_resolve_symbol.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true +require 'test/unit' + +class Test_Load_ResolveSymbol < Test::Unit::TestCase + def test_load_resolve_symbol_resolver + assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}") + begin; + feature = "Feature #20005" + assert_raise(LoadError, "resolve_symbol_target is not loaded") { + require '-test-/load/resolve_symbol_resolver' + } + require '-test-/load/resolve_symbol_target' + assert_nothing_raised(LoadError, "#{feature} resolver can be loaded") { + require '-test-/load/resolve_symbol_resolver' + } + assert_not_nil ResolveSymbolResolver + assert_equal "from target", ResolveSymbolResolver.any_method + + assert_raise(LoadError, "tries to resolve missing feature name, and it should raise LoadError") { + ResolveSymbolResolver.try_resolve_fname + } + assert_raise(LoadError, "tries to resolve missing symbol name, and it should raise LoadError") { + ResolveSymbolResolver.try_resolve_sname + } + end; + end +end diff --git a/test/-ext-/load/test_stringify_symbols.rb b/test/-ext-/load/test_stringify_symbols.rb new file mode 100644 index 0000000000..0d9736b591 --- /dev/null +++ b/test/-ext-/load/test_stringify_symbols.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true +require 'test/unit' + +class Test_Load_stringify_symbols < Test::Unit::TestCase + def test_load_stringify_symbol_required_extensions + require '-test-/load/stringify_symbols' + require '-test-/load/stringify_target' + r1 = StringifySymbols.stringify_symbol("-test-/load/stringify_target", "stt_any_method") + assert_not_nil r1 + r2 = StringifySymbols.stringify_symbol("-test-/load/stringify_target.so", "stt_any_method") + assert_equal r1, r2, "resolved symbols should be equal even with or without .so suffix" + end + + def test_load_stringify_symbol_statically_linked + require '-test-/load/stringify_symbols' + # "complex.so" is actually not a statically linked extension. + # But it is registered in $LOADED_FEATURES, so it can be a target of this test. + r1 = StringifySymbols.stringify_symbol("complex", "rb_complex_minus") + assert_not_nil r1 + r2 = StringifySymbols.stringify_symbol("complex.so", "rb_complex_minus") + assert_equal r1, r2 + end + + def test_load_stringify_symbol_missing_target + require '-test-/load/stringify_symbols' + r1 = assert_nothing_raised { + StringifySymbols.stringify_symbol("something_missing", "unknown_method") + } + assert_nil r1 + r2 = assert_nothing_raised { + StringifySymbols.stringify_symbol("complex.so", "unknown_method") + } + assert_nil r2 + end +end |
