* 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): git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
105361d9d4
commit
9926b16d35
@ -8,7 +8,7 @@
|
|||||||
require 'rbconfig'
|
require 'rbconfig'
|
||||||
|
|
||||||
module Gem
|
module Gem
|
||||||
VERSION = '2.0.1'
|
VERSION = '2.0.2'
|
||||||
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
|
||||||
|
@ -77,6 +77,8 @@ class Gem::Commands::SetupCommand < Gem::Command
|
|||||||
|
|
||||||
options[:document].uniq!
|
options[:document].uniq!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@verbose = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_ruby_version
|
def check_ruby_version
|
||||||
@ -279,18 +281,27 @@ TEXT
|
|||||||
end
|
end
|
||||||
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)
|
def install_lib(lib_dir)
|
||||||
say "Installing RubyGems" if @verbose
|
say "Installing RubyGems" if @verbose
|
||||||
|
|
||||||
lib_files = rb_files_in 'lib'
|
lib_files = rb_files_in 'lib'
|
||||||
|
pem_files = pem_files_in 'lib'
|
||||||
|
|
||||||
Dir.chdir 'lib' do
|
Dir.chdir 'lib' do
|
||||||
lib_files.each do |lib_file|
|
lib_files.each do |lib_file|
|
||||||
dest_file = File.join lib_dir, lib_file
|
install_file lib_file, lib_dir
|
||||||
dest_dir = File.dirname dest_file
|
end
|
||||||
mkdir_p dest_dir unless File.directory? dest_dir
|
|
||||||
|
|
||||||
install lib_file, dest_file, :mode => 0644
|
pem_files.each do |pem_file|
|
||||||
|
install_file pem_file, lib_dir
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -381,6 +392,12 @@ TEXT
|
|||||||
[lib_dir, bin_dir]
|
[lib_dir, bin_dir]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def pem_files_in dir
|
||||||
|
Dir.chdir dir do
|
||||||
|
Dir[File.join('**', '*pem')]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def rb_files_in dir
|
def rb_files_in dir
|
||||||
Dir.chdir dir do
|
Dir.chdir dir do
|
||||||
Dir[File.join('**', '*rb')]
|
Dir[File.join('**', '*rb')]
|
||||||
|
@ -241,7 +241,13 @@ class Gem::SpecFetcher
|
|||||||
https_uri.scheme = 'https'
|
https_uri.scheme = 'https'
|
||||||
https_uri += '/'
|
https_uri += '/'
|
||||||
|
|
||||||
|
https_uri = URI https_uri.to_s # cast to URI::HTTPS
|
||||||
|
|
||||||
|
begin
|
||||||
Gem::RemoteFetcher.fetcher.fetch_path https_uri, nil, true
|
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"
|
say "Upgraded #{uri} to HTTPS"
|
||||||
|
|
||||||
|
@ -38,6 +38,11 @@ class Gem::FakeFetcher
|
|||||||
end
|
end
|
||||||
|
|
||||||
def find_data(path)
|
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
|
path = path.to_s
|
||||||
@paths << path
|
@paths << path
|
||||||
raise ArgumentError, 'need full URI' unless path =~ %r'^https?://'
|
raise ArgumentError, 'need full URI' unless path =~ %r'^https?://'
|
||||||
|
@ -11,11 +11,17 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|||||||
@cmd.options[:prefix] = @install_dir
|
@cmd.options[:prefix] = @install_dir
|
||||||
|
|
||||||
FileUtils.mkdir_p 'bin'
|
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 'bin/gem', 'w' do |io| io.puts '# gem' end
|
||||||
open 'lib/rubygems.rb', 'w' do |io| io.puts '# rubygems.rb' 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/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
|
end
|
||||||
|
|
||||||
def test_rb_files_in
|
def test_rb_files_in
|
||||||
@ -23,6 +29,17 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|||||||
@cmd.rb_files_in('lib').sort
|
@cmd.rb_files_in('lib').sort
|
||||||
end
|
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
|
def test_remove_old_lib_files
|
||||||
lib = File.join @install_dir, 'lib'
|
lib = File.join @install_dir, 'lib'
|
||||||
lib_rubygems = File.join lib, 'rubygems'
|
lib_rubygems = File.join lib, 'rubygems'
|
||||||
|
@ -287,5 +287,30 @@ Upgraded http://rubygems.org to HTTPS
|
|||||||
assert_equal expected, @ui.output
|
assert_equal expected, @ui.output
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user