summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--load.c1
-rw-r--r--test/ruby/test_require.rb17
-rw-r--r--version.h4
3 files changed, 20 insertions, 2 deletions
diff --git a/load.c b/load.c
index 2d931b91f0..e5b0ff435d 100644
--- a/load.c
+++ b/load.c
@@ -606,6 +606,7 @@ rb_provide_feature(VALUE feature)
}
rb_str_freeze(feature);
+ get_loaded_features_index();
rb_ary_push(features, rb_fstring(feature));
features_index_add(feature, INT2FIX(RARRAY_LEN(features)-1));
reset_loaded_features_snapshot();
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
diff --git a/version.h b/version.h
index 7a107b85fe..43799945f5 100644
--- a/version.h
+++ b/version.h
@@ -12,11 +12,11 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 3
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 138
+#define RUBY_PATCHLEVEL 139
#define RUBY_RELEASE_YEAR 2021
#define RUBY_RELEASE_MONTH 10
-#define RUBY_RELEASE_DAY 2
+#define RUBY_RELEASE_DAY 3
#include "ruby/version.h"