From cae2f1eb8bb5663210734c201e70b458e1146f39 Mon Sep 17 00:00:00 2001 From: nagachika Date: Sun, 17 Mar 2013 15:07:00 +0000 Subject: merge revision(s) 39621,39622: [Backport #7991] * lib/rubygems/commands/setup_command.rb: Install .pem files. * test/rubygems/test_gem_commands_setup_command.rb: Test for the above. * lib/rubygems/spec_fetcher.rb: Test HTTPS upgrade with URI::HTTPS, not URI::HTTP. Fixes bug in automatic HTTPS upgrade. * test/rubygems/test_gem_spec_fetcher.rb: Test for the above. * lib/rubygems.rb: Version 2.0.2 * lib/rubygems/test_utilities.rb: Ensure scheme and uri class match. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@39800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems.rb | 2 +- lib/rubygems/commands/setup_command.rb | 25 +++++++++++++++++++++---- lib/rubygems/spec_fetcher.rb | 8 +++++++- lib/rubygems/test_utilities.rb | 5 +++++ 4 files changed, 34 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 80e6a1ff74..b5f58fefa0 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -8,7 +8,7 @@ require 'rbconfig' module Gem - VERSION = '2.0.1' + VERSION = '2.0.2' end # Must be first since it unloads the prelude from 1.9.2 diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb index 4d7b07c0d8..12e60109aa 100644 --- a/lib/rubygems/commands/setup_command.rb +++ b/lib/rubygems/commands/setup_command.rb @@ -77,6 +77,8 @@ class Gem::Commands::SetupCommand < Gem::Command options[:document].uniq! end + + @verbose = nil end def check_ruby_version @@ -279,18 +281,27 @@ TEXT end end + def install_file file, dest_dir + dest_file = File.join dest_dir, file + dest_dir = File.dirname dest_file + mkdir_p dest_dir unless File.directory? dest_dir + + install file, dest_file, :mode => 0644 + end + def install_lib(lib_dir) say "Installing RubyGems" if @verbose lib_files = rb_files_in 'lib' + pem_files = pem_files_in 'lib' Dir.chdir 'lib' do lib_files.each do |lib_file| - dest_file = File.join lib_dir, lib_file - dest_dir = File.dirname dest_file - mkdir_p dest_dir unless File.directory? dest_dir + install_file lib_file, lib_dir + end - install lib_file, dest_file, :mode => 0644 + pem_files.each do |pem_file| + install_file pem_file, lib_dir end end end @@ -381,6 +392,12 @@ TEXT [lib_dir, bin_dir] end + def pem_files_in dir + Dir.chdir dir do + Dir[File.join('**', '*pem')] + end + end + def rb_files_in dir Dir.chdir dir do Dir[File.join('**', '*rb')] diff --git a/lib/rubygems/spec_fetcher.rb b/lib/rubygems/spec_fetcher.rb index 62613f7a51..31205b9a06 100644 --- a/lib/rubygems/spec_fetcher.rb +++ b/lib/rubygems/spec_fetcher.rb @@ -241,7 +241,13 @@ class Gem::SpecFetcher https_uri.scheme = 'https' https_uri += '/' - Gem::RemoteFetcher.fetcher.fetch_path https_uri, nil, true + https_uri = URI https_uri.to_s # cast to URI::HTTPS + + begin + Gem::RemoteFetcher.fetcher.fetch_path https_uri, nil, true + rescue Gem::RemoteFetcher::FetchError => e + raise unless e.message =~ / Not Allowed 405 / + end say "Upgraded #{uri} to HTTPS" diff --git a/lib/rubygems/test_utilities.rb b/lib/rubygems/test_utilities.rb index cf96fca43a..eed42f59a7 100644 --- a/lib/rubygems/test_utilities.rb +++ b/lib/rubygems/test_utilities.rb @@ -38,6 +38,11 @@ class Gem::FakeFetcher end def find_data(path) + if URI === path and "URI::#{path.scheme.upcase}" != path.class.name then + raise ArgumentError, + "mismatch for scheme #{path.scheme} and class #{path.class}" + end + path = path.to_s @paths << path raise ArgumentError, 'need full URI' unless path =~ %r'^https?://' -- cgit v1.2.3