Permalink
Browse files

merge revision(s) 39606,39609: [Backport #8019]

	* lib/rubygems/commands/query_command.rb:  Only fetch remote specs when
	  showing details.  [ruby-trunk - Bug #8019]  RubyGems bug ruby#487

	* lib/rubygems/remote_fetcher.rb:  ditto.

	* lib/rubygems/security/policy.rb:  ditto.

	* test/rubygems/test_gem_commands_query_command.rb:  Test for the
	  above.

	* lib/rubygems/security.rb:  Make OpenSSL optional for RubyGems.

	* lib/rubygems/commands/cert_command.rb:  ditto.

	* lib/rubygems/config_file.rb:  Display file with YAML error, not
	  ~/.gemrc

	* lib/rubygems/remote_fetcher.rb:  Only create gem subdirectories when
	  installing gems.

	* lib/rubygems/dependency_resolver.rb:  ditto.

	* lib/rubygems/test_utilities.rb:  ditto.

	* test/rubygems/test_gem_commands_fetch_command.rb:  Test for the
	  above.

	* lib/rubygems/spec_fetcher.rb:  Only try to upgrade
	  http://rubygems.org to HTTPS

	* test/rubygems/test_gem_spec_fetcher.rb:  Test for the above.

	* lib/rubygems.rb:  Update win_platform? check for JRuby compatibility.

	* test/rubygems/test_gem_installer.rb:  Update for Ruby 1.9.2
	  compatibility

	* test/rubygems/test_gem_spec_fetcher.rb:  Removed unused variable.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@39797 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information...
nagachika committed Mar 17, 2013
1 parent d1ce105 commit 3e3f03461b83e8cb3bd6c9033d5f3619ee18bb92
View
@@ -1,3 +1,38 @@
Mon Mar 18 00:00:32 2013 Eric Hodel <drbrain@segment7.net>
* test/rubygems/test_gem_spec_fetcher.rb: Removed unused variable.
Mon Mar 18 00:00:32 2013 Eric Hodel <drbrain@segment7.net>
* lib/rubygems/commands/query_command.rb: Only fetch remote specs when
showing details. [ruby-trunk - Bug #8019] RubyGems bug #487
* lib/rubygems/remote_fetcher.rb: ditto.
* lib/rubygems/security/policy.rb: ditto.
* test/rubygems/test_gem_commands_query_command.rb: Test for the
above.
* lib/rubygems/security.rb: Make OpenSSL optional for RubyGems.
* lib/rubygems/commands/cert_command.rb: ditto.
* lib/rubygems/config_file.rb: Display file with YAML error, not
~/.gemrc
* lib/rubygems/remote_fetcher.rb: Only create gem subdirectories when
installing gems.
* lib/rubygems/dependency_resolver.rb: ditto.
* lib/rubygems/test_utilities.rb: ditto.
* test/rubygems/test_gem_commands_fetch_command.rb: Test for the
above.
* lib/rubygems/spec_fetcher.rb: Only try to upgrade
http://rubygems.org to HTTPS
* test/rubygems/test_gem_spec_fetcher.rb: Test for the above.
* lib/rubygems.rb: Update win_platform? check for JRuby compatibility.
* test/rubygems/test_gem_installer.rb: Update for Ruby 1.9.2
compatibility
Sun Mar 17 23:53:19 2013 Eric Hodel <drbrain@segment7.net>
* lib/rubygems.rb: Bump version to 2.0.1 for upcoming bugfix release
View
@@ -895,7 +895,8 @@ def self.user_home
def self.win_platform?
if @@win_platform.nil? then
@@win_platform = !!WIN_PATTERNS.find { |r| RUBY_PLATFORM =~ r }
ruby_platform = RbConfig::CONFIG['host_os']
@@win_platform = !!WIN_PATTERNS.find { |r| ruby_platform =~ r }
end
@@win_platform
@@ -1,5 +1,6 @@
require 'rubygems/command'
require 'rubygems/security'
require 'openssl'
class Gem::Commands::CertCommand < Gem::Command
@@ -192,9 +192,13 @@ def output_versions output, versions
end
end
def entry_details entry, spec, specs, platforms
def entry_details entry, detail_tuple, specs, platforms
return unless options[:details]
name_tuple, spec = detail_tuple
spec = spec.fetch_spec name_tuple unless Gem::Specification === spec
entry << "\n"
spec_platforms entry, platforms
@@ -228,19 +232,15 @@ def entry_versions entry, name_tuples, platforms
def make_entry entry_tuples, platforms
detail_tuple = entry_tuples.first
name_tuple, latest_spec = detail_tuple
latest_spec = latest_spec.fetch_spec name_tuple unless
Gem::Specification === latest_spec
name_tuples, specs = entry_tuples.flatten.partition do |item|
Gem::NameTuple === item
end
entry = [latest_spec.name]
entry = [name_tuples.first.name]
entry_versions entry, name_tuples, platforms
entry_details entry, latest_spec, specs, platforms
entry_details entry, detail_tuple, specs, platforms
entry.join
end
@@ -304,14 +304,14 @@ def load_file(filename)
begin
content = YAML.load(File.read(filename))
unless content.kind_of? Hash
warn "Failed to load #{config_file_name} because it doesn't contain valid YAML hash"
warn "Failed to load #{filename} because it doesn't contain valid YAML hash"
return {}
end
return content
rescue ArgumentError
warn "Failed to load #{config_file_name}"
warn "Failed to load #{filename}"
rescue Errno::EACCES
warn "Failed to load #{config_file_name} due to permissions problem."
warn "Failed to load #{filename} due to permissions problem."
end
{}
@@ -406,6 +406,8 @@ def download(path)
source = Gem.sources.first
end
Gem.ensure_gem_subdirectories path
source.download full_spec, path
end
@@ -127,8 +127,6 @@ def download_to_cache dependency
# always replaced.
def download(spec, source_uri, install_dir = Gem.dir)
Gem.ensure_gem_subdirectories(install_dir) rescue nil
cache_dir =
if Dir.pwd == install_dir then # see fetch_command
install_dir
@@ -403,7 +401,8 @@ def connection_for(uri)
connection.start unless connection.started?
connection
rescue OpenSSL::SSL::SSLError, Errno::EHOSTDOWN => e
rescue defined?(OpenSSL::SSL) ? OpenSSL::SSL::SSLError : Errno::EHOSTDOWN,
Errno::EHOSTDOWN => e
raise FetchError.new(e.message, uri)
end
@@ -424,6 +423,12 @@ def configure_connection_for_https(connection)
add_rubygems_trusted_certs(store)
end
connection.cert_store = store
rescue LoadError => e
raise unless (e.respond_to?(:path) && e.path == 'openssl') ||
e.message =~ / -- openssl$/
raise Gem::Exception.new(
'Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources')
end
def add_rubygems_trusted_certs(store)
View
@@ -5,9 +5,29 @@
#++
require 'rubygems/exceptions'
require 'openssl'
require 'fileutils'
begin
require 'openssl'
rescue LoadError => e
raise unless (e.respond_to?(:path) && e.path == 'openssl') ||
e.message =~ / -- openssl$/
module OpenSSL # :nodoc:
class Digest # :nodoc:
class SHA1 # :nodoc:
def name
'SHA1'
end
end
end
module PKey # :nodoc:
class RSA # :nodoc:
end
end
end
end
##
# = Signing gems
#
@@ -20,6 +20,8 @@ class Gem::Security::Policy
# options.
def initialize name, policy = {}, opt = {}
require 'openssl'
@name = name
@opt = opt
@@ -228,10 +228,14 @@ def tuples_for(source, type, gracefully_ignore=false)
end
end
##
# Attempts to upgrade +source+ to HTTPS if it is for http://rubygems.org
def upgrade_http_source source
uri = source.uri
return source unless uri.scheme.downcase == 'http'
return source unless uri.scheme.downcase == 'http' &&
uri.host.downcase == 'rubygems.org'
https_uri = uri.dup
https_uri.scheme = 'https'
@@ -121,8 +121,6 @@ def download spec, source_uri, install_dir = Gem.dir
path = File.join path, name
Gem.ensure_gem_subdirectories install_dir
if source_uri =~ /^http/ then
File.open(path, "wb") do |f|
f.write fetch_path(File.join(source_uri, "gems", name))
@@ -18,6 +18,8 @@ def test_execute
@fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
File.read(@a2.cache_file)
refute_path_exists File.join(@tempdir, 'cache'), 'sanity check'
@cmd.options[:args] = [@a2.name]
use_ui @ui do
@@ -28,6 +30,8 @@ def test_execute
assert_path_exists(File.join(@tempdir, @a2.file_name),
"#{@a2.full_name} not fetched")
refute_path_exists File.join(@tempdir, 'cache'),
'gem repository directories must not be created'
end
def test_execute_prerelease
@@ -430,5 +430,21 @@ def test_execute_default_details
assert_equal expected, @ui.output
end
def test_make_entry
@fetcher.data.delete \
"#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{@a2.original_name}.gemspec.rz"
entry_tuples = [
[Gem::NameTuple.new(@a2.name, @a2.version, @a2.platform),
Gem.sources.first],
]
platforms = { @a2.version => [@a2.platform] }
entry = @cmd.send :make_entry, entry_tuples, platforms
assert_equal 'a (2)', entry
end
end
@@ -1060,7 +1060,9 @@ def test_install_extension_and_script
end
def test_install_extension_flat
skip '1.8 mkmf.rb does not create TOUCH' if RUBY_VERSION < '1.9'
skip '1.9.2 and earlier mkmf.rb does not create TOUCH' if
RUBY_VERSION < '1.9.3'
@spec.require_paths = ["."]
@spec.extensions << "extconf.rb"
@@ -245,27 +245,43 @@ def test_upgrade_http_source
source = Gem::Source.new URI 'http://example'
same_source = nil
https_source = nil
use_ui @ui do
same_source = @sf.upgrade_http_source source
end
assert_equal URI('http://example'), same_source.uri
@fetcher.data['https://example/'] = 'hello'
assert_empty @ui.output
assert_empty @ui.error
end
def test_upgrade_http_source_rubygems
Gem.configuration.verbose = :really
source = Gem::Source.new URI 'http://rubygems.org'
same_source = nil
https_source = nil
use_ui @ui do
same_source = @sf.upgrade_http_source source
end
assert_equal URI('http://rubygems.org'), same_source.uri
@fetcher.data['https://rubygems.org/'] = 'hello'
use_ui @ui do
https_source = @sf.upgrade_http_source source
end
assert_equal URI('https://example'), https_source.uri
assert_equal URI('https://rubygems.org'), https_source.uri
assert_empty @ui.error
expected = <<-EXPECTED
Upgrading http://example to HTTPS failed, continuing
Upgraded http://example to HTTPS
Upgrading http://rubygems.org to HTTPS failed, continuing
Upgraded http://rubygems.org to HTTPS
EXPECTED
assert_equal expected, @ui.output
View
@@ -1,10 +1,10 @@
#define RUBY_VERSION "2.0.0"
#define RUBY_RELEASE_DATE "2013-03-17"
#define RUBY_PATCHLEVEL 66
#define RUBY_RELEASE_DATE "2013-03-18"
#define RUBY_PATCHLEVEL 67
#define RUBY_RELEASE_YEAR 2013
#define RUBY_RELEASE_MONTH 3
#define RUBY_RELEASE_DAY 17
#define RUBY_RELEASE_DAY 18
#include "ruby/version.h"

0 comments on commit 3e3f034

Please sign in to comment.