mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
0454c0a281
commit
091c24d51b
12 changed files with 62 additions and 26 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
Wed Jun 5 06:44:08 2013 Eric Hodel <drbrain@segment7.net>
|
||||||
|
|
||||||
|
* 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 <drbrain@segment7.net>
|
Wed Jun 5 06:35:15 2013 Eric Hodel <drbrain@segment7.net>
|
||||||
|
|
||||||
* doc/marshal.rdoc: Add description of Marshal format.
|
* doc/marshal.rdoc: Add description of Marshal format.
|
||||||
|
|
5
NEWS
5
NEWS
|
@ -86,6 +86,11 @@ with all sufficient information, see the ChangeLog file.
|
||||||
* Rinda now supports multicast sockets. See Rinda::RingServer and
|
* Rinda now supports multicast sockets. See Rinda::RingServer and
|
||||||
Rinda::RingFinger for details.
|
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
|
* Socket
|
||||||
* New methods:
|
* New methods:
|
||||||
* Socket.getifaddrs
|
* Socket.getifaddrs
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
require 'rbconfig'
|
require 'rbconfig'
|
||||||
|
|
||||||
module Gem
|
module Gem
|
||||||
VERSION = '2.0.2'
|
VERSION = '2.0.3'
|
||||||
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
|
||||||
|
@ -328,7 +328,7 @@ module Gem
|
||||||
end
|
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.
|
# package is not available as a gem, return nil.
|
||||||
|
|
||||||
def self.datadir(gem_name)
|
def self.datadir(gem_name)
|
||||||
|
|
|
@ -180,7 +180,7 @@ For further reading on signing gems see `ri Gem::Security`.
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_default_cert
|
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
|
cert = File.read cert_file
|
||||||
options[:issuer_cert] = OpenSSL::X509::Certificate.new cert
|
options[:issuer_cert] = OpenSSL::X509::Certificate.new cert
|
||||||
rescue Errno::ENOENT
|
rescue Errno::ENOENT
|
||||||
|
@ -196,7 +196,7 @@ For further reading on signing gems see `ri Gem::Security`.
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_default_key
|
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
|
key = File.read key_file
|
||||||
options[:key] = OpenSSL::PKey::RSA.new key
|
options[:key] = OpenSSL::PKey::RSA.new key
|
||||||
rescue Errno::ENOENT
|
rescue Errno::ENOENT
|
||||||
|
|
|
@ -3,7 +3,7 @@ require 'rubygems/commands/query_command'
|
||||||
|
|
||||||
##
|
##
|
||||||
# An alternate to Gem::Commands::QueryCommand that searches for gems starting
|
# 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
|
class Gem::Commands::ListCommand < Gem::Commands::QueryCommand
|
||||||
|
|
||||||
|
|
|
@ -110,4 +110,18 @@ module Gem
|
||||||
'ruby'
|
'ruby'
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
|
@ -34,12 +34,12 @@ class Gem::Security::Signer
|
||||||
@key = key
|
@key = key
|
||||||
|
|
||||||
unless @key then
|
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
|
@key = default_key if File.exist? default_key
|
||||||
end
|
end
|
||||||
|
|
||||||
unless @cert_chain then
|
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
|
@cert_chain = [default_cert] if File.exist? default_cert
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -110,15 +110,15 @@ class Gem::Security::Signer
|
||||||
def re_sign_key # :nodoc:
|
def re_sign_key # :nodoc:
|
||||||
old_cert = @cert_chain.last
|
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_cert = File.read disk_cert_path rescue nil
|
||||||
disk_key =
|
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
|
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'
|
expiry = old_cert.not_after.strftime '%Y%m%d%H%M%S'
|
||||||
old_cert_file = "gem-public_cert.pem.expired.#{expiry}"
|
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
|
unless File.exist? old_cert_path then
|
||||||
Gem::Security.write old_cert, old_cert_path
|
Gem::Security.write old_cert, old_cert_path
|
||||||
|
|
|
@ -1027,7 +1027,7 @@ Also, a list:
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Returns the path to the key named +key_name+ from <tt>test/rubygems/</tt>
|
# Returns the path tot he key named +key_name+ from <tt>test/rubygems</tt>
|
||||||
|
|
||||||
def self.key_path key_name
|
def self.key_path key_name
|
||||||
File.expand_path "../../../test/rubygems/#{key_name}_key.pem", __FILE__
|
File.expand_path "../../../test/rubygems/#{key_name}_key.pem", __FILE__
|
||||||
|
|
|
@ -308,10 +308,12 @@ Removed '/CN=alternate/DC=example'
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_execute_sign_default
|
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
|
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
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
||||||
|
|
||||||
path = File.join @tempdir, 'cert.pem'
|
path = File.join @tempdir, 'cert.pem'
|
||||||
|
@ -338,7 +340,9 @@ Removed '/CN=alternate/DC=example'
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_execute_sign_no_cert
|
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
|
Gem::Security.write PRIVATE_KEY, private_key_path
|
||||||
|
|
||||||
path = File.join @tempdir, 'cert.pem'
|
path = File.join @tempdir, 'cert.pem'
|
||||||
|
@ -364,7 +368,9 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_execute_sign_no_key
|
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
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
||||||
|
|
||||||
path = File.join @tempdir, 'cert.pem'
|
path = File.join @tempdir, 'cert.pem'
|
||||||
|
|
|
@ -1073,7 +1073,6 @@ gem 'other', version
|
||||||
|
|
||||||
CONFIG['CC'] = '$(TOUCH) $@ ||'
|
CONFIG['CC'] = '$(TOUCH) $@ ||'
|
||||||
CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
|
CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
|
||||||
$ruby = '#{Gem.ruby}'
|
|
||||||
|
|
||||||
create_makefile("#{@spec.name}")
|
create_makefile("#{@spec.name}")
|
||||||
RUBY
|
RUBY
|
||||||
|
|
|
@ -162,10 +162,12 @@ class TestGemPackage < Gem::Package::TarTestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_build_auto_signed
|
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
|
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
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
||||||
|
|
||||||
spec = Gem::Specification.new 'build', '1'
|
spec = Gem::Specification.new 'build', '1'
|
||||||
|
@ -509,7 +511,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
||||||
package.verify
|
package.verify
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_match /\s-\snonexistent\.gem\z/, e.message
|
assert_match ' - nonexistent.gem', e.message
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_verify_security_policy
|
def test_verify_security_policy
|
||||||
|
|
|
@ -50,10 +50,12 @@ class TestGemSecuritySigner < Gem::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_initialize_default
|
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
|
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
|
Gem::Security.write PUBLIC_CERT, public_cert_path
|
||||||
|
|
||||||
signer = Gem::Security::Signer.new nil, nil
|
signer = Gem::Security::Signer.new nil, nil
|
||||||
|
@ -120,12 +122,12 @@ c7NM7KZZjj7G++SXjYTEI1PHSA7aFQ/i/+qSUvx+Pg==
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_sign_expired_auto_update
|
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
|
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
|
Gem::Security.write EXPIRED_CERT, cert_path
|
||||||
|
|
||||||
signer = Gem::Security::Signer.new PRIVATE_KEY, [EXPIRED_CERT]
|
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"
|
expiry = EXPIRED_CERT.not_after.strftime "%Y%m%d%H%M%S"
|
||||||
|
|
||||||
expired_path =
|
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_path_exists expired_path
|
||||||
assert_equal EXPIRED_CERT.to_pem, File.read(expired_path)
|
assert_equal EXPIRED_CERT.to_pem, File.read(expired_path)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_sign_expired_auto_update_exists
|
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"
|
expiry = EXPIRED_CERT.not_after.strftime "%Y%m%d%H%M%S"
|
||||||
expired_path =
|
expired_path =
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue