diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-11-06 16:59:55 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-11-06 17:58:47 +0900 |
commit | 4329554f171fdb483cafa672df5f2a08741940c5 (patch) | |
tree | ddbe0cd8cf2995770d535f8f7dc3eff813581454 /test/ruby/test_require.rb | |
parent | 7a6c72e03d27003366fd3c5d6169fe0097c7114c (diff) |
[Bug #19985] Raise LoadError with the converted feature name
`Kernel#require` converts feature name objects that have the `to_path`
method such as `Pathname`, but had used the original object on error
and had resulted in an unexpected `TypeError`.
Diffstat (limited to 'test/ruby/test_require.rb')
-rw-r--r-- | test/ruby/test_require.rb | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb index cadab4f851..fd5092aaf0 100644 --- a/test/ruby/test_require.rb +++ b/test/ruby/test_require.rb @@ -6,11 +6,27 @@ require 'tmpdir' class TestRequire < Test::Unit::TestCase def test_load_error_path - filename = "should_not_exist" - error = assert_raise(LoadError) do - require filename - end - assert_equal filename, error.path + Tempfile.create(["should_not_exist", ".rb"]) {|t| + filename = t.path + t.close + File.unlink(filename) + + error = assert_raise(LoadError) do + require filename + end + assert_equal filename, error.path + + # with --disable=gems + assert_separately(["-", filename], "#{<<~"begin;"}\n#{<<~'end;'}") + begin; + filename = ARGV[0] + path = Struct.new(:to_path).new(filename) + error = assert_raise(LoadError) do + require path + end + assert_equal filename, error.path + end; + } end def test_require_invalid_shared_object |