From 091c24d51b962745bf887a729c81e847b257dc11 Mon Sep 17 00:00:00 2001 From: drbrain Date: Tue, 4 Jun 2013 21:54:58 +0000 Subject: * lib/rubygems: Update to RubyGems 2.0.3 * test/rubygems: Tests for the above. * NEWS: Added RubyGems 2.0.3 note. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ NEWS | 5 +++++ lib/rubygems.rb | 4 ++-- lib/rubygems/commands/cert_command.rb | 4 ++-- lib/rubygems/commands/list_command.rb | 2 +- lib/rubygems/defaults.rb | 14 ++++++++++++++ lib/rubygems/security/signer.rb | 10 +++++----- lib/rubygems/test_case.rb | 2 +- test/rubygems/test_gem_commands_cert_command.rb | 14 ++++++++++---- test/rubygems/test_gem_installer.rb | 1 - test/rubygems/test_gem_package.rb | 8 +++++--- test/rubygems/test_gem_security_signer.rb | 16 +++++++++------- 12 files changed, 62 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4a6c9d3f00..5b93178ef9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Wed Jun 5 06:44:08 2013 Eric Hodel + + * lib/rubygems: Update to RubyGems 2.0.3 + + * test/rubygems: Tests for the above. + + * NEWS: Added RubyGems 2.0.3 note. + Wed Jun 5 06:35:15 2013 Eric Hodel * doc/marshal.rdoc: Add description of Marshal format. diff --git a/NEWS b/NEWS index c5e168f984..b7272834f8 100644 --- a/NEWS +++ b/NEWS @@ -86,6 +86,11 @@ with all sufficient information, see the ChangeLog file. * Rinda now supports multicast sockets. See Rinda::RingServer and Rinda::RingFinger for details. +* RubyGems + * Updated to 2.0.3. See + http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.0.3+%2F+2012-03-1 + for release notes. + * Socket * New methods: * Socket.getifaddrs diff --git a/lib/rubygems.rb b/lib/rubygems.rb index cbab206d48..3622f7102d 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -8,7 +8,7 @@ require 'rbconfig' module Gem - VERSION = '2.0.2' + VERSION = '2.0.3' end # Must be first since it unloads the prelude from 1.9.2 @@ -328,7 +328,7 @@ module Gem end ## - # The path to the data directory specified by the gem name. If the + # The path the the data directory specified by the gem name. If the # package is not available as a gem, return nil. def self.datadir(gem_name) diff --git a/lib/rubygems/commands/cert_command.rb b/lib/rubygems/commands/cert_command.rb index 13e5e2c37c..5a9320f9c4 100644 --- a/lib/rubygems/commands/cert_command.rb +++ b/lib/rubygems/commands/cert_command.rb @@ -180,7 +180,7 @@ For further reading on signing gems see `ri Gem::Security`. end def load_default_cert - cert_file = File.join Gem.user_home, 'gem-public_cert.pem' + cert_file = File.join Gem.default_cert_path cert = File.read cert_file options[:issuer_cert] = OpenSSL::X509::Certificate.new cert rescue Errno::ENOENT @@ -196,7 +196,7 @@ For further reading on signing gems see `ri Gem::Security`. end def load_default_key - key_file = File.join Gem.user_home, 'gem-private_key.pem' + key_file = File.join Gem.default_key_path key = File.read key_file options[:key] = OpenSSL::PKey::RSA.new key rescue Errno::ENOENT diff --git a/lib/rubygems/commands/list_command.rb b/lib/rubygems/commands/list_command.rb index 71b8a93fad..d9b7a9535e 100644 --- a/lib/rubygems/commands/list_command.rb +++ b/lib/rubygems/commands/list_command.rb @@ -3,7 +3,7 @@ require 'rubygems/commands/query_command' ## # An alternate to Gem::Commands::QueryCommand that searches for gems starting -# with the supplied argument. +# with the the supplied argument. class Gem::Commands::ListCommand < Gem::Commands::QueryCommand diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb index 6854e9b760..9c5e303c0e 100644 --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb @@ -110,4 +110,18 @@ module Gem 'ruby' end end + + ## + # The default signing key path + + def self.default_key_path + File.join Gem.user_home, ".gem", "gem-private_key.pem" + end + + ## + # The default signing certificate chain path + + def self.default_cert_path + File.join Gem.user_home, ".gem", "gem-public_cert.pem" + end end diff --git a/lib/rubygems/security/signer.rb b/lib/rubygems/security/signer.rb index 29b03683b7..78455c0732 100644 --- a/lib/rubygems/security/signer.rb +++ b/lib/rubygems/security/signer.rb @@ -34,12 +34,12 @@ class Gem::Security::Signer @key = key unless @key then - default_key = File.join Gem.user_home, 'gem-private_key.pem' + default_key = File.join Gem.default_key_path @key = default_key if File.exist? default_key end unless @cert_chain then - default_cert = File.join Gem.user_home, 'gem-public_cert.pem' + default_cert = File.join Gem.default_cert_path @cert_chain = [default_cert] if File.exist? default_cert end @@ -110,15 +110,15 @@ class Gem::Security::Signer def re_sign_key # :nodoc: old_cert = @cert_chain.last - disk_cert_path = File.join Gem.user_home, 'gem-public_cert.pem' + disk_cert_path = File.join Gem.default_cert_path disk_cert = File.read disk_cert_path rescue nil disk_key = - File.read File.join(Gem.user_home, 'gem-private_key.pem') rescue nil + File.read File.join(Gem.default_key_path) rescue nil if disk_key == @key.to_pem and disk_cert == old_cert.to_pem then expiry = old_cert.not_after.strftime '%Y%m%d%H%M%S' old_cert_file = "gem-public_cert.pem.expired.#{expiry}" - old_cert_path = File.join Gem.user_home, old_cert_file + old_cert_path = File.join Gem.user_home, ".gem", old_cert_file unless File.exist? old_cert_path then Gem::Security.write old_cert, old_cert_path diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb index d81012cbd3..3da3173285 100644 --- a/lib/rubygems/test_case.rb +++ b/lib/rubygems/test_case.rb @@ -1027,7 +1027,7 @@ Also, a list: end ## - # Returns the path to the key named +key_name+ from test/rubygems/ + # Returns the path tot he key named +key_name+ from test/rubygems def self.key_path key_name File.expand_path "../../../test/rubygems/#{key_name}_key.pem", __FILE__ diff --git a/test/rubygems/test_gem_commands_cert_command.rb b/test/rubygems/test_gem_commands_cert_command.rb index 4adbec5e66..75db6c4e15 100644 --- a/test/rubygems/test_gem_commands_cert_command.rb +++ b/test/rubygems/test_gem_commands_cert_command.rb @@ -308,10 +308,12 @@ Removed '/CN=alternate/DC=example' end def test_execute_sign_default - private_key_path = File.join Gem.user_home, 'gem-private_key.pem' + FileUtils.mkdir_p File.join Gem.user_home, '.gem' + + private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem' Gem::Security.write PRIVATE_KEY, private_key_path - public_cert_path = File.join Gem.user_home, 'gem-public_cert.pem' + public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem' Gem::Security.write PUBLIC_CERT, public_cert_path path = File.join @tempdir, 'cert.pem' @@ -338,7 +340,9 @@ Removed '/CN=alternate/DC=example' end def test_execute_sign_no_cert - private_key_path = File.join Gem.user_home, 'gem-private_key.pem' + FileUtils.mkdir_p File.join Gem.user_home, '.gem' + + private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem' Gem::Security.write PRIVATE_KEY, private_key_path path = File.join @tempdir, 'cert.pem' @@ -364,7 +368,9 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis end def test_execute_sign_no_key - public_cert_path = File.join Gem.user_home, 'gem-public_cert.pem' + FileUtils.mkdir_p File.join Gem.user_home, '.gem' + + public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem' Gem::Security.write PUBLIC_CERT, public_cert_path path = File.join @tempdir, 'cert.pem' diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 4f233f9aab..0f9bfefd0e 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -1073,7 +1073,6 @@ gem 'other', version CONFIG['CC'] = '$(TOUCH) $@ ||' CONFIG['LDSHARED'] = '$(TOUCH) $@ ||' - $ruby = '#{Gem.ruby}' create_makefile("#{@spec.name}") RUBY diff --git a/test/rubygems/test_gem_package.rb b/test/rubygems/test_gem_package.rb index bf8d7aae70..81e7f7891c 100644 --- a/test/rubygems/test_gem_package.rb +++ b/test/rubygems/test_gem_package.rb @@ -162,10 +162,12 @@ class TestGemPackage < Gem::Package::TarTestCase end def test_build_auto_signed - private_key_path = File.join Gem.user_home, 'gem-private_key.pem' + FileUtils.mkdir_p File.join(Gem.user_home, '.gem') + + private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem' Gem::Security.write PRIVATE_KEY, private_key_path - public_cert_path = File.join Gem.user_home, 'gem-public_cert.pem' + public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem' Gem::Security.write PUBLIC_CERT, public_cert_path spec = Gem::Specification.new 'build', '1' @@ -509,7 +511,7 @@ class TestGemPackage < Gem::Package::TarTestCase package.verify end - assert_match /\s-\snonexistent\.gem\z/, e.message + assert_match ' - nonexistent.gem', e.message end def test_verify_security_policy diff --git a/test/rubygems/test_gem_security_signer.rb b/test/rubygems/test_gem_security_signer.rb index c9a08f625d..59c5089fec 100644 --- a/test/rubygems/test_gem_security_signer.rb +++ b/test/rubygems/test_gem_security_signer.rb @@ -50,10 +50,12 @@ class TestGemSecuritySigner < Gem::TestCase end def test_initialize_default - private_key_path = File.join Gem.user_home, 'gem-private_key.pem' + FileUtils.mkdir_p File.join(Gem.user_home, '.gem') + + private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem' Gem::Security.write PRIVATE_KEY, private_key_path - public_cert_path = File.join Gem.user_home, 'gem-public_cert.pem' + public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem' Gem::Security.write PUBLIC_CERT, public_cert_path signer = Gem::Security::Signer.new nil, nil @@ -120,12 +122,12 @@ c7NM7KZZjj7G++SXjYTEI1PHSA7aFQ/i/+qSUvx+Pg== end def test_sign_expired_auto_update - FileUtils.mkdir_p Gem.user_home, :mode => 0700 + FileUtils.mkdir_p File.join(Gem.user_home, '.gem'), :mode => 0700 - private_key_path = File.join(Gem.user_home, 'gem-private_key.pem') + private_key_path = File.join(Gem.user_home, '.gem', 'gem-private_key.pem') Gem::Security.write PRIVATE_KEY, private_key_path - cert_path = File.join Gem.user_home, 'gem-public_cert.pem' + cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem' Gem::Security.write EXPIRED_CERT, cert_path signer = Gem::Security::Signer.new PRIVATE_KEY, [EXPIRED_CERT] @@ -140,14 +142,14 @@ c7NM7KZZjj7G++SXjYTEI1PHSA7aFQ/i/+qSUvx+Pg== expiry = EXPIRED_CERT.not_after.strftime "%Y%m%d%H%M%S" expired_path = - File.join Gem.user_home, "gem-public_cert.pem.expired.#{expiry}" + File.join Gem.user_home, '.gem', "gem-public_cert.pem.expired.#{expiry}" assert_path_exists expired_path assert_equal EXPIRED_CERT.to_pem, File.read(expired_path) end def test_sign_expired_auto_update_exists - FileUtils.mkdir_p Gem.user_home, :mode => 0700 + FileUtils.mkdir_p File.join(Gem.user_home, '.gem'), :mode => 0700 expiry = EXPIRED_CERT.not_after.strftime "%Y%m%d%H%M%S" expired_path = -- cgit v1.2.3