1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/rubygems: Update to RubyGems 2.0.4. See

https://github.com/rubygems/rubygems/blob/2.0/History.txt for changes


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41843 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
drbrain 2013-07-08 22:41:03 +00:00
parent fa343a796f
commit 7083cebeae
32 changed files with 306 additions and 111 deletions

View file

@ -1,3 +1,8 @@
Tue Jul 9 07:39:45 2013 Eric Hodel <drbrain@segment7.net>
* lib/rubygems: Update to RubyGems 2.0.4. See
https://github.com/rubygems/rubygems/blob/2.0/History.txt for changes
Tue Jul 9 01:47:16 2013 Tanaka Akira <akr@fsij.org> Tue Jul 9 01:47:16 2013 Tanaka Akira <akr@fsij.org>
* bignum.c (biglsh_bang): Don't shift a BDIGIT with BITSPERDIG bits. * bignum.c (biglsh_bang): Don't shift a BDIGIT with BITSPERDIG bits.

View file

@ -8,7 +8,7 @@
require 'rbconfig' require 'rbconfig'
module Gem module Gem
VERSION = '2.0.3' VERSION = '2.0.4'
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
@ -173,7 +173,12 @@ module Gem
# require will try to activate the more specific version. # require will try to activate the more specific version.
spec = Gem::Specification.find_inactive_by_path path spec = Gem::Specification.find_inactive_by_path path
return false unless spec
unless spec
spec = Gem::Specification.find_by_path path
return true if spec && spec.activated?
return false
end
begin begin
spec.activate spec.activate

View file

@ -113,7 +113,15 @@ platform.
format = "#{' ' * margin_width}%-#{desc_width}s%s" format = "#{' ' * margin_width}%-#{desc_width}s%s"
command_manager.command_names.each do |cmd_name| command_manager.command_names.each do |cmd_name|
summary = command_manager[cmd_name].summary command = command_manager[cmd_name]
summary =
if command then
command.summary
else
"[No command found for #{cmd_name}, bug?]"
end
summary = wrap(summary, summary_width).split "\n" summary = wrap(summary, summary_width).split "\n"
out << sprintf(format, cmd_name, summary.shift) out << sprintf(format, cmd_name, summary.shift)
until summary.empty? do until summary.empty? do

View file

@ -7,9 +7,8 @@ require 'rubygems/commands/query_command'
class Gem::Commands::ListCommand < Gem::Commands::QueryCommand class Gem::Commands::ListCommand < Gem::Commands::QueryCommand
def initialize(name = 'list', def initialize
summary = 'Display gems whose name starts with STRING') super 'list', 'Display gems whose name starts with STRING'
super name, summary
remove_option('--name-matches') remove_option('--name-matches')
end end
@ -27,9 +26,8 @@ class Gem::Commands::ListCommand < Gem::Commands::QueryCommand
end end
def execute def execute
name = get_one_optional_argument || '' string = get_one_optional_argument || ''
options[:name] = /^#{name}/i options[:name] = /^#{string}/i
super super
end end

View file

@ -73,7 +73,7 @@ class Gem::Commands::OwnerCommand < Gem::Command
request.add_field "Authorization", api_key request.add_field "Authorization", api_key
end end
with_response response with_response response, "Removing #{owner}"
rescue rescue
# ignore # ignore
end end

View file

