summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2021-10-03 16:10:01 +0900
committernagachika <nagachika@ruby-lang.org>2021-10-03 16:10:01 +0900
commit5341eca588e738cd5031ab7d8bb5c300471c00e9 (patch)
tree9cc4d4d2a072df1db2c918105eb95954fcc21d7c /test
parentefa1ba15fd5007210f819e6d11002ca829c989bf (diff)
merge revision(s) ddb32e66160ab50849419ef7c7ac584913b79c34: [Backport #18173]
[Bug #18173] Update loaded_features_index If $LOADED_FEATURES is changed in the just required file, also the index table needs to be updated before loaded_features_snapshot is reset. If the snapshot is reset without updating the table, the name of the added feature will not be found. --- load.c | 1 + test/ruby/test_require.rb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+)
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_require.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb
index 4c8faadbc7..52566ecbfb 100644
--- a/test/ruby/test_require.rb
+++ b/test/ruby/test_require.rb
@@ -839,6 +839,23 @@ class TestRequire < Test::Unit::TestCase
}
end
+ def test_provide_in_required_file
+ paths, loaded = $:.dup, $".dup
+ Dir.mktmpdir do |tmp|
+ provide = File.realdirpath("provide.rb", tmp)
+ File.write(File.join(tmp, "target.rb"), "raise __FILE__\n")
+ File.write(provide, '$" << '"'target.rb'\n")
+ $:.replace([tmp])
+ assert(require("provide"))
+ assert(!require("target"))
+ assert_equal($".pop, provide)
+ assert_equal($".pop, "target.rb")
+ end
+ ensure
+ $:.replace(paths)
+ $".replace(loaded)
+ end
+
if defined?($LOAD_PATH.resolve_feature_path)
def test_resolve_feature_path
paths, loaded = $:.dup, $".dup