Skip to content

Commit a04bfd0

Browse files
committed
Add spec that require 'some_default_gem' does not need RubyGems
1 parent b4a3dcf commit a04bfd0

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

spec/tags/truffle/lazy_rubygems_tags.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ slow:RubyGems is loaded by a failing require
44
slow:Lazy RubyGems defines StringIO like RubyGems which requires it eagerly
55
slow:Lazy RubyGems works for require 'rubygems/package'
66
slow:Lazy RubyGems works for require 'rubygems/specification'
7+
slow:RubyGems is not loaded for default gems if there is no upgraded default gem

spec/truffle/lazy_rubygems_spec.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,33 @@
1515
ruby_exe('p autoload? :Gem').should == "\"rubygems\"\n"
1616
end
1717

18+
# This spec needs no upgraded gems installed
19+
it "is not loaded for default gems if there is no upgraded default gem" do
20+
default_gems = Truffle::GemUtil::DEFAULT_GEMS.keys
21+
default_gems -= [
22+
'bundler', # explicitly requires RubyGems
23+
'dbm', 'gdbm', 'sdbm', # not available
24+
'rss', # rss/xmlparser.rb requires non-existing "xml/parser"
25+
]
26+
default_gems.delete('io')
27+
default_gems << 'io/console'
28+
default_gems.delete('rexml')
29+
default_gems << 'rexml/document'
30+
31+
code = <<-RUBY
32+
#{default_gems.inspect}.each do |name|
33+
require name
34+
unless autoload?(:Gem) == "rubygems"
35+
puts $LOADED_FEATURES
36+
abort "\#{name} loaded RubyGems"
37+
end
38+
end
39+
puts 'OK'
40+
RUBY
41+
ruby_exe(code, args: "2>&1").should == "OK\n"
42+
$?.success?.should == true
43+
end
44+
1845
it "is loaded when accessing Gem" do
1946
ruby_exe('Gem; puts $"').should include('/rubygems.rb')
2047
ruby_exe('Gem; p autoload? :Gem').should == "nil\n"

0 commit comments

Comments
 (0)