зеркало из https://github.com/github/ruby.git
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:
Родитель
8cc5304408
Коммит
4c1952f4bf
|
@ -71,8 +71,11 @@ class Gem::BasicSpecification
|
|||
elsif missing_extensions?
|
||||
@ignored = true
|
||||
|
||||
warn "Ignoring #{full_name} because its extensions are not built. " +
|
||||
"Try: gem pristine #{name} --version #{version}"
|
||||
if platform == RUBY_ENGINE
|
||||
warn "Ignoring #{full_name} because its extensions are not built. " +
|
||||
"Try: gem pristine #{name} --version #{version}"
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
|
|
|
@ -104,6 +104,8 @@ extensions will be restored.
|
|||
end.flatten
|
||||
end
|
||||
|
||||
specs = specs.select{|spec| spec.platform == RUBY_ENGINE }
|
||||
|
||||
if specs.to_a.empty?
|
||||
raise Gem::Exception,
|
||||
"Failed to find gems #{options[:args]} #{options[:version]}"
|
||||
|
|
|
@ -514,6 +514,47 @@ class TestGemCommandsPristineCommand < Gem::TestCase
|
|||
assert_empty(@ui.error)
|
||||
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
|
||||
@cmd.handle_options %w[]
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ require 'stringio'
|
|||
require 'rubygems/ext'
|
||||
require 'rubygems/specification'
|
||||
require 'rubygems/installer'
|
||||
require 'rubygems/platform'
|
||||
|
||||
class TestGemSpecification < Gem::TestCase
|
||||
|
||||
|
@ -59,12 +60,13 @@ end
|
|||
end
|
||||
end
|
||||
|
||||
def ext_spec
|
||||
def ext_spec(platform: Gem::Platform::RUBY)
|
||||
@ext = util_spec 'ext', '1' do |s|
|
||||
s.executable = 'exec'
|
||||
s.test_file = 'test/suite.rb'
|
||||
s.extensions = %w[ext/extconf.rb]
|
||||
s.license = 'MIT'
|
||||
s.platform = platform
|
||||
|
||||
s.mark_version
|
||||
s.files = %w[lib/code.rb]
|
||||
|
@ -1673,6 +1675,16 @@ dependencies: []
|
|||
assert_equal expected, err
|
||||
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
|
||||
assert_equal Gem::Specification::TODAY, @a1.date
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче