mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.4.
Please see entries of 2.6.4 on https://github.com/rubygems/rubygems/blob/master/History.txt git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
7a3f794da0
commit
4e53f3ad72
12 changed files with 101 additions and 45 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
Thu Apr 28 09:33:03 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org>
|
||||||
|
|
||||||
|
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.4.
|
||||||
|
Please see entries of 2.6.4 on
|
||||||
|
https://github.com/rubygems/rubygems/blob/master/History.txt
|
||||||
|
|
||||||
Thu Apr 28 04:49:07 2016 Rei Odaira <Rei.Odaira@gmail.com>
|
Thu Apr 28 04:49:07 2016 Rei Odaira <Rei.Odaira@gmail.com>
|
||||||
|
|
||||||
* configure.in (rb_cv_lgamma_r_pm0): check if lgamma_r(+0.0)
|
* configure.in (rb_cv_lgamma_r_pm0): check if lgamma_r(+0.0)
|
||||||
|
|
|
@ -10,7 +10,7 @@ require 'rbconfig'
|
||||||
require 'thread'
|
require 'thread'
|
||||||
|
|
||||||
module Gem
|
module Gem
|
||||||
VERSION = '2.6.3'
|
VERSION = '2.6.4'
|
||||||
end
|
end
|
||||||
|
|
||||||
# Must be first since it unloads the prelude from 1.9.2
|
# Must be first since it unloads the prelude from 1.9.2
|
||||||
|
|
|
@ -259,7 +259,7 @@ is too hard to use.
|
||||||
if options[:domain] == :remote || specs.all? { |spec| spec.is_a? Gem::Source }
|
if options[:domain] == :remote || specs.all? { |spec| spec.is_a? Gem::Source }
|
||||||
version
|
version
|
||||||
else
|
else
|
||||||
spec = specs.select { |spec| spec.version == version }
|
spec = specs.select { |s| s.version == version }
|
||||||
if spec.first.default_gem?
|
if spec.first.default_gem?
|
||||||
"default: #{version}"
|
"default: #{version}"
|
||||||
else
|
else
|
||||||
|
|
|
@ -170,6 +170,7 @@ module Gem
|
||||||
# An English description of the error.
|
# An English description of the error.
|
||||||
|
|
||||||
def wordy
|
def wordy
|
||||||
|
@source.uri.password = 'REDACTED' unless @source.uri.password.nil?
|
||||||
"Unable to download data from #{@source.uri} - #{@error.message}"
|
"Unable to download data from #{@source.uri} - #{@error.message}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -509,12 +509,6 @@ class Gem::Installer
|
||||||
# the symlink if the gem being installed has a newer version.
|
# the symlink if the gem being installed has a newer version.
|
||||||
|
|
||||||
def generate_bin_symlink(filename, bindir)
|
def generate_bin_symlink(filename, bindir)
|
||||||
if Gem.win_platform? then
|
|
||||||
alert_warning "Unable to use symlinks on Windows, installing wrapper"
|
|
||||||
generate_bin_script filename, bindir
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
src = File.join gem_dir, spec.bindir, filename
|
src = File.join gem_dir, spec.bindir, filename
|
||||||
dst = File.join bindir, formatted_program_filename(filename)
|
dst = File.join bindir, formatted_program_filename(filename)
|
||||||
|
|
||||||
|
@ -528,6 +522,9 @@ class Gem::Installer
|
||||||
end
|
end
|
||||||
|
|
||||||
FileUtils.symlink src, dst, :verbose => Gem.configuration.really_verbose
|
FileUtils.symlink src, dst, :verbose => Gem.configuration.really_verbose
|
||||||
|
rescue NotImplementedError, SystemCallError
|
||||||
|
alert_warning "Unable to use symlinks, installing wrapper"
|
||||||
|
generate_bin_script filename, bindir
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
|
@ -27,7 +27,13 @@ class Gem::RemoteFetcher
|
||||||
|
|
||||||
def initialize(message, uri)
|
def initialize(message, uri)
|
||||||
super message
|
super message
|
||||||
@uri = uri
|
begin
|
||||||
|
uri = URI(uri)
|
||||||
|
uri.password = 'REDACTED' if uri.password
|
||||||
|
@uri = uri.to_s
|
||||||
|
rescue URI::InvalidURIError, ArgumentError
|
||||||
|
@uri = uri
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_s # :nodoc:
|
def to_s # :nodoc:
|
||||||
|
|
|
@ -34,7 +34,7 @@ class Gem::Server
|
||||||
include ERB::Util
|
include ERB::Util
|
||||||
include Gem::UserInteraction
|
include Gem::UserInteraction
|
||||||
|
|
||||||
SEARCH = <<-SEARCH
|
SEARCH = <<-ERB
|
||||||
<form class="headerSearch" name="headerSearchForm" method="get" action="/rdoc">
|
<form class="headerSearch" name="headerSearchForm" method="get" action="/rdoc">
|
||||||
<div id="search" style="float:right">
|
<div id="search" style="float:right">
|
||||||
<label for="q">Filter/Search</label>
|
<label for="q">Filter/Search</label>
|
||||||
|
@ -42,9 +42,9 @@ class Gem::Server
|
||||||
<button type="submit" style="display:none"></button>
|
<button type="submit" style="display:none"></button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
SEARCH
|
ERB
|
||||||
|
|
||||||
DOC_TEMPLATE = <<-'DOC_TEMPLATE'
|
DOC_TEMPLATE = <<-'ERB'
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!DOCTYPE html
|
<!DOCTYPE html
|
||||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
@ -68,35 +68,33 @@ class Gem::Server
|
||||||
<h1>Summary</h1>
|
<h1>Summary</h1>
|
||||||
<p>There are <%=values["gem_count"]%> gems installed:</p>
|
<p>There are <%=values["gem_count"]%> gems installed:</p>
|
||||||
<p>
|
<p>
|
||||||
<%= values["specs"].map { |v| "<a href=\"##{v["name"]}\">#{v["name"]}</a>" }.join ', ' %>.
|
<%= values["specs"].map { |v| "<a href\"##{u v["name"]}\">#{h v["name"]}</a>" }.join ', ' %>.
|
||||||
<h1>Gems</h1>
|
<h1>Gems</h1>
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
<% values["specs"].each do |spec| %>
|
<% values["specs"].each do |spec| %>
|
||||||
<dt>
|
<dt>
|
||||||
<% if spec["first_name_entry"] then %>
|
<% if spec["first_name_entry"] then %>
|
||||||
<a name="<%=spec["name"]%>"></a>
|
<a name="<%=h spec["name"]%>"></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<b><%=spec["name"]%> <%=spec["version"]%></b>
|
<b><%=h spec["name"]%> <%=h spec["version"]%></b>
|
||||||
|
|
||||||
<% if spec["ri_installed"] then %>
|
<% if spec["ri_installed"] || spec["rdoc_installed"] then %>
|
||||||
<a href="<%=spec["doc_path"]%>">[rdoc]</a>
|
<a href="<%=u spec["doc_path"]%>">[rdoc]</a>
|
||||||
<% elsif spec["rdoc_installed"] then %>
|
|
||||||
<a href="<%=spec["doc_path"]%>">[rdoc]</a>
|
|
||||||
<% else %>
|
<% else %>
|
||||||
<span title="rdoc not installed">[rdoc]</span>
|
<span title="rdoc not installed">[rdoc]</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if spec["homepage"] then %>
|
<% if spec["homepage"] then %>
|
||||||
<a href="<%=spec["homepage"]%>" title="<%=spec["homepage"]%>">[www]</a>
|
<a href="<%=u spec["homepage"]%>" title="<%=h spec["homepage"]%>">[www]</a>
|
||||||
<% else %>
|
<% else %>
|
||||||
<span title="no homepage available">[www]</span>
|
<span title="no homepage available">[www]</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if spec["has_deps"] then %>
|
<% if spec["has_deps"] then %>
|
||||||
- depends on
|
- depends on
|
||||||
<%= spec["dependencies"].map { |v| "<a href=\"##{v["name"]}\">#{v["name"]}</a>" }.join ', ' %>.
|
<%= spec["dependencies"].map { |v| "<a href=\"##{u v["name"]}>#{h v["name"]}</a>" }.join ', ' %>.
|
||||||
<% end %>
|
<% end %>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
|
@ -110,7 +108,7 @@ class Gem::Server
|
||||||
Executables are
|
Executables are
|
||||||
<%end%>
|
<%end%>
|
||||||
|
|
||||||
<%= spec["executables"].map { |v| "<span class=\"context-item-name\">#{v["executable"]}</span>"}.join ', ' %>.
|
<%= spec["executables"].map { |v| "<span class=\"context-item-name\">#{h v["executable"]}</span>"}.join ', ' %>.
|
||||||
|
|
||||||
<%end%>
|
<%end%>
|
||||||
<br/>
|
<br/>
|
||||||
|
@ -127,10 +125,10 @@ class Gem::Server
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
DOC_TEMPLATE
|
ERB
|
||||||
|
|
||||||
# CSS is copy & paste from rdoc-style.css, RDoc V1.0.1 - 20041108
|
# CSS is copy & paste from rdoc-style.css, RDoc V1.0.1 - 20041108
|
||||||
RDOC_CSS = <<-RDOC_CSS
|
RDOC_CSS = <<-CSS
|
||||||
body {
|
body {
|
||||||
font-family: Verdana,Arial,Helvetica,sans-serif;
|
font-family: Verdana,Arial,Helvetica,sans-serif;
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
|
@ -338,9 +336,9 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
||||||
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
||||||
.ruby-regexp { color: #ffa07a; background: transparent; }
|
.ruby-regexp { color: #ffa07a; background: transparent; }
|
||||||
.ruby-value { color: #7fffd4; background: transparent; }
|
.ruby-value { color: #7fffd4; background: transparent; }
|
||||||
RDOC_CSS
|
CSS
|
||||||
|
|
||||||
RDOC_NO_DOCUMENTATION = <<-'NO_DOC'
|
RDOC_NO_DOCUMENTATION = <<-'ERB'
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
@ -372,9 +370,9 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
NO_DOC
|
ERB
|
||||||
|
|
||||||
RDOC_SEARCH_TEMPLATE = <<-'RDOC_SEARCH'
|
RDOC_SEARCH_TEMPLATE = <<-'ERB'
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
@ -401,10 +399,10 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
||||||
<% doc_items.each do |doc_item| %>
|
<% doc_items.each do |doc_item| %>
|
||||||
<dt>
|
<dt>
|
||||||
<b><%=doc_item[:name]%></b>
|
<b><%=doc_item[:name]%></b>
|
||||||
<a href="<%=doc_item[:url]%>">[rdoc]</a>
|
<a href="<%=u doc_item[:url]%>">[rdoc]</a>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<%=doc_item[:summary]%>
|
<%=h doc_item[:summary]%>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
</dd>
|
</dd>
|
||||||
|
@ -423,7 +421,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
RDOC_SEARCH
|
ERB
|
||||||
|
|
||||||
def self.run(options)
|
def self.run(options)
|
||||||
new(options[:gemdir], options[:port], options[:daemon],
|
new(options[:gemdir], options[:port], options[:daemon],
|
||||||
|
@ -459,9 +457,9 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
||||||
|
|
||||||
def doc_root gem_name
|
def doc_root gem_name
|
||||||
if have_rdoc_4_plus? then
|
if have_rdoc_4_plus? then
|
||||||
"/doc_root/#{gem_name}/"
|
"/doc_root/#{u gem_name}/"
|
||||||
else
|
else
|
||||||
"/doc_root/#{gem_name}/rdoc/index.html"
|
"/doc_root/#{u gem_name}/rdoc/index.html"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
# See LICENSE.txt for permissions.
|
# See LICENSE.txt for permissions.
|
||||||
#++
|
#++
|
||||||
|
|
||||||
|
require 'rubygems/util'
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require 'io/console'
|
require 'io/console'
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
|
@ -676,13 +678,8 @@ class Gem::SilentUI < Gem::StreamUI
|
||||||
def initialize
|
def initialize
|
||||||
reader, writer = nil, nil
|
reader, writer = nil, nil
|
||||||
|
|
||||||
begin
|
reader = File.open(Gem::Util::NULL_DEVICE, 'r')
|
||||||
reader = File.open('/dev/null', 'r')
|
writer = File.open(Gem::Util::NULL_DEVICE, 'w')
|
||||||
writer = File.open('/dev/null', 'w')
|
|
||||||
rescue Errno::ENOENT
|
|
||||||
reader = File.open('nul', 'r')
|
|
||||||
writer = File.open('nul', 'w')
|
|
||||||
end
|
|
||||||
|
|
||||||
super reader, writer, writer, false
|
super reader, writer, writer, false
|
||||||
end
|
end
|
||||||
|
@ -701,4 +698,3 @@ class Gem::SilentUI < Gem::StreamUI
|
||||||
SilentProgressReporter.new(@outs, *args)
|
SilentProgressReporter.new(@outs, *args)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,10 @@ require 'rubygems/command_manager'
|
||||||
#
|
#
|
||||||
# DO NOT include code like this in your rubygems_plugin.rb
|
# DO NOT include code like this in your rubygems_plugin.rb
|
||||||
|
|
||||||
|
module Gem::Commands
|
||||||
|
remove_const(:InterruptCommand) if defined?(InterruptCommand)
|
||||||
|
end
|
||||||
|
|
||||||
class Gem::Commands::InterruptCommand < Gem::Command
|
class Gem::Commands::InterruptCommand < Gem::Command
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
|
|
|
@ -2,6 +2,20 @@
|
||||||
require 'rubygems/installer_test_case'
|
require 'rubygems/installer_test_case'
|
||||||
|
|
||||||
class TestGemInstaller < Gem::InstallerTestCase
|
class TestGemInstaller < Gem::InstallerTestCase
|
||||||
|
@@symlink_supported = nil
|
||||||
|
|
||||||
|
def symlink_supported?
|
||||||
|
if @@symlink_supported.nil?
|
||||||
|
begin
|
||||||
|
File.symlink("", "")
|
||||||
|
rescue Errno::ENOENT, Errno::EEXIST
|
||||||
|
@@symlink_supported = true
|
||||||
|
rescue NotImplementedError, SystemCallError
|
||||||
|
@@symlink_supported = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@@symlink_supported
|
||||||
|
end
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
super
|
super
|
||||||
|
@ -552,7 +566,7 @@ gem 'other', version
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_generate_bin_symlink_update_older
|
def test_generate_bin_symlink_update_older
|
||||||
return if win_platform? #Windows FS do not support symlinks
|
return if !symlink_supported?
|
||||||
|
|
||||||
@installer.wrappers = false
|
@installer.wrappers = false
|
||||||
util_make_exec
|
util_make_exec
|
||||||
|
@ -588,7 +602,7 @@ gem 'other', version
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_generate_bin_symlink_update_remove_wrapper
|
def test_generate_bin_symlink_update_remove_wrapper
|
||||||
return if win_platform? #Windows FS do not support symlinks
|
return if !symlink_supported?
|
||||||
|
|
||||||
@installer.wrappers = true
|
@installer.wrappers = true
|
||||||
util_make_exec
|
util_make_exec
|
||||||
|
@ -639,7 +653,12 @@ gem 'other', version
|
||||||
installed_exec = File.join(util_inst_bindir, 'executable')
|
installed_exec = File.join(util_inst_bindir, 'executable')
|
||||||
assert_path_exists installed_exec
|
assert_path_exists installed_exec
|
||||||
|
|
||||||
assert_match(/Unable to use symlinks on Windows, installing wrapper/i,
|
if symlink_supported?
|
||||||
|
assert_send([File, :symlink?, installed_exec])
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_match(/Unable to use symlinks, installing wrapper/i,
|
||||||
@ui.error)
|
@ui.error)
|
||||||
|
|
||||||
wrapper = File.read installed_exec
|
wrapper = File.read installed_exec
|
||||||
|
@ -651,7 +670,7 @@ gem 'other', version
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_generate_bin_uses_default_shebang
|
def test_generate_bin_uses_default_shebang
|
||||||
return if win_platform? #Windows FS do not support symlinks
|
return if !symlink_supported?
|
||||||
|
|
||||||
@installer.wrappers = true
|
@installer.wrappers = true
|
||||||
util_make_exec
|
util_make_exec
|
||||||
|
|
|
@ -16,5 +16,13 @@ class TestGemSourceFetchProblem < Gem::TestCase
|
||||||
assert_equal 'test', e.message
|
assert_equal 'test', e.message
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_password_redacted
|
||||||
|
source = Gem::Source.new 'https://username:secret@gemsource.com'
|
||||||
|
error = RuntimeError.new 'test'
|
||||||
|
|
||||||
|
sf = Gem::SourceFetchProblem.new source, error
|
||||||
|
|
||||||
|
refute_match sf.wordy, 'secret'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
21
test/rubygems/test_remote_fetch_error.rb
Normal file
21
test/rubygems/test_remote_fetch_error.rb
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
require 'rubygems/test_case'
|
||||||
|
|
||||||
|
class TestRemoteFetchError < Gem::TestCase
|
||||||
|
|
||||||
|
def test_password_redacted
|
||||||
|
error = Gem::RemoteFetcher::FetchError.new('There was an error fetching', 'https://user:secret@gemsource.org')
|
||||||
|
refute_match error.to_s, 'secret'
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_invalid_url
|
||||||
|
error = Gem::RemoteFetcher::FetchError.new('There was an error fetching', 'https://::gemsource.org')
|
||||||
|
assert_equal error.to_s, 'There was an error fetching (https://::gemsource.org)'
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_to_s
|
||||||
|
error = Gem::RemoteFetcher::FetchError.new('There was an error fetching', 'https://gemsource.org')
|
||||||
|
assert_equal error.to_s, 'There was an error fetching (https://gemsource.org)'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue