diff options
Diffstat (limited to 'spec/ruby/core/kernel/require_spec.rb')
| -rw-r--r-- | spec/ruby/core/kernel/require_spec.rb | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/spec/ruby/core/kernel/require_spec.rb b/spec/ruby/core/kernel/require_spec.rb index 75cea7565e..62d954c2bf 100644 --- a/spec/ruby/core/kernel/require_spec.rb +++ b/spec/ruby/core/kernel/require_spec.rb @@ -1,6 +1,6 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../../../fixtures/code_loading', __FILE__) -require File.expand_path('../shared/require', __FILE__) +require_relative '../../spec_helper' +require_relative '../../fixtures/code_loading' +require_relative 'shared/require' describe "Kernel#require" do before :each do @@ -13,11 +13,43 @@ describe "Kernel#require" do # if this fails, update your rubygems it "is a private method" do - Kernel.should have_private_instance_method(:require) + Kernel.private_instance_methods(false).should.include?(:require) end - it_behaves_like :kernel_require_basic, :require, CodeLoadingSpecs::Method.new + it "provided features are already required" do + provided = %w[complex enumerator fiber rational thread ruby2_keywords] + ruby_version_is "4.0" do + provided += %w[set pathname] + end + ruby_version_is "4.1" do + provided += %w[monitor] + end + + out = ruby_exe("puts $LOADED_FEATURES", options: '--disable-gems --disable-did-you-mean') + features = out.lines.map(&:chomp) + + # Ignore engine-specific internals + case RUBY_ENGINE + when "jruby" + features -= %w[java.rb jruby/util.rb] + when "ruby" + so = RbConfig::CONFIG['DLEXT'] + features -= ["windows_1252.#{so}", "windows_31.#{so}"] + features.reject! { |feature| feature.end_with? "encdb.#{so}" } + features.reject! { |feature| feature.end_with? "transdb.#{so}" } + features.reject! { |feature| feature.include?('-fake') } + end + + features_no_ext = features.map { |path| File.basename(path, '.*') } + features_no_ext.sort.should == provided.sort + requires = features + code = requires.map { |f| "puts require #{f.inspect}\n" }.join + required = ruby_exe(code, options: '--disable-gems') + required.should == "false\n" * requires.size + end + + it_behaves_like :kernel_require_basic, :require, CodeLoadingSpecs::Method.new it_behaves_like :kernel_require, :require, CodeLoadingSpecs::Method.new end @@ -31,6 +63,5 @@ describe "Kernel.require" do end it_behaves_like :kernel_require_basic, :require, Kernel - it_behaves_like :kernel_require, :require, Kernel end |
