ruby/test/-ext-/load/test_stringify_symbols.rb
Satoshi Tagomori e51f9e9f75 rb_ext_resolve_symbol: C API to resolve and return externed symbols [Feature #20005]
This is a C API for extensions to resolve and get function symbols of other extensions.
Extensions can check the expected symbol is correctly loaded and accessible, and
use it if it is available.
Otherwise, extensions can raise their own error to guide users to setup their
environments correctly and what's missing.
2023-12-14 17:39:42 +09:00

35 lines
1.3 KiB
Ruby

# 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