[前][次][番号順一覧][スレッド一覧]

ruby-changes:27570

From: drbrain <ko1@a...>
Date: Thu, 7 Mar 2013 13:10:36 +0900 (JST)
Subject: [ruby-changes:27570] drbrain:r39622 (trunk): * ChangeLog:

drbrain	2013-03-07 13:06:30 +0900 (Thu, 07 Mar 2013)

  New Revision: 39622

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=39622

  Log:
    * ChangeLog:
    * lib/rubygems/commands/setup_command.rb (class Gem):
    * lib/rubygems/commands/setup_command.rb (TEXT):
    * lib/rubygems/spec_fetcher.rb (class Gem):
    * lib/rubygems/test_utilities.rb (class Gem):
    * lib/rubygems.rb (module Gem):
    * test/rubygems/test_gem_commands_setup_command.rb (class TestGemCommandsSetupCommand):
    * test/rubygems/test_gem_spec_fetcher.rb (Upgraded http):

  Modified files:
    trunk/lib/rubygems/commands/setup_command.rb
    trunk/lib/rubygems/spec_fetcher.rb
    trunk/lib/rubygems/test_utilities.rb
    trunk/lib/rubygems.rb
    trunk/test/rubygems/test_gem_commands_setup_command.rb
    trunk/test/rubygems/test_gem_spec_fetcher.rb

Index: lib/rubygems/spec_fetcher.rb
===================================================================
--- lib/rubygems/spec_fetcher.rb	(revision 39621)
+++ lib/rubygems/spec_fetcher.rb	(revision 39622)
@@ -241,7 +241,13 @@ class Gem::SpecFetcher https://github.com/ruby/ruby/blob/trunk/lib/rubygems/spec_fetcher.rb#L241
     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"
 
Index: lib/rubygems/commands/setup_command.rb
===================================================================
--- lib/rubygems/commands/setup_command.rb	(revision 39621)
+++ lib/rubygems/commands/setup_command.rb	(revision 39622)
@@ -77,6 +77,8 @@ class Gem::Commands::SetupCommand < Gem: https://github.com/ruby/ruby/blob/trunk/lib/rubygems/commands/setup_command.rb#L77
 
       options[:document].uniq!
     end
+
+    @verbose = nil
   end
 
   def check_ruby_version
@@ -279,18 +281,27 @@ TEXT https://github.com/ruby/ruby/blob/trunk/lib/rubygems/commands/setup_command.rb#L281
     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 https://github.com/ruby/ruby/blob/trunk/lib/rubygems/commands/setup_command.rb#L392
     [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')]
Index: lib/rubygems/test_utilities.rb
===================================================================
--- lib/rubygems/test_utilities.rb	(revision 39621)
+++ lib/rubygems/test_utilities.rb	(revision 39622)
@@ -38,6 +38,11 @@ class Gem::FakeFetcher https://github.com/ruby/ruby/blob/trunk/lib/rubygems/test_utilities.rb#L38
   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?://'
Index: lib/rubygems.rb
===================================================================
--- lib/rubygems.rb	(revision 39621)
+++ lib/rubygems.rb	(revision 39622)
@@ -8,7 +8,7 @@ https://github.com/ruby/ruby/blob/trunk/lib/rubygems.rb#L8
 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
Index: test/rubygems/test_gem_spec_fetcher.rb
===================================================================
--- test/rubygems/test_gem_spec_fetcher.rb	(revision 39621)
+++ test/rubygems/test_gem_spec_fetcher.rb	(revision 39622)
@@ -287,5 +287,30 @@ Upgraded http://rubygems.org to HTTPS https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_spec_fetcher.rb#L287
     assert_equal expected, @ui.output
   end
 
+  def test_upgrade_http_source_rubygems_405
+    Gem.configuration.verbose = :really
+
+    source       = Gem::Source.new URI 'http://rubygems.org'
+    https_source = nil
+
+    @fetcher.data['https://rubygems.org/'] = proc do
+      raise Gem::RemoteFetcher::FetchError.new ' Not Allowed 405 ', nil
+    end
+
+    use_ui @ui do
+      https_source = @sf.upgrade_http_source source
+    end
+
+    assert_equal URI('https://rubygems.org'), https_source.uri
+
+    assert_empty @ui.error
+
+    expected = <<-EXPECTED
+Upgraded http://rubygems.org to HTTPS
+    EXPECTED
+
+    assert_equal expected, @ui.output
+  end
+
 end
 
Index: test/rubygems/test_gem_commands_setup_command.rb
===================================================================
--- test/rubygems/test_gem_commands_setup_command.rb	(revision 39621)
+++ test/rubygems/test_gem_commands_setup_command.rb	(revision 39622)
@@ -11,11 +11,17 @@ class TestGemCommandsSetupCommand < Gem: https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_commands_setup_command.rb#L11
     @cmd.options[:prefix] = @install_dir
 
     FileUtils.mkdir_p 'bin'
-    FileUtils.mkdir_p 'lib/rubygems'
+    FileUtils.mkdir_p 'lib/rubygems/ssl_certs'
 
     open 'bin/gem',                   'w' do |io| io.puts '# gem'          end
     open 'lib/rubygems.rb',           'w' do |io| io.puts '# rubygems.rb'  end
     open 'lib/rubygems/test_case.rb', 'w' do |io| io.puts '# test_case.rb' end
+    open 'lib/rubygems/ssl_certs/foo.pem', 'w' do |io| io.puts 'PEM'       end
+  end
+
+  def test_pem_files_in
+    assert_equal %w[rubygems/ssl_certs/foo.pem],
+                 @cmd.pem_files_in('lib').sort
   end
 
   def test_rb_files_in
@@ -23,6 +29,17 @@ class TestGemCommandsSetupCommand < Gem: https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_commands_setup_command.rb#L29
                  @cmd.rb_files_in('lib').sort
   end
 
+  def test_install_lib
+    @cmd.extend FileUtils
+
+    Dir.mktmpdir 'lib' do |dir|
+      @cmd.install_lib dir
+
+      assert_path_exists File.join(dir, 'rubygems.rb')
+      assert_path_exists File.join(dir, 'rubygems/ssl_certs/foo.pem')
+    end
+  end
+
   def test_remove_old_lib_files
     lib            = File.join @install_dir, 'lib'
     lib_rubygems   = File.join lib, 'rubygems'

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]