Ignore to handle the different platform
When `GEM_HOME` was shared with CRuby and JRuby. RubyGems try to handle both platforms. It should be ignored the different platform. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8cc5304408
commit
4c1952f4bf
@ -71,8 +71,11 @@ class Gem::BasicSpecification
|
|||||||
elsif missing_extensions?
|
elsif missing_extensions?
|
||||||
@ignored = true
|
@ignored = true
|
||||||
|
|
||||||
|
if platform == RUBY_ENGINE
|
||||||
warn "Ignoring #{full_name} because its extensions are not built. " +
|
warn "Ignoring #{full_name} because its extensions are not built. " +
|
||||||
"Try: gem pristine #{name} --version #{version}"
|
"Try: gem pristine #{name} --version #{version}"
|
||||||
|
end
|
||||||
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -104,6 +104,8 @@ extensions will be restored.
|
|||||||
end.flatten
|
end.flatten
|
||||||
end
|
end
|
||||||
|
|
||||||
|
specs = specs.select{|spec| spec.platform == RUBY_ENGINE }
|
||||||
|
|
||||||
if specs.to_a.empty?
|
if specs.to_a.empty?
|
||||||
raise Gem::Exception,
|
raise Gem::Exception,
|
||||||
"Failed to find gems #{options[:args]} #{options[:version]}"
|
"Failed to find gems #{options[:args]} #{options[:version]}"
|
||||||
|
@ -514,6 +514,47 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|||||||
assert_empty(@ui.error)
|
assert_empty(@ui.error)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_execute_multi_platform
|
||||||
|
a = util_spec 'a' do |s|
|
||||||
|
s.extensions << 'ext/a/extconf.rb'
|
||||||
|
end
|
||||||
|
|
||||||
|
b = util_spec 'b' do |s|
|
||||||
|
s.extensions << 'ext/a/extconf.rb'
|
||||||
|
s.platform = Gem::Platform.new("java")
|
||||||
|
end
|
||||||
|
|
||||||
|
ext_path = File.join @tempdir, 'ext', 'a', 'extconf.rb'
|
||||||
|
write_file ext_path do |io|
|
||||||
|
io.write <<-'RUBY'
|
||||||
|
File.open "Makefile", "w" do |f|
|
||||||
|
f.puts "clean:\n\techo cleaned\n"
|
||||||
|
f.puts "all:\n\techo built\n"
|
||||||
|
f.puts "install:\n\techo installed\n"
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
install_gem a
|
||||||
|
install_gem b
|
||||||
|
|
||||||
|
@cmd.options[:extensions] = true
|
||||||
|
@cmd.options[:extensions_set] = true
|
||||||
|
@cmd.options[:args] = []
|
||||||
|
|
||||||
|
use_ui @ui do
|
||||||
|
@cmd.execute
|
||||||
|
end
|
||||||
|
|
||||||
|
out = @ui.output.split "\n"
|
||||||
|
|
||||||
|
assert_equal 'Restoring gems to pristine condition...', out.shift
|
||||||
|
assert_equal 'Building native extensions. This could take a while...',
|
||||||
|
out.shift
|
||||||
|
assert_equal "Restored #{a.full_name}", out.shift
|
||||||
|
assert_empty out, out.inspect
|
||||||
|
end
|
||||||
|
|
||||||
def test_handle_options
|
def test_handle_options
|
||||||
@cmd.handle_options %w[]
|
@cmd.handle_options %w[]
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ require 'stringio'
|
|||||||
require 'rubygems/ext'
|
require 'rubygems/ext'
|
||||||
require 'rubygems/specification'
|
require 'rubygems/specification'
|
||||||
require 'rubygems/installer'
|
require 'rubygems/installer'
|
||||||
|
require 'rubygems/platform'
|
||||||
|
|
||||||
class TestGemSpecification < Gem::TestCase
|
class TestGemSpecification < Gem::TestCase
|
||||||
|
|
||||||
@ -59,12 +60,13 @@ end
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def ext_spec
|
def ext_spec(platform: Gem::Platform::RUBY)
|
||||||
@ext = util_spec 'ext', '1' do |s|
|
@ext = util_spec 'ext', '1' do |s|
|
||||||
s.executable = 'exec'
|
s.executable = 'exec'
|
||||||
s.test_file = 'test/suite.rb'
|
s.test_file = 'test/suite.rb'
|
||||||
s.extensions = %w[ext/extconf.rb]
|
s.extensions = %w[ext/extconf.rb]
|
||||||
s.license = 'MIT'
|
s.license = 'MIT'
|
||||||
|
s.platform = platform
|
||||||
|
|
||||||
s.mark_version
|
s.mark_version
|
||||||
s.files = %w[lib/code.rb]
|
s.files = %w[lib/code.rb]
|
||||||
@ -1673,6 +1675,16 @@ dependencies: []
|
|||||||
assert_equal expected, err
|
assert_equal expected, err
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_contains_requirable_file_eh_extension
|
||||||
|
ext_spec(platform: Gem::Platform.new("java"))
|
||||||
|
|
||||||
|
_, err = capture_io do
|
||||||
|
refute @ext.contains_requirable_file? 'nonexistent'
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_empty err
|
||||||
|
end
|
||||||
|
|
||||||
def test_date
|
def test_date
|
||||||
assert_equal Gem::Specification::TODAY, @a1.date
|
assert_equal Gem::Specification::TODAY, @a1.date
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user