@ -10,7 +10,8 @@ class Gem::Commands::PristineCommand < Gem::Command
def initialize def initialize
super 'pristine', super 'pristine',
'Restores installed gems to pristine condition from files located in the gem cache', 'Restores installed gems to pristine condition from files located in the gem cache',
:version => Gem::Requirement.default, :extensions => true, :version => Gem::Requirement.default,
:extensions => true,
:all => false :all => false
add_option('--all', add_option('--all',
@ -37,7 +38,7 @@ class Gem::Commands::PristineCommand < Gem::Command
end end
def defaults_str # :nodoc: def defaults_str # :nodoc:
"--all --extensions" '--extensions'
end end
def description # :nodoc: def description # :nodoc:
@ -52,8 +53,8 @@ for the gem are regenerated.
If the cached gem cannot be found, you will need to use `gem install` to If the cached gem cannot be found, you will need to use `gem install` to
revert the gem. revert the gem.
If --no-extensions is provided pristine will not attempt to restore gems with If --no-extensions is provided pristine will not attempt to restore gems
extensions. with extensions.
EOF EOF
end end

View file

@ -20,7 +20,8 @@ class Gem::Commands::PushCommand < Gem::Command
end end
def initialize def initialize
super 'push', description super 'push', description, :host => self.host
add_proxy_option add_proxy_option
add_key_option add_key_option

View file

@ -1,17 +1,31 @@
require 'rubygems/command' require 'rubygems/command'
require 'rubygems/commands/list_command' require 'rubygems/commands/query_command'
class Gem::Commands::SearchCommand < Gem::Commands::ListCommand class Gem::Commands::SearchCommand < Gem::Commands::QueryCommand
def initialize def initialize
super 'search', 'Display all gems whose name contains STRING' super 'search', 'Display all gems whose name contains STRING'
@defaults[:domain] = :remote remove_option '--name-matches'
end
def arguments # :nodoc:
"STRING fragment of gem name to search for"
end end
def defaults_str # :nodoc: def defaults_str # :nodoc:
"--remote --no-details" "--remote --no-details"
end end
def usage # :nodoc:
"#{program_name} [STRING]"
end
def execute
string = get_one_optional_argument
options[:name] = /#{string}/i
super
end
end end

View file

@ -159,29 +159,7 @@ By default, this RubyGems will install gem as:
options[:previous_version] = Gem::Version.new(options[:previous_version]) options[:previous_version] = Gem::Version.new(options[:previous_version])
release_notes = File.join Dir.pwd, 'History.txt' show_release_notes
release_notes = if File.exist? release_notes then
history = File.read release_notes
history = history.sub(/^# coding:.*?^=/m, '')
text = history.split(HISTORY_HEADER)
text.shift # correct an off-by-one generated by split
version_lines = history.scan(HISTORY_HEADER)
versions = history.scan(VERSION_MATCHER).flatten.map { |x| Gem::Version.new(x) }
history_string = ""
until versions.length == 0 or versions.shift < options[:previous_version]
history_string += version_lines.shift + text.shift
end
history_string
else
"Oh-no! Unable to find release notes!"
end
say release_notes
say say
say "-" * 78 say "-" * 78
@ -458,6 +436,40 @@ abort "#{deprecation_message}"
end end
end end
def show_release_notes
release_notes = File.join Dir.pwd, 'History.txt'
release_notes =
if File.exist? release_notes then
history = File.read release_notes
history.force_encoding Encoding::UTF_8 if
Object.const_defined? :Encoding
history = history.sub(/^# coding:.*?^=/m, '')
text = history.split(HISTORY_HEADER)
text.shift # correct an off-by-one generated by split
version_lines = history.scan(HISTORY_HEADER)
versions = history.scan(VERSION_MATCHER).flatten.map do |x|
Gem::Version.new(x)
end
history_string = ""
until versions.length == 0 or
versions.shift < options[:previous_version] do
history_string += version_lines.shift + text.shift
end
history_string
else
"Oh-no! Unable to find release notes!"
end
say release_notes
end
def uninstall_old_gemcutter def uninstall_old_gemcutter
require 'rubygems/uninstaller' require 'rubygems/uninstaller'

View file

@ -28,7 +28,7 @@ class Gem::Commands::SpecificationCommand < Gem::Command
options[:format] = :ruby options[:format] = :ruby
end end
add_option('--yaml', 'Output RUBY format') do |value, options| add_option('--yaml', 'Output YAML format') do |value, options|
options[:format] = :yaml options[:format] = :yaml
end end

View file

@ -94,7 +94,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
say "Updating #{name}" say "Updating #{name}"
begin begin
@installer.install name, version @installer.install name, Gem::Requirement.new(version)
success = true success = true
rescue Gem::InstallError => e rescue Gem::InstallError => e
alert_error "Error installing #{name}:\n\t#{e.message}" alert_error "Error installing #{name}:\n\t#{e.message}"

View file

@ -4,6 +4,8 @@
# See LICENSE.txt for permissions. # See LICENSE.txt for permissions.
#++ #++
require 'monitor'
module Kernel module Kernel
if defined?(gem_original_require) then if defined?(gem_original_require) then
@ -31,7 +33,11 @@ module Kernel
# The normal <tt>require</tt> functionality of returning false if # The normal <tt>require</tt> functionality of returning false if
# that file has already been loaded is preserved. # that file has already been loaded is preserved.
ACTIVATION_MONITOR = Monitor.new
def require path def require path
ACTIVATION_MONITOR.enter
spec = Gem.find_unresolved_default_spec(path) spec = Gem.find_unresolved_default_spec(path)
if spec if spec
Gem.remove_unresolved_default_spec(spec) Gem.remove_unresolved_default_spec(spec)
@ -111,6 +117,8 @@ module Kernel
end end
raise load_error raise load_error
ensure
ACTIVATION_MONITOR.exit
end end
private :require private :require

View file

@ -54,7 +54,9 @@ module Gem
# Path for gems in the user's home directory # Path for gems in the user's home directory
def self.user_dir def self.user_dir
File.join Gem.user_home, '.gem', ruby_engine, ConfigMap[:ruby_version] parts = [Gem.user_home, '.gem', ruby_engine]
parts << ConfigMap[:ruby_version] unless ConfigMap[:ruby_version].empty?
File.join parts
end end
## ##

View file

@ -63,7 +63,6 @@ class Gem::DependencyInstaller
# HACK shouldn't change the global settings, needed for -i behavior # HACK shouldn't change the global settings, needed for -i behavior
# maybe move to the install command? See also github #442 # maybe move to the install command? See also github #442
Gem::Specification.dirs = @install_dir Gem::Specification.dirs = @install_dir
Gem.ensure_gem_subdirectories @install_dir
end end
options = DEFAULT_OPTIONS.merge options options = DEFAULT_OPTIONS.merge options

View file

@ -349,7 +349,7 @@ module Gem
when Dependency when Dependency
@dependency == other @dependency == other
when DependencyRequest when DependencyRequest
@dependency == other.dep && @requester == other.requester @dependency == other.dependency && @requester == other.requester
else else
false false
end end

View file

@ -62,10 +62,10 @@ module Gem
## ##
# A wordy description of the error. # A wordy description of the error.
def wordy def wordy
"Found %s (%), but was for platform%s %s" % "Found %s (%s), but was for platform%s %s" %
[@name, [@name,
@version, @version,
@platforms.size == 1 ? 's' : '', @platforms.size == 1 ? '' : 's',
@platforms.join(' ,')] @platforms.join(' ,')]
end end
end end

View file

@ -38,7 +38,7 @@ module Gem::GemcutterUtilities
say "Enter your #{pretty_host} credentials." say "Enter your #{pretty_host} credentials."
say "Don't have an account yet? " + say "Don't have an account yet? " +
"Create one at https://#{sign_in_host}/sign_up" "Create one at #{sign_in_host}/sign_up"
email = ask " Email: " email = ask " Email: "
password = ask_for_password "Password: " password = ask_for_password "Password: "
@ -60,7 +60,14 @@ module Gem::GemcutterUtilities
configured_host = Gem.host unless configured_host = Gem.host unless
Gem.configuration.disable_default_gem_server Gem.configuration.disable_default_gem_server
@host ||= ENV['RUBYGEMS_HOST'] || configured_host @host ||=
begin
env_rubygems_host = ENV['RUBYGEMS_HOST']
env_rubygems_host = nil if
env_rubygems_host and env_rubygems_host.empty?
env_rubygems_host|| configured_host
end
end end
def rubygems_api_request(method, path, host = nil, &block) def rubygems_api_request(method, path, host = nil, &block)
@ -79,7 +86,7 @@ module Gem::GemcutterUtilities
Gem::RemoteFetcher.fetcher.request(uri, request_method, &block) Gem::RemoteFetcher.fetcher.request(uri, request_method, &block)
end end
def with_response(resp) def with_response resp, error_prefix = nil
case resp case resp
when Net::HTTPSuccess then when Net::HTTPSuccess then
if block_given? then if block_given? then
@ -88,7 +95,10 @@ module Gem::GemcutterUtilities
say resp.body say resp.body
end end
else else
say resp.body message = resp.body
message = "#{error_prefix}: #{message}" if error_prefix
say message
terminate_interaction 1 # TODO: question this terminate_interaction 1 # TODO: question this
end end
end end

View file

@ -331,8 +331,9 @@ class Gem::Installer
# specifications directory. # specifications directory.
def write_spec def write_spec
File.open(spec_file, "w") do |file| open spec_file, 'w' do |file|
file.puts spec.to_ruby_for_cache file.puts spec.to_ruby_for_cache
file.fsync rescue nil # for filesystems without fsync(2)
end end
end end
@ -773,7 +774,13 @@ EOF
def write_build_info_file def write_build_info_file
return if @build_args.empty? return if @build_args.empty?
open spec.build_info_file, 'w' do |io| build_info_dir = File.join gem_home, 'build_info'
FileUtils.mkdir_p build_info_dir
build_info_file = File.join build_info_dir, "#{spec.full_name}.info"
open build_info_file, 'w' do |io|
@build_args.each do |arg| @build_args.each do |arg|
io.puts arg io.puts arg
end end

View file

@ -336,7 +336,6 @@ EOM
open destination, 'wb', entry.header.mode do |out| open destination, 'wb', entry.header.mode do |out|
out.write entry.read out.write entry.read
out.fsync rescue nil # for filesystems without fsync(2)
end end
say destination if Gem.configuration.really_verbose say destination if Gem.configuration.really_verbose

View file

@ -74,6 +74,7 @@ class Gem::Platform
when /hpux(\d+)?/ then [ 'hpux', $1 ] when /hpux(\d+)?/ then [ 'hpux', $1 ]
when /^java$/, /^jruby$/ then [ 'java', nil ] when /^java$/, /^jruby$/ then [ 'java', nil ]
when /^java([\d.]*)/ then [ 'java', $1 ] when /^java([\d.]*)/ then [ 'java', $1 ]
when /^dalvik(\d+)?$/ then [ 'dalvik', $1 ]
when /^dotnet$/ then [ 'dotnet', nil ] when /^dotnet$/ then [ 'dotnet', nil ]
when /^dotnet([\d.]*)/ then [ 'dotnet', $1 ] when /^dotnet([\d.]*)/ then [ 'dotnet', $1 ]
when /linux/ then [ 'linux', $1 ] when /linux/ then [ 'linux', $1 ]
@ -155,6 +156,7 @@ class Gem::Platform
when /^i686-darwin(\d)/ then ['x86', 'darwin', $1 ] when /^i686-darwin(\d)/ then ['x86', 'darwin', $1 ]
when /^i\d86-linux/ then ['x86', 'linux', nil ] when /^i\d86-linux/ then ['x86', 'linux', nil ]
when 'java', 'jruby' then [nil, 'java', nil ] when 'java', 'jruby' then [nil, 'java', nil ]
when /^dalvik(\d+)?$/ then [nil, 'dalvik', $1 ]
when /dotnet(\-(\d+\.\d+))?/ then ['universal','dotnet', $2 ] when /dotnet(\-(\d+\.\d+))?/ then ['universal','dotnet', $2 ]
when /mswin32(\_(\d+))?/ then ['x86', 'mswin32', $2 ] when /mswin32(\_(\d+))?/ then ['x86', 'mswin32', $2 ]
when 'powerpc-darwin' then ['powerpc', 'darwin', nil ] when 'powerpc-darwin' then ['powerpc', 'darwin', nil ]

View file

@ -5,6 +5,17 @@
# See LICENSE.txt for permissions. # See LICENSE.txt for permissions.
#++ #++
require 'rubygems/version'
require 'rubygems/requirement'
require 'rubygems/platform'
require 'rubygems/deprecate'
# :stopdoc:
# date.rb can't be loaded for `make install` due to miniruby
# Date is needed for old gems that stored #date as Date instead of Time.
class Date; end
# :startdoc:
## ##
# The Specification class contains the information for a Gem. Typically # The Specification class contains the information for a Gem. Typically
# defined in a .gemspec file or a Rakefile, and looks like this: # defined in a .gemspec file or a Rakefile, and looks like this:
@ -20,32 +31,19 @@
# s.homepage = 'https://rubygems.org/gems/example' # s.homepage = 'https://rubygems.org/gems/example'
# end # end
# #
# Starting in RubyGems 1.9.0, a Specification can hold arbitrary # Starting in RubyGems 1.9.0, a Specification can hold arbitrary
# metadata. This metadata is accessed via Specification#metadata # metadata. This metadata is accessed via Specification#metadata
# and has the following restrictions: # and has the following restrictions:
# #
# * Must be a Hash object # * Must be a Hash object
# * All keys and values must be Strings # * All keys and values must be Strings
# * Keys can be a maximum of 128 bytes and values can be a # * Keys can be a maximum of 128 bytes and values can be a
# maximum of 1024 bytes # maximum of 1024 bytes
# * All strings must be UTF8, no binary data is allowed # * All strings must be UTF8, no binary data is allowed
# #
# For example, to add metadata for the location of a bugtracker: # For example, to add metadata for the location of a bugtracker:
# #
# s.metadata = { "bugtracker" => "http://somewhere.com/blah" } # s.metadata = { "bugtracker" => "http://somewhere.com/blah" }
#
require 'rubygems/version'
require 'rubygems/requirement'
require 'rubygems/platform'
require 'rubygems/deprecate'
# :stopdoc:
# date.rb can't be loaded for `make install` due to miniruby
# Date is needed for old gems that stored #date as Date instead of Time.
class Date; end
# :startdoc:
class Gem::Specification class Gem::Specification
@ -918,7 +916,7 @@ class Gem::Specification
result = Hash.new { |h,k| h[k] = {} } result = Hash.new { |h,k| h[k] = {} }
native = {} native = {}
Gem::Specification._all.reverse_each do |spec| Gem::Specification.reverse_each do |spec|
next if spec.version.prerelease? unless prerelease next if spec.version.prerelease? unless prerelease
native[spec.name] = spec.version if spec.platform == Gem::Platform::RUBY native[spec.name] = spec.version if spec.platform == Gem::Platform::RUBY
@ -995,7 +993,7 @@ class Gem::Specification
# TODO: maybe we should switch to rubygems' version service? # TODO: maybe we should switch to rubygems' version service?
fetcher = Gem::SpecFetcher.fetcher fetcher = Gem::SpecFetcher.fetcher
latest_specs.each do |local| latest_specs(true).each do |local|
dependency = Gem::Dependency.new local.name, ">= #{local.version}" dependency = Gem::Dependency.new local.name, ">= #{local.version}"
remotes, _ = fetcher.search_for_dependency dependency remotes, _ = fetcher.search_for_dependency dependency
remotes = remotes.map { |n, _| n.version } remotes = remotes.map { |n, _| n.version }
@ -1236,7 +1234,7 @@ class Gem::Specification
unless dependency.respond_to?(:name) && unless dependency.respond_to?(:name) &&
dependency.respond_to?(:version_requirements) dependency.respond_to?(:version_requirements)
dependency = Gem::Dependency.new(dependency, requirements, type) dependency = Gem::Dependency.new(dependency.to_s, requirements, type)
end end
dependencies << dependency dependencies << dependency
@ -2270,7 +2268,7 @@ class Gem::Specification
require 'rubygems/psych_tree' require 'rubygems/psych_tree'
end end
builder = Gem::NoAliasYAMLTree.create builder = Gem::NoAliasYAMLTree.new({})
builder << self builder << self
ast = builder.tree ast = builder.tree

View file

@ -1198,8 +1198,10 @@ class TestGem < Gem::TestCase
end end
def test_self_user_dir def test_self_user_dir
assert_equal File.join(@userhome, '.gem', Gem.ruby_engine, parts = [@userhome, '.gem', Gem.ruby_engine]
Gem::ConfigMap[:ruby_version]), Gem.user_dir parts << Gem::ConfigMap[:ruby_version] unless Gem::ConfigMap[:ruby_version].empty?
assert_equal File.join(parts), Gem.user_dir
end end
def test_self_user_home def test_self_user_home

View file

@ -10,6 +10,9 @@ class TestGemCommandsHelpCommand < Gem::TestCase
super super
@cmd = Gem::Commands::HelpCommand.new @cmd = Gem::Commands::HelpCommand.new
load File.expand_path('../rubygems_plugin.rb', __FILE__) unless
Gem::Commands.const_defined? :InterruptCommand
end end
def test_gem_help_bad def test_gem_help_bad
@ -34,6 +37,8 @@ class TestGemCommandsHelpCommand < Gem::TestCase
assert_match(/\s+#{cmd}\s+\S+/, out) assert_match(/\s+#{cmd}\s+\S+/, out)
end end
assert_equal '', err assert_equal '', err
refute_match 'No command found for ', out
end end
end end

View file

@ -140,4 +140,16 @@ EOF
assert_equal '701229f217cdf23b1344c7b4b54ca97', @fetcher.last_request['Authorization'] assert_equal '701229f217cdf23b1344c7b4b54ca97', @fetcher.last_request['Authorization']
end end
def test_remove_owners_missing
response = 'Owner could not be found.'
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 404, 'Not Found']
use_ui @ui do
@cmd.remove_owners("freewill", ["missing@example"])
end
assert_equal "Removing missing@example: #{response}\n", @ui.output
end
end end

View file

@ -61,6 +61,22 @@ class TestGemCommandsPushCommand < Gem::TestCase
assert_match @response, @ui.output assert_match @response, @ui.output
end end
def test_execute
open 'example', 'w' do |io| io.write 'hello' end
@response = "Successfully registered gem: freewill (1.0.0)"
@fetcher.data["#{Gem.host}/api/v1/gems"] = [@response, 200, 'OK']
@cmd.options[:args] = %w[example]
@cmd.execute
assert_equal Net::HTTP::Post, @fetcher.last_request.class
assert_equal 'hello', @fetcher.last_request.body
assert_equal "application/octet-stream",
@fetcher.last_request["Content-Type"]
end
def test_execute_host def test_execute_host
host = 'https://other.example' host = 'https://other.example'

View file

@ -1,25 +0,0 @@
require 'rubygems/test_case'
require 'rubygems/commands/search_command'
class TestGemCommandsSearchCommand < Gem::TestCase
def setup
super
@cmd = Gem::Commands::SearchCommand.new
end
def test_execute
@cmd.handle_options %w[a]
use_ui @ui do
@cmd.execute
end
assert_match %r%REMOTE GEMS%, @ui.output
assert_empty @ui.error
end
end

View file

@ -1,3 +1,5 @@
# coding: UTF-8
require 'rubygems/test_case' require 'rubygems/test_case'
require 'rubygems/commands/setup_command' require 'rubygems/commands/setup_command'
@ -73,5 +75,55 @@ class TestGemCommandsSetupCommand < Gem::TestCase
assert_path_exists os_defaults_rb assert_path_exists os_defaults_rb
end end
def test_show_release_notes
@default_external = nil
capture_io do
@default_external, Encoding.default_external =
Encoding.default_external, Encoding::US_ASCII
end if Object.const_defined? :Encoding
@cmd.options[:previous_version] = Gem::Version.new '2.0.2'
open 'History.txt', 'w' do |io|
io.puts <<-History_txt
# coding: UTF-8
=== #{Gem::VERSION} / 2013-03-26
* Bug fixes:
* Fixed release note display for LANG=C when installing rubygems
* π is tasty
=== 2.0.2 / 2013-03-06
* Bug fixes:
* Other bugs fixed
=== 2.0.1 / 2013-03-05
* Bug fixes:
* Yet more bugs fixed
History_txt
end
use_ui @ui do
@cmd.show_release_notes
end
expected = <<-EXPECTED
=== 2.0.2 / 2013-03-06
* Bug fixes:
* Other bugs fixed
EXPECTED
assert_equal expected, @ui.output
ensure
capture_io do
Encoding.default_external = @default_external
end if @default_external
end
end end

View file

@ -15,6 +15,13 @@ class TestGemGemcutterUtilities < Gem::TestCase
@cmd.extend Gem::GemcutterUtilities @cmd.extend Gem::GemcutterUtilities
end end
def teardown
ENV['RUBYGEMS_HOST'] = nil
Gem.configuration.rubygems_api_key = nil
super
end
def test_alternate_key_alternate_host def test_alternate_key_alternate_host
keys = { keys = {
:rubygems_api_key => 'KEY', :rubygems_api_key => 'KEY',
@ -63,6 +70,22 @@ class TestGemGemcutterUtilities < Gem::TestCase
assert_equal 'OTHER', @cmd.api_key assert_equal 'OTHER', @cmd.api_key
end end
def test_host
assert_equal 'https://rubygems.org', @cmd.host
end
def test_host_RUBYGEMS_HOST
ENV['RUBYGEMS_HOST'] = 'https://other.example'
assert_equal 'https://other.example', @cmd.host
end
def test_host_RUBYGEMS_HOST_empty
ENV['RUBYGEMS_HOST'] = ''
assert_equal 'https://rubygems.org', @cmd.host
end
def test_sign_in def test_sign_in
api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903' api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
util_sign_in [api_key, 200, 'OK'] util_sign_in [api_key, 200, 'OK']

View file

@ -1365,6 +1365,20 @@ gem 'other', version
refute_path_exists @spec.build_info_file refute_path_exists @spec.build_info_file
end end
def test_write_build_info_file_install_dir
installer = Gem::Installer.new @gem, :install_dir => "#{@gemhome}2"
installer.build_args = %w[
--with-libyaml-dir /usr/local/Cellar/libyaml/0.1.4
]
installer.write_build_info_file
refute_path_exists @spec.build_info_file
assert_path_exists \
File.join("#{@gemhome}2", 'build_info', "#{@spec.full_name}.info")
end
def test_write_cache_file def test_write_cache_file
cache_file = File.join @gemhome, 'cache', @spec.file_name cache_file = File.join @gemhome, 'cache', @spec.file_name
gem = File.join @gemhome, @spec.file_name gem = File.join @gemhome, @spec.file_name

View file

@ -511,7 +511,8 @@ class TestGemPackage < Gem::Package::TarTestCase
package.verify package.verify
end end
assert_match ' - nonexistent.gem', e.message assert_match %r%^No such file or directory%, e.message
assert_match %r%nonexistent.gem$%, e.message
end end
def test_verify_security_policy def test_verify_security_policy

View file

@ -132,8 +132,10 @@ class TestGemSpecFetcher < Gem::TestCase
assert_equal 0, specs_and_sources.size assert_equal 0, specs_and_sources.size
assert_equal 1, errors.size assert_equal 1, errors.size
pmm = errors.first
assert_equal "i386-linux", errors[0].platforms.first assert_equal "i386-linux", pmm.platforms.first
assert_equal "Found pl (1), but was for platform i386-linux", pmm.wordy
end end
def test_spec_for_dependency_bad_fetch_spec def test_spec_for_dependency_bad_fetch_spec

View file

@ -434,6 +434,21 @@ dependencies: []
assert_equal expected, Gem::Specification.normalize_yaml_input(input) assert_equal expected, Gem::Specification.normalize_yaml_input(input)
end end
def test_self_outdated
util_clear_gems
util_setup_fake_fetcher true
a4 = quick_gem @a1.name, '4'
util_build_gem a4
util_setup_spec_fetcher @a1, @a2, @a3a, a4
Gem::Specification.remove_spec @a1
Gem::Specification.remove_spec @a2
Gem::Specification.remove_spec a4
assert_equal %w[a], Gem::Specification.outdated
end
DATA_PATH = File.expand_path "../data", __FILE__ DATA_PATH = File.expand_path "../data", __FILE__
def test_handles_private_null_type def test_handles_private_null_type
@ -597,7 +612,16 @@ dependencies: []
assert @a2.activated? assert @a2.activated?
end end
def test_add_dependency_with_explicit_type def test_add_dependency_with_type
gem = quick_spec "awesome", "1.0" do |awesome|
awesome.add_dependency true
awesome.add_dependency :gem_name
end
assert_equal %w[true gem_name], gem.dependencies.map { |dep| dep.name }
end
def test_add_dependency_with_type_explicit
gem = quick_spec "awesome", "1.0" do |awesome| gem = quick_spec "awesome", "1.0" do |awesome|
awesome.add_development_dependency "monkey" awesome.add_development_dependency "monkey"
end end