mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Import rubygems 1.5.0 (release candidate @ 09893d9)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									b511e1bfbe
								
							
						
					
					
						commit
						934f537b45
					
				
					 87 changed files with 570 additions and 331 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,8 @@
 | 
			
		|||
Sat Jan 29 08:43:23 2011  Ryan Davis  <ryand-ruby@zenspider.com>
 | 
			
		||||
 | 
			
		||||
	* lib/rubygems*: Import rubygems 1.5.0 (release candidate @ 09893d9)
 | 
			
		||||
	* test/rubygems: Ditto
 | 
			
		||||
 | 
			
		||||
Sat Jan 29 02:02:37 2011  Yusuke Endoh  <mame@tsg.ne.jp>
 | 
			
		||||
 | 
			
		||||
	* variable.c (rb_mod_const_of, sv_i): Module#constant should exclude
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +37,7 @@ Sat Jan 29 01:19:17 2011  Yusuke Endoh  <mame@tsg.ne.jp>
 | 
			
		|||
	  rb_public_const_get_* and rb_public_const_defined_* are introduced,
 | 
			
		||||
	  which raise an exception when the referring constant is private.
 | 
			
		||||
	  see [ruby-core:32912].
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
	* vm_insnhelper.c (vm_get_ev_const): use rb_public_const_get_* instead
 | 
			
		||||
	  of rb_const_get_* to follow the constant visibility when user code
 | 
			
		||||
	  refers a constant.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,9 @@
 | 
			
		|||
######################################################################
 | 
			
		||||
# This file is imported from the rubygems project.
 | 
			
		||||
# DO NOT make modifications in this repo. They _will_ be reverted!
 | 
			
		||||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
# -*- ruby -*-
 | 
			
		||||
#--
 | 
			
		||||
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
 | 
			
		||||
| 
						 | 
				
			
			@ -5,15 +11,20 @@
 | 
			
		|||
# See LICENSE.txt for permissions.
 | 
			
		||||
#++
 | 
			
		||||
 | 
			
		||||
# TODO: remove when 1.9.1 no longer supported
 | 
			
		||||
QUICKLOADER_SUCKAGE = RUBY_VERSION >= "1.9.1" and RUBY_VERSION < "1.9.2"
 | 
			
		||||
# TODO: remove when 1.9.2 no longer supported
 | 
			
		||||
GEM_PRELUDE_SUCKAGE = RUBY_VERSION >= "1.9.2" and RUBY_VERSION < "1.9.3"
 | 
			
		||||
module Gem
 | 
			
		||||
  QUICKLOADER_SUCKAGE = RUBY_VERSION =~ /^1\.9\.1/
 | 
			
		||||
  GEM_PRELUDE_SUCKAGE = RUBY_VERSION =~ /^1\.9\.2/
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
gem_preluded = GEM_PRELUDE_SUCKAGE and defined? Gem
 | 
			
		||||
if Gem::GEM_PRELUDE_SUCKAGE and defined?(Gem::QuickLoader) then
 | 
			
		||||
  Gem::QuickLoader.remove
 | 
			
		||||
 | 
			
		||||
if GEM_PRELUDE_SUCKAGE and defined?(Gem::QuickLoader) then
 | 
			
		||||
  Gem::QuickLoader.load_full_rubygems_library
 | 
			
		||||
  $LOADED_FEATURES.delete Gem::QuickLoader.path_to_full_rubygems_library
 | 
			
		||||
 | 
			
		||||
  if $LOADED_FEATURES.any? do |path| path.end_with? '/rubygems.rb' end then
 | 
			
		||||
    # TODO path does not exist here
 | 
			
		||||
    raise LoadError, "another rubygems is already loaded from #{path}"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class << Gem
 | 
			
		||||
    remove_method :try_activate if Gem.respond_to?(:try_activate, true)
 | 
			
		||||
| 
						 | 
				
			
			@ -1165,7 +1176,7 @@ end
 | 
			
		|||
 | 
			
		||||
module Kernel
 | 
			
		||||
 | 
			
		||||
  remove_method :gem if respond_to? :gem # defined in gem_prelude.rb on 1.9
 | 
			
		||||
  remove_method :gem if 'method' == defined? gem # from gem_prelude.rb on 1.9
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Use Kernel#gem to activate a specific version of +gem_name+.
 | 
			
		||||
| 
						 | 
				
			
			@ -1217,6 +1228,7 @@ end
 | 
			
		|||
 | 
			
		||||
require 'rubygems/exceptions'
 | 
			
		||||
 | 
			
		||||
gem_preluded = Gem::GEM_PRELUDE_SUCKAGE and defined? Gem
 | 
			
		||||
unless gem_preluded then # TODO: remove guard after 1.9.2 dropped
 | 
			
		||||
  begin
 | 
			
		||||
    ##
 | 
			
		||||
| 
						 | 
				
			
			@ -1240,7 +1252,7 @@ end
 | 
			
		|||
##
 | 
			
		||||
# Enables the require hook for RubyGems.
 | 
			
		||||
 | 
			
		||||
require 'rubygems/custom_require'
 | 
			
		||||
require 'rubygems/custom_require' unless Gem::GEM_PRELUDE_SUCKAGE
 | 
			
		||||
 | 
			
		||||
Gem.clear_paths
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ class Gem::Commands::EnvironmentCommand < Gem::Command
 | 
			
		|||
          gempath         display path used to search for gems
 | 
			
		||||
          version         display the gem format version
 | 
			
		||||
          remotesources   display the remote gem servers
 | 
			
		||||
          platform        display the supporte gem platforms
 | 
			
		||||
          platform        display the supported gem platforms
 | 
			
		||||
          <omitted>       display everything
 | 
			
		||||
    EOF
 | 
			
		||||
    return args.gsub(/^\s+/, '')
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +48,7 @@ Example:
 | 
			
		|||
  install: --no-wrappers
 | 
			
		||||
  update: --no-wrappers
 | 
			
		||||
 | 
			
		||||
RubyGems' default local repository can be overriden with the GEM_PATH and
 | 
			
		||||
RubyGems' default local repository can be overridden with the GEM_PATH and
 | 
			
		||||
GEM_HOME environment variables.  GEM_HOME sets the default repository to
 | 
			
		||||
install into.  GEM_PATH allows multiple local repositories to be searched for
 | 
			
		||||
gems.
 | 
			
		||||
| 
						 | 
				
			
			@ -126,7 +126,7 @@ lib/rubygems/defaults/operating_system.rb
 | 
			
		|||
      end
 | 
			
		||||
 | 
			
		||||
    else
 | 
			
		||||
      raise Gem::CommandLineError, "Unknown enviroment option [#{arg}]"
 | 
			
		||||
      raise Gem::CommandLineError, "Unknown environment option [#{arg}]"
 | 
			
		||||
    end
 | 
			
		||||
    say out
 | 
			
		||||
    true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ class Gem::Dependency
 | 
			
		|||
    @type        = type
 | 
			
		||||
    @prerelease  = false
 | 
			
		||||
 | 
			
		||||
    # This is for Marshal backwards compatability. See the comments in
 | 
			
		||||
    # This is for Marshal backwards compatibility. See the comments in
 | 
			
		||||
    # +requirement+ for the dirty details.
 | 
			
		||||
 | 
			
		||||
    @version_requirements = @requirement
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -84,7 +84,7 @@ class Gem::DependencyInstaller
 | 
			
		|||
  ##
 | 
			
		||||
  # Returns a list of pairs of gemspecs and source_uris that match
 | 
			
		||||
  # Gem::Dependency +dep+ from both local (Dir.pwd) and remote (Gem.sources)
 | 
			
		||||
  # sources.  Gems are sorted with newer gems prefered over older gems, and
 | 
			
		||||
  # sources.  Gems are sorted with newer gems preferred over older gems, and
 | 
			
		||||
  # local gems preferred over remote gems.
 | 
			
		||||
 | 
			
		||||
  def find_gems_with_sources(dep)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -194,7 +194,9 @@ class Gem::DocManager
 | 
			
		|||
    rescue Errno::EACCES => e
 | 
			
		||||
      dirname = File.dirname e.message.split("-")[1].strip
 | 
			
		||||
      raise Gem::FilePermissionError.new(dirname)
 | 
			
		||||
    rescue RuntimeError => ex
 | 
			
		||||
    rescue Interrupt => e
 | 
			
		||||
      raise e
 | 
			
		||||
    rescue Exception => ex
 | 
			
		||||
      alert_error "While generating documentation for #{@spec.full_name}"
 | 
			
		||||
      ui.errs.puts "... MESSAGE:   #{ex}"
 | 
			
		||||
      ui.errs.puts "... RDOC args: #{args.join(' ')}"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ class Gem::Ext::Builder
 | 
			
		|||
 | 
			
		||||
    File.open('Makefile', 'wb') {|f| f.print mf}
 | 
			
		||||
 | 
			
		||||
    # try to find make program from Ruby configue arguments first
 | 
			
		||||
    # try to find make program from Ruby configure arguments first
 | 
			
		||||
    RbConfig::CONFIG['configure_args'] =~ /with-make-prog\=(\w+)/
 | 
			
		||||
    make_program = $1 || ENV['make']
 | 
			
		||||
    unless make_program then
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,8 +25,16 @@ class Gem::Ext::RakeBuilder < Gem::Ext::Builder
 | 
			
		|||
    # Deal with possible spaces in the path, e.g. C:/Program Files
 | 
			
		||||
    dest_path = '"' + dest_path + '"' if dest_path.include?(' ')
 | 
			
		||||
 | 
			
		||||
    cmd = ENV['rake'] || "\"#{Gem.ruby}\" -rubygems #{Gem.bin_path('rake')}" rescue Gem.default_exec_format % 'rake'
 | 
			
		||||
    cmd += " RUBYARCHDIR=#{dest_path} RUBYLIBDIR=#{dest_path}" # ENV is frozen
 | 
			
		||||
    rake = ENV['rake']
 | 
			
		||||
 | 
			
		||||
    rake ||= begin
 | 
			
		||||
               "\"#{Gem.ruby}\" -rubygems #{Gem.bin_path('rake')}"
 | 
			
		||||
             rescue Gem::Exception
 | 
			
		||||
             end
 | 
			
		||||
 | 
			
		||||
    rake ||= Gem.default_exec_format % 'rake'
 | 
			
		||||
 | 
			
		||||
    cmd = "#{rake} RUBYARCHDIR=#{dest_path} RUBYLIBDIR=#{dest_path}" # ENV is frozen
 | 
			
		||||
 | 
			
		||||
    run cmd, results
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,8 +22,6 @@ class Gem::Format
 | 
			
		|||
  attr_accessor :file_entries
 | 
			
		||||
  attr_accessor :gem_path
 | 
			
		||||
 | 
			
		||||
  extend Gem::UserInteraction
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Constructs a Format representing the gem's data which came from +gem_path+
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ class Gem::Indexer
 | 
			
		|||
    require 'tmpdir'
 | 
			
		||||
    require 'zlib'
 | 
			
		||||
 | 
			
		||||
    unless ''.respond_to? :to_xs then
 | 
			
		||||
    unless defined?(Builder::XChar) then
 | 
			
		||||
      raise "Gem::Indexer requires that the XML Builder library be installed:" \
 | 
			
		||||
           "\n\tgem install builder"
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -555,10 +555,18 @@ class Gem::Indexer
 | 
			
		|||
  # Sanitize a single string.
 | 
			
		||||
 | 
			
		||||
  def sanitize_string(string)
 | 
			
		||||
    return string unless string
 | 
			
		||||
 | 
			
		||||
    # HACK the #to_s is in here because RSpec has an Array of Arrays of
 | 
			
		||||
    # Strings for authors.  Need a way to disallow bad values on gempsec
 | 
			
		||||
    # Strings for authors.  Need a way to disallow bad values on gemspec
 | 
			
		||||
    # generation.  (Probably won't happen.)
 | 
			
		||||
    string ? string.to_s.to_xs : string
 | 
			
		||||
    string = string.to_s
 | 
			
		||||
 | 
			
		||||
    begin
 | 
			
		||||
      Builder::XChar.encode string
 | 
			
		||||
    rescue NameError, NoMethodError
 | 
			
		||||
      string.to_xs
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@ require 'rubygems/format'
 | 
			
		|||
require 'rubygems/exceptions'
 | 
			
		||||
require 'rubygems/ext'
 | 
			
		||||
require 'rubygems/require_paths_builder'
 | 
			
		||||
require 'rubygems/user_interaction'
 | 
			
		||||
 | 
			
		||||
##
 | 
			
		||||
# The installer class processes RubyGem .gem files and installs the files
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +45,7 @@ class Gem::Installer
 | 
			
		|||
 | 
			
		||||
  include Gem::UserInteraction
 | 
			
		||||
 | 
			
		||||
  include Gem::RequirePathsBuilder if QUICKLOADER_SUCKAGE
 | 
			
		||||
  include Gem::RequirePathsBuilder if Gem::QUICKLOADER_SUCKAGE
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # The directory a gem's executables will be installed into
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +177,7 @@ class Gem::Installer
 | 
			
		|||
    generate_bin
 | 
			
		||||
    write_spec
 | 
			
		||||
 | 
			
		||||
    write_require_paths_file_if_needed if QUICKLOADER_SUCKAGE
 | 
			
		||||
    write_require_paths_file_if_needed if Gem::QUICKLOADER_SUCKAGE
 | 
			
		||||
 | 
			
		||||
    # HACK remove?  Isn't this done in multiple places?
 | 
			
		||||
    cached_gem = File.join @gem_home, "cache", @gem.split(/\//).pop
 | 
			
		||||
| 
						 | 
				
			
			@ -481,7 +482,6 @@ TEXT
 | 
			
		|||
  def build_extensions
 | 
			
		||||
    return if @spec.extensions.empty?
 | 
			
		||||
    say "Building native extensions.  This could take a while..."
 | 
			
		||||
    start_dir = Dir.pwd
 | 
			
		||||
    dest_path = File.join @gem_dir, @spec.require_paths.first
 | 
			
		||||
    ran_rake = false # only run rake once
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -502,29 +502,37 @@ TEXT
 | 
			
		|||
                  nil
 | 
			
		||||
                end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      extension_dir = begin
 | 
			
		||||
                        File.join @gem_dir, File.dirname(extension)
 | 
			
		||||
                      rescue TypeError # extension == nil
 | 
			
		||||
                        @gem_dir
 | 
			
		||||
                      end
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
      begin
 | 
			
		||||
        Dir.chdir File.join(@gem_dir, File.dirname(extension))
 | 
			
		||||
        results = builder.build(extension, @gem_dir, dest_path, results)
 | 
			
		||||
 | 
			
		||||
        say results.join("\n") if Gem.configuration.really_verbose
 | 
			
		||||
        Dir.chdir extension_dir do
 | 
			
		||||
          results = builder.build(extension, @gem_dir, dest_path, results)
 | 
			
		||||
 | 
			
		||||
          say results.join("\n") if Gem.configuration.really_verbose
 | 
			
		||||
        end
 | 
			
		||||
      rescue
 | 
			
		||||
        results = results.join "\n"
 | 
			
		||||
 | 
			
		||||
        File.open('gem_make.out', 'wb') { |f| f.puts results }
 | 
			
		||||
        gem_make_out = File.join extension_dir, 'gem_make.out'
 | 
			
		||||
 | 
			
		||||
        open gem_make_out, 'wb' do |io| io.puts results end
 | 
			
		||||
 | 
			
		||||
        message = <<-EOF
 | 
			
		||||
ERROR: Failed to build gem native extension.
 | 
			
		||||
 | 
			
		||||
#{results}
 | 
			
		||||
        #{results}
 | 
			
		||||
 | 
			
		||||
Gem files will remain installed in #{@gem_dir} for inspection.
 | 
			
		||||
Results logged to #{File.join(Dir.pwd, 'gem_make.out')}
 | 
			
		||||
        EOF
 | 
			
		||||
Results logged to #{gem_make_out}
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
        raise ExtensionBuildError, message
 | 
			
		||||
      ensure
 | 
			
		||||
        Dir.chdir start_dir
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,28 +4,67 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/installer'
 | 
			
		||||
 | 
			
		||||
class Gem::Installer
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_accessor :gem_dir
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_writer :format
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_writer :gem_home
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_writer :env_shebang
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_writer :ignore_dependencies
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_writer :format_executable
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_writer :security_policy
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_writer :spec
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Available through requiring rubygems/installer_test_case
 | 
			
		||||
 | 
			
		||||
  attr_writer :wrappers
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class GemInstallerTestCase < RubyGemTestCase
 | 
			
		||||
##
 | 
			
		||||
# A test case for Gem::Installer.
 | 
			
		||||
 | 
			
		||||
class Gem::InstallerTestCase < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
 | 
			
		||||
    @spec = quick_gem 'a'
 | 
			
		||||
 | 
			
		||||
    @gem = File.join @tempdir, @spec.file_name
 | 
			
		||||
 | 
			
		||||
    @installer = util_installer @spec, @gem, @gemhome
 | 
			
		||||
| 
						 | 
				
			
			@ -7,7 +7,11 @@
 | 
			
		|||
require 'stringio'
 | 
			
		||||
require 'rubygems/user_interaction'
 | 
			
		||||
 | 
			
		||||
class MockGemUi < Gem::StreamUI
 | 
			
		||||
##
 | 
			
		||||
# This Gem::StreamUI subclass records input and output to StringIO for
 | 
			
		||||
# retrieval during tests.
 | 
			
		||||
 | 
			
		||||
class Gem::MockGemUi < Gem::StreamUI
 | 
			
		||||
  class TermError < RuntimeError; end
 | 
			
		||||
 | 
			
		||||
  module TTY
 | 
			
		||||
| 
						 | 
				
			
			@ -4,10 +4,13 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/package'
 | 
			
		||||
 | 
			
		||||
class TarTestCase < RubyGemTestCase
 | 
			
		||||
##
 | 
			
		||||
# A test case for Gem::Package::Tar* classes
 | 
			
		||||
 | 
			
		||||
class Gem::Package::TarTestCase < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def ASCIIZ(str, length)
 | 
			
		||||
    str + "\0" * (length - str.length)
 | 
			
		||||
| 
						 | 
				
			
			@ -20,5 +20,5 @@ module Gem::RequirePathsBuilder
 | 
			
		|||
      file.puts spec.bindir if spec.bindir
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end if QUICKLOADER_SUCKAGE
 | 
			
		||||
end if Gem::QUICKLOADER_SUCKAGE
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -336,7 +336,7 @@ class Gem::Specification
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # List of depedencies that will automatically be activated at runtime.
 | 
			
		||||
  # List of dependencies that will automatically be activated at runtime.
 | 
			
		||||
 | 
			
		||||
  def runtime_dependencies
 | 
			
		||||
    dependencies.select { |d| d.type == :runtime || d.type == nil }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,15 +6,19 @@
 | 
			
		|||
 | 
			
		||||
at_exit { $SAFE = 1 }
 | 
			
		||||
 | 
			
		||||
# $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
 | 
			
		||||
 | 
			
		||||
if defined? Gem::QuickLoader
 | 
			
		||||
  Gem::QuickLoader.load_full_rubygems_library
 | 
			
		||||
else
 | 
			
		||||
  require 'rubygems'
 | 
			
		||||
end
 | 
			
		||||
require 'fileutils'
 | 
			
		||||
 | 
			
		||||
begin
 | 
			
		||||
  gem 'minitest'
 | 
			
		||||
rescue Gem::LoadError
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
require 'minitest/autorun'
 | 
			
		||||
require 'fileutils'
 | 
			
		||||
require 'tmpdir'
 | 
			
		||||
require 'uri'
 | 
			
		||||
require 'rubygems/package'
 | 
			
		||||
| 
						 | 
				
			
			@ -35,44 +39,84 @@ end
 | 
			
		|||
 | 
			
		||||
require 'rdoc/rdoc'
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/mockgemui"
 | 
			
		||||
require 'rubygems/mock_gem_ui'
 | 
			
		||||
 | 
			
		||||
module Gem
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Allows setting the gem path searcher.  This method is available when
 | 
			
		||||
  # requiring 'rubygems/test_case'
 | 
			
		||||
 | 
			
		||||
  def self.searcher=(searcher)
 | 
			
		||||
    @searcher = searcher
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Allows setting the default SourceIndex.  This method is available when
 | 
			
		||||
  # requiring 'rubygems/test_case'
 | 
			
		||||
 | 
			
		||||
  def self.source_index=(si)
 | 
			
		||||
    @@source_index = si
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Allows toggling Windows behavior.  This method is available when requiring
 | 
			
		||||
  # 'rubygems/test_case'
 | 
			
		||||
 | 
			
		||||
  def self.win_platform=(val)
 | 
			
		||||
    @@win_platform = val
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Allows setting path to ruby.  This method is available when requiring
 | 
			
		||||
  # 'rubygems/test_case'
 | 
			
		||||
 | 
			
		||||
  def self.ruby= ruby
 | 
			
		||||
    @ruby = ruby
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # When rubygems/test_case is required the default user interaction is a
 | 
			
		||||
  # MockGemUi.
 | 
			
		||||
 | 
			
		||||
  module DefaultUserInteraction
 | 
			
		||||
    @ui = MockGemUi.new
 | 
			
		||||
    @ui = Gem::MockGemUi.new
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		||||
##
 | 
			
		||||
# RubyGemTestCase provides a variety of methods for testing rubygems and
 | 
			
		||||
# gem-related behavior in a sandbox.  Through RubyGemTestCase you can install
 | 
			
		||||
# and uninstall gems, fetch remote gems through a stub fetcher and be assured
 | 
			
		||||
# your normal set of gems is not affected.
 | 
			
		||||
#
 | 
			
		||||
# Tests are always run at a safe level of 1.
 | 
			
		||||
 | 
			
		||||
class Gem::TestCase < MiniTest::Unit::TestCase
 | 
			
		||||
 | 
			
		||||
  include Gem::DefaultUserInteraction
 | 
			
		||||
 | 
			
		||||
  undef_method :default_test if instance_methods.include? 'default_test' or
 | 
			
		||||
                                instance_methods.include? :default_test
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # #setup prepares a sandboxed location to install gems.  All installs are
 | 
			
		||||
  # directed to a temporary directory.  All install plugins are removed.
 | 
			
		||||
  #
 | 
			
		||||
  # If the +RUBY+ environment variable is set the given path is used for
 | 
			
		||||
  # Gem::ruby.  The local platform is set to <tt>i386-mswin32</tt> for Windows
 | 
			
		||||
  # or <tt>i686-darwin8.10.1</tt> otherwise.
 | 
			
		||||
  #
 | 
			
		||||
  # If the +KEEP_FILES+ environment variable is set the files will not be
 | 
			
		||||
  # removed from <tt>/tmp/test_rubygems_#{$$}.#{Time.now.to_i}</tt>.
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
 | 
			
		||||
    @orig_gem_home  = ENV['GEM_HOME']
 | 
			
		||||
    @orig_gem_path  = ENV['GEM_PATH']
 | 
			
		||||
    @orig_gem_home = ENV['GEM_HOME']
 | 
			
		||||
    @orig_gem_path = ENV['GEM_PATH']
 | 
			
		||||
 | 
			
		||||
    @ui = MockGemUi.new
 | 
			
		||||
    @ui = Gem::MockGemUi.new
 | 
			
		||||
    tmpdir = nil
 | 
			
		||||
    Dir.chdir Dir.tmpdir do tmpdir = Dir.pwd end # HACK OSX /private/tmp
 | 
			
		||||
    if ENV['KEEP_FILES'] then
 | 
			
		||||
| 
						 | 
				
			
			@ -125,10 +169,10 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
 | 
			
		||||
    @marshal_version = "#{Marshal::MAJOR_VERSION}.#{Marshal::MINOR_VERSION}"
 | 
			
		||||
 | 
			
		||||
    @private_key = File.expand_path File.join(File.dirname(__FILE__),
 | 
			
		||||
                                              'private_key.pem')
 | 
			
		||||
    @public_cert = File.expand_path File.join(File.dirname(__FILE__),
 | 
			
		||||
                                              'public_cert.pem')
 | 
			
		||||
    @private_key = File.expand_path('../../../test/rubygems/private_key.pem',
 | 
			
		||||
                                    __FILE__)
 | 
			
		||||
    @public_cert = File.expand_path('../../../test/rubygems/public_cert.pem',
 | 
			
		||||
                                    __FILE__)
 | 
			
		||||
 | 
			
		||||
    Gem.post_build_hooks.clear
 | 
			
		||||
    Gem.post_install_hooks.clear
 | 
			
		||||
| 
						 | 
				
			
			@ -161,6 +205,10 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
    @orig_LOAD_PATH = $LOAD_PATH.dup
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # #teardown restores the process to its original state and removes the
 | 
			
		||||
  # tempdir unless the +KEEP_FILES+ environment variable was set.
 | 
			
		||||
 | 
			
		||||
  def teardown
 | 
			
		||||
    $LOAD_PATH.replace @orig_LOAD_PATH
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -188,27 +236,36 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def install_gem gem
 | 
			
		||||
  ##
 | 
			
		||||
  # Builds and installs the Gem::Specification +spec+
 | 
			
		||||
 | 
			
		||||
  def install_gem spec
 | 
			
		||||
    require 'rubygems/installer'
 | 
			
		||||
 | 
			
		||||
    use_ui MockGemUi.new do
 | 
			
		||||
    use_ui Gem::MockGemUi.new do
 | 
			
		||||
      Dir.chdir @tempdir do
 | 
			
		||||
        Gem::Builder.new(gem).build
 | 
			
		||||
        Gem::Builder.new(spec).build
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    gem = File.join(@tempdir, gem.file_name).untaint
 | 
			
		||||
    gem = File.join(@tempdir, spec.file_name).untaint
 | 
			
		||||
 | 
			
		||||
    Gem::Installer.new(gem, :wrappers => true).install
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def uninstall_gem gem
 | 
			
		||||
  ##
 | 
			
		||||
  # Uninstalls the Gem::Specification +spec+
 | 
			
		||||
  def uninstall_gem spec
 | 
			
		||||
    require 'rubygems/uninstaller'
 | 
			
		||||
 | 
			
		||||
    uninstaller = Gem::Uninstaller.new gem.name, :executables => true,
 | 
			
		||||
    uninstaller = Gem::Uninstaller.new spec.name, :executables => true,
 | 
			
		||||
                 :user_install => true
 | 
			
		||||
    uninstaller.uninstall
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Enables pretty-print for all tests
 | 
			
		||||
 | 
			
		||||
  def mu_pp(obj)
 | 
			
		||||
    s = ''
 | 
			
		||||
    s = PP.pp obj, s
 | 
			
		||||
| 
						 | 
				
			
			@ -216,33 +273,8 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
    s.chomp
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def prep_cache_files(lc)
 | 
			
		||||
    @usr_si ||= Gem::SourceIndex.new
 | 
			
		||||
    @usr_sice ||= Gem::SourceInfoCacheEntry.new @usr_si, 0
 | 
			
		||||
 | 
			
		||||
    @sys_si ||= Gem::SourceIndex.new
 | 
			
		||||
    @sys_sice ||= Gem::SourceInfoCacheEntry.new @sys_si, 0
 | 
			
		||||
 | 
			
		||||
    latest_si = Gem::SourceIndex.new
 | 
			
		||||
    latest_si.add_specs(*@sys_si.latest_specs)
 | 
			
		||||
    latest_sys_sice = Gem::SourceInfoCacheEntry.new latest_si, 0
 | 
			
		||||
 | 
			
		||||
    latest_si = Gem::SourceIndex.new
 | 
			
		||||
    latest_si.add_specs(*@usr_si.latest_specs)
 | 
			
		||||
    latest_usr_sice = Gem::SourceInfoCacheEntry.new latest_si, 0
 | 
			
		||||
 | 
			
		||||
    [ [lc.system_cache_file, @sys_sice],
 | 
			
		||||
      [lc.latest_system_cache_file, latest_sys_sice],
 | 
			
		||||
      [lc.user_cache_file, @usr_sice],
 | 
			
		||||
      [lc.latest_user_cache_file, latest_usr_sice],
 | 
			
		||||
    ].each do |filename, data|
 | 
			
		||||
      FileUtils.mkdir_p File.dirname(filename).untaint
 | 
			
		||||
 | 
			
		||||
      open filename.dup.untaint, 'wb' do |f|
 | 
			
		||||
        f.write Marshal.dump({ @gem_repo => data })
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  ##
 | 
			
		||||
  # Reads a Marshal file at +path+
 | 
			
		||||
 | 
			
		||||
  def read_cache(path)
 | 
			
		||||
    open path.dup.untaint, 'rb' do |io|
 | 
			
		||||
| 
						 | 
				
			
			@ -250,28 +282,45 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Reads a binary file at +path+
 | 
			
		||||
 | 
			
		||||
  def read_binary(path)
 | 
			
		||||
    Gem.read_binary path
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Writes a binary file to +path+ which is relative to +@gemhome+
 | 
			
		||||
 | 
			
		||||
  def write_file(path)
 | 
			
		||||
    path = File.join(@gemhome, path)
 | 
			
		||||
    path = File.join @gemhome, path
 | 
			
		||||
    dir = File.dirname path
 | 
			
		||||
    FileUtils.mkdir_p dir
 | 
			
		||||
 | 
			
		||||
    open path, 'wb' do |io|
 | 
			
		||||
      yield io
 | 
			
		||||
      yield io if block_given?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    path
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def quick_gem(gemname, version='2')
 | 
			
		||||
  ##
 | 
			
		||||
  # Creates a Gem::Specification with a minimum of extra work.  +name+ and
 | 
			
		||||
  # +version+ are the gem's name and version,  platform, author, email,
 | 
			
		||||
  # homepage, summary and description are defaulted.  The specification is
 | 
			
		||||
  # yielded for customization.
 | 
			
		||||
  #
 | 
			
		||||
  # The gem is added to the installed gems in +@gemhome+ and to the current
 | 
			
		||||
  # source_index.
 | 
			
		||||
  #
 | 
			
		||||
  # Use this with #write_file to build an installed gem.
 | 
			
		||||
 | 
			
		||||
  def quick_gem(name, version='2')
 | 
			
		||||
    require 'rubygems/specification'
 | 
			
		||||
 | 
			
		||||
    spec = Gem::Specification.new do |s|
 | 
			
		||||
      s.platform = Gem::Platform::RUBY
 | 
			
		||||
      s.name = gemname
 | 
			
		||||
      s.name = name
 | 
			
		||||
      s.version = version
 | 
			
		||||
      s.author = 'A User'
 | 
			
		||||
      s.email = 'example@example.com'
 | 
			
		||||
| 
						 | 
				
			
			@ -295,6 +344,10 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
    return spec
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Builds a gem from +spec+ and places it in <tt>File.join @gemhome,
 | 
			
		||||
  # 'cache'</tt>.  Automatically creates files based on +spec.files+
 | 
			
		||||
 | 
			
		||||
  def util_build_gem(spec)
 | 
			
		||||
    dir = File.join(@gemhome, 'gems', spec.full_name)
 | 
			
		||||
    FileUtils.mkdir_p dir
 | 
			
		||||
| 
						 | 
				
			
			@ -306,7 +359,7 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
        File.open file, 'w' do |fp| fp.puts "# #{file}" end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      use_ui MockGemUi.new do
 | 
			
		||||
      use_ui Gem::MockGemUi.new do
 | 
			
		||||
        Gem::Builder.new(spec).build
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -315,14 +368,23 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Removes all installed gems from +@gemhome+.
 | 
			
		||||
 | 
			
		||||
  def util_clear_gems
 | 
			
		||||
    FileUtils.rm_r File.join(@gemhome, 'gems')
 | 
			
		||||
    FileUtils.rm_r File.join(@gemhome, 'specifications')
 | 
			
		||||
    Gem.source_index.refresh!
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Creates a gem with +name+, +version+ and +deps+.  The specification will
 | 
			
		||||
  # be yielded before gem creation for customization.  The gem will be placed
 | 
			
		||||
  # in <tt>File.join @tempdir, 'gems'</tt>.  The specification and .gem file
 | 
			
		||||
  # location are returned.
 | 
			
		||||
 | 
			
		||||
  def util_gem(name, version, deps = nil, &block)
 | 
			
		||||
    if deps then # fuck you eric
 | 
			
		||||
    if deps then
 | 
			
		||||
      block = proc do |s|
 | 
			
		||||
        deps.each do |n, req|
 | 
			
		||||
          s.add_dependency n, (req || '>= 0')
 | 
			
		||||
| 
						 | 
				
			
			@ -345,6 +407,9 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
    [spec, cache_file]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Gzips +data+.
 | 
			
		||||
 | 
			
		||||
  def util_gzip(data)
 | 
			
		||||
    out = StringIO.new
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -355,6 +420,23 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
 | 
			
		|||
    out.string
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Creates several default gems which all have a lib/code.rb file.  The gems
 | 
			
		||||
  # are not installed but are available in the cache dir.
 | 
			
		||||
  #
 | 
			
		||||
  # +@a1+:: gem a version 1, this is the best-described gem.
 | 
			
		||||
  # +@a2+:: gem a version 2
 | 
			
		||||
  # +@a3a:: gem a version 3.a
 | 
			
		||||
  # +@a_evil9+:: gem a_evil version 9, use this to ensure similarly-named gems
 | 
			
		||||
  #              don't collide with a.
 | 
			
		||||
  # +@b2+:: gem b version 2
 | 
			
		||||
  # +@c1_2+:: gem c version 1.2
 | 
			
		||||
  # +@pl1+:: gem pl version 1, this gem has a legacy platform of i386-linux.
 | 
			
		||||
  #
 | 
			
		||||
  # Additional +prerelease+ gems may also be created:
 | 
			
		||||
  #
 | 
			
		||||
  # +@a2_pre+:: gem a version 2.a
 | 
			
		||||
 | 
			
		||||
  def util_make_gems(prerelease = false)
 | 
			
		||||
    @a1 = quick_gem 'a', '1' do |s|
 | 
			
		||||
      s.files = %w[lib/code.rb]
 | 
			
		||||
| 
						 | 
				
			
			@ -391,17 +473,16 @@ Also, a list:
 | 
			
		|||
 | 
			
		||||
    if prerelease
 | 
			
		||||
      @a2_pre = quick_gem('a', '2.a', &init)
 | 
			
		||||
      write_file File.join(*%W[gems #{@a2_pre.original_name} lib code.rb]) do
 | 
			
		||||
      end
 | 
			
		||||
      write_file File.join(*%W[gems #{@a2_pre.original_name} lib code.rb])
 | 
			
		||||
      util_build_gem @a2_pre
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    write_file File.join(*%W[gems #{@a1.original_name} lib code.rb]) do end
 | 
			
		||||
    write_file File.join(*%W[gems #{@a2.original_name} lib code.rb]) do end
 | 
			
		||||
    write_file File.join(*%W[gems #{@a3a.original_name} lib code.rb]) do end
 | 
			
		||||
    write_file File.join(*%W[gems #{@b2.original_name} lib code.rb]) do end
 | 
			
		||||
    write_file File.join(*%W[gems #{@c1_2.original_name} lib code.rb]) do end
 | 
			
		||||
    write_file File.join(*%W[gems #{@pl1.original_name} lib code.rb]) do end
 | 
			
		||||
    write_file File.join(*%W[gems #{@a1.original_name} lib code.rb])
 | 
			
		||||
    write_file File.join(*%W[gems #{@a2.original_name} lib code.rb])
 | 
			
		||||
    write_file File.join(*%W[gems #{@a3a.original_name} lib code.rb])
 | 
			
		||||
    write_file File.join(*%W[gems #{@b2.original_name} lib code.rb])
 | 
			
		||||
    write_file File.join(*%W[gems #{@c1_2.original_name} lib code.rb])
 | 
			
		||||
    write_file File.join(*%W[gems #{@pl1.original_name} lib code.rb])
 | 
			
		||||
 | 
			
		||||
    [@a1, @a2, @a3a, @a_evil9, @b2, @c1_2, @pl1].each do |spec|
 | 
			
		||||
      util_build_gem spec
 | 
			
		||||
| 
						 | 
				
			
			@ -425,6 +506,12 @@ Also, a list:
 | 
			
		|||
    platform
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Sets up a fake fetcher using the gems from #util_make_gems.  Optionally
 | 
			
		||||
  # additional +prerelease+ gems may be included.
 | 
			
		||||
  #
 | 
			
		||||
  # Gems created by this method may be fetched using Gem::RemoteFetcher.
 | 
			
		||||
 | 
			
		||||
  def util_setup_fake_fetcher(prerelease = false)
 | 
			
		||||
    require 'zlib'
 | 
			
		||||
    require 'socket'
 | 
			
		||||
| 
						 | 
				
			
			@ -451,6 +538,10 @@ Also, a list:
 | 
			
		|||
    Gem::RemoteFetcher.fetcher = @fetcher
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Sets up Gem::SpecFetcher to return information from the gems in +specs+.
 | 
			
		||||
  # Best used with +@all_gems+ from #util_setup_fake_fetcher.
 | 
			
		||||
 | 
			
		||||
  def util_setup_spec_fetcher(*specs)
 | 
			
		||||
    specs = Hash[*specs.map { |spec| [spec.full_name, spec] }.flatten]
 | 
			
		||||
    si = Gem::SourceIndex.new specs
 | 
			
		||||
| 
						 | 
				
			
			@ -485,65 +576,87 @@ Also, a list:
 | 
			
		|||
    si
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Deflates +data+
 | 
			
		||||
 | 
			
		||||
  def util_zip(data)
 | 
			
		||||
    Zlib::Deflate.deflate data
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Is this test being run on a Windows platform?
 | 
			
		||||
 | 
			
		||||
  def self.win_platform?
 | 
			
		||||
    Gem.win_platform?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Is this test being run on a Windows platform?
 | 
			
		||||
 | 
			
		||||
  def win_platform?
 | 
			
		||||
    Gem.win_platform?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Returns whether or not we're on a version of Ruby built with VC++ (or
 | 
			
		||||
  # Borland) versus Cygwin, Mingw, etc.
 | 
			
		||||
  #
 | 
			
		||||
 | 
			
		||||
  def self.vc_windows?
 | 
			
		||||
    RUBY_PLATFORM.match('mswin')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Returns whether or not we're on a version of Ruby built with VC++ (or
 | 
			
		||||
  # Borland) versus Cygwin, Mingw, etc.
 | 
			
		||||
  #
 | 
			
		||||
 | 
			
		||||
  def vc_windows?
 | 
			
		||||
    RUBY_PLATFORM.match('mswin')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Returns the make command for the current platform. For versions of Ruby
 | 
			
		||||
  # built on MS Windows with VC++ or Borland it will return 'nmake'. On all
 | 
			
		||||
  # other platforms, including Cygwin, it will return 'make'.
 | 
			
		||||
  #
 | 
			
		||||
 | 
			
		||||
  def self.make_command
 | 
			
		||||
    ENV["make"] || (vc_windows? ? 'nmake' : 'make')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Returns the make command for the current platform. For versions of Ruby
 | 
			
		||||
  # built on MS Windows with VC++ or Borland it will return 'nmake'. On all
 | 
			
		||||
  # other platforms, including Cygwin, it will return 'make'.
 | 
			
		||||
  #
 | 
			
		||||
 | 
			
		||||
  def make_command
 | 
			
		||||
    ENV["make"] || (vc_windows? ? 'nmake' : 'make')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Returns whether or not the nmake command could be found.
 | 
			
		||||
  #
 | 
			
		||||
 | 
			
		||||
  def nmake_found?
 | 
			
		||||
    system('nmake /? 1>NUL 2>&1')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # NOTE Allow tests to use a random (but controlled) port number instead of
 | 
			
		||||
  ##
 | 
			
		||||
  # Allows tests to use a random (but controlled) port number instead of
 | 
			
		||||
  # a hardcoded one. This helps CI tools when running parallels builds on
 | 
			
		||||
  # the same builder slave.
 | 
			
		||||
 | 
			
		||||
  def self.process_based_port
 | 
			
		||||
    @@process_based_port ||= 8000 + $$ % 1000
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # See ::process_based_port
 | 
			
		||||
 | 
			
		||||
  def process_based_port
 | 
			
		||||
    self.class.process_based_port
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Allows the proper version of +rake+ to be used for the test.
 | 
			
		||||
 | 
			
		||||
  def build_rake_in
 | 
			
		||||
    gem_ruby = Gem.ruby
 | 
			
		||||
    Gem.ruby = @@ruby
 | 
			
		||||
| 
						 | 
				
			
			@ -559,6 +672,9 @@ Also, a list:
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Finds the path to the ruby executable
 | 
			
		||||
 | 
			
		||||
  def self.rubybin
 | 
			
		||||
    ruby = ENV["RUBY"]
 | 
			
		||||
    return ruby if ruby
 | 
			
		||||
| 
						 | 
				
			
			@ -604,7 +720,7 @@ Also, a list:
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Construct a new Gem::Requirement.
 | 
			
		||||
  # Constructs a new Gem::Requirement.
 | 
			
		||||
 | 
			
		||||
  def req *requirements
 | 
			
		||||
    return requirements.first if Gem::Requirement === requirements.first
 | 
			
		||||
| 
						 | 
				
			
			@ -612,7 +728,7 @@ Also, a list:
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Construct a new Gem::Specification.
 | 
			
		||||
  # Constructs a new Gem::Specification.
 | 
			
		||||
 | 
			
		||||
  def spec name, version, &block
 | 
			
		||||
    Gem::Specification.new name, v(version), &block
 | 
			
		||||
| 
						 | 
				
			
			@ -127,43 +127,42 @@ class Gem::Uninstaller
 | 
			
		|||
  # +gemspec+.
 | 
			
		||||
 | 
			
		||||
  def remove_executables(spec)
 | 
			
		||||
    return if spec.nil?
 | 
			
		||||
    return if spec.nil? or spec.executables.empty?
 | 
			
		||||
 | 
			
		||||
    unless spec.executables.empty? then
 | 
			
		||||
      bindir = @bin_dir ? @bin_dir : Gem.bindir(spec.installation_path)
 | 
			
		||||
    bindir = @bin_dir ? @bin_dir : Gem.bindir(spec.installation_path)
 | 
			
		||||
 | 
			
		||||
      list = @source_index.find_name(spec.name).delete_if { |s|
 | 
			
		||||
        s.version == spec.version
 | 
			
		||||
      }
 | 
			
		||||
    list = @source_index.find_name(spec.name).delete_if { |s|
 | 
			
		||||
      s.version == spec.version
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
      executables = spec.executables.clone
 | 
			
		||||
    executables = spec.executables.clone
 | 
			
		||||
 | 
			
		||||
      list.each do |s|
 | 
			
		||||
        s.executables.each do |exe_name|
 | 
			
		||||
          executables.delete exe_name
 | 
			
		||||
        end
 | 
			
		||||
    list.each do |s|
 | 
			
		||||
      s.executables.each do |exe_name|
 | 
			
		||||
        executables.delete exe_name
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
      return if executables.empty?
 | 
			
		||||
    return if executables.empty?
 | 
			
		||||
 | 
			
		||||
      answer = if @force_executables.nil? then
 | 
			
		||||
                 ask_yes_no("Remove executables:\n" \
 | 
			
		||||
                            "\t#{spec.executables.join(", ")}\n\nin addition to the gem?",
 | 
			
		||||
                            true) # " # appease ruby-mode - don't ask
 | 
			
		||||
               else
 | 
			
		||||
                 @force_executables
 | 
			
		||||
               end
 | 
			
		||||
    remove = if @force_executables.nil? then
 | 
			
		||||
               ask_yes_no("Remove executables:\n" \
 | 
			
		||||
                          "\t#{spec.executables.join ', '}\n\n" \
 | 
			
		||||
                          "in addition to the gem?",
 | 
			
		||||
                          true)
 | 
			
		||||
             else
 | 
			
		||||
               @force_executables
 | 
			
		||||
             end
 | 
			
		||||
 | 
			
		||||
      unless answer then
 | 
			
		||||
        say "Executables and scripts will remain installed."
 | 
			
		||||
      else
 | 
			
		||||
        raise Gem::FilePermissionError, bindir unless File.writable? bindir
 | 
			
		||||
    unless remove then
 | 
			
		||||
      say "Executables and scripts will remain installed."
 | 
			
		||||
    else
 | 
			
		||||
      raise Gem::FilePermissionError, bindir unless File.writable? bindir
 | 
			
		||||
 | 
			
		||||
        spec.executables.each do |exe_name|
 | 
			
		||||
          say "Removing #{exe_name}"
 | 
			
		||||
          FileUtils.rm_f File.join(bindir, exe_name)
 | 
			
		||||
          FileUtils.rm_f File.join(bindir, "#{exe_name}.bat")
 | 
			
		||||
        end
 | 
			
		||||
      spec.executables.each do |exe_name|
 | 
			
		||||
        say "Removing #{exe_name}"
 | 
			
		||||
        FileUtils.rm_f File.join(bindir, exe_name)
 | 
			
		||||
        FileUtils.rm_f File.join(bindir, "#{exe_name}.bat")
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ module Gem::DefaultUserInteraction
 | 
			
		|||
end
 | 
			
		||||
 | 
			
		||||
##
 | 
			
		||||
# Make the default UI accessable without the "ui." prefix.  Classes
 | 
			
		||||
# Make the default UI accessible without the "ui." prefix.  Classes
 | 
			
		||||
# including this module may use the interaction methods on the default UI
 | 
			
		||||
# directly.  Classes may also reference the ui and ui= methods.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -224,7 +224,7 @@ class Gem::StreamUI
 | 
			
		|||
    result
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  if RUBY_VERSION >= "1.9" then
 | 
			
		||||
  if RUBY_VERSION > '1.9.2' then
 | 
			
		||||
    ##
 | 
			
		||||
    # Ask for a password. Does not echo response to terminal.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -477,12 +477,20 @@ class Gem::StreamUI
 | 
			
		|||
    end
 | 
			
		||||
 | 
			
		||||
    def fetch(file_name, total_bytes)
 | 
			
		||||
      @file_name, @total_bytes = file_name, total_bytes
 | 
			
		||||
      @file_name = file_name
 | 
			
		||||
      @total_bytes = total_bytes.to_i
 | 
			
		||||
      @units = @total_bytes.zero? ? 'B' : '%'
 | 
			
		||||
 | 
			
		||||
      update_display(false)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def update(bytes)
 | 
			
		||||
      new_progress = ((bytes.to_f * 100) / total_bytes.to_f).ceil
 | 
			
		||||
      new_progress = if @units == 'B' then
 | 
			
		||||
                       bytes
 | 
			
		||||
                     else
 | 
			
		||||
                       ((bytes.to_f * 100) / total_bytes.to_f).ceil
 | 
			
		||||
                     end
 | 
			
		||||
 | 
			
		||||
      return if new_progress == @progress
 | 
			
		||||
 | 
			
		||||
      @progress = new_progress
 | 
			
		||||
| 
						 | 
				
			
			@ -490,7 +498,7 @@ class Gem::StreamUI
 | 
			
		|||
    end
 | 
			
		||||
 | 
			
		||||
    def done
 | 
			
		||||
      @progress = 100
 | 
			
		||||
      @progress = 100 if @units == '%'
 | 
			
		||||
      update_display(true, true)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -498,8 +506,9 @@ class Gem::StreamUI
 | 
			
		|||
 | 
			
		||||
    def update_display(show_progress = true, new_line = false)
 | 
			
		||||
      return unless @out.tty?
 | 
			
		||||
      if show_progress
 | 
			
		||||
        @out.print "\rFetching: %s (%3d%%)" % [@file_name, @progress]
 | 
			
		||||
 | 
			
		||||
      if show_progress then
 | 
			
		||||
        @out.print "\rFetching: %s (%3d%s)" % [@file_name, @progress, @units]
 | 
			
		||||
      else
 | 
			
		||||
        @out.print "Fetching: %s" % @file_name
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@
 | 
			
		|||
######################################################################
 | 
			
		||||
 | 
			
		||||
SIMPLE_GEM = <<-GEMDATA
 | 
			
		||||
        MD5SUM = "b12a4d48febeb2289c539c2574c4b6f8"
 | 
			
		||||
        MD5SUM = "989bf34a1cbecd52e0ea66b662b3a405"
 | 
			
		||||
        if $0 == __FILE__
 | 
			
		||||
          require 'optparse'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ SIMPLE_GEM = <<-GEMDATA
 | 
			
		|||
          ARGV.options do |opts|
 | 
			
		||||
            opts.on_tail("--help", "show this message") {puts opts; exit}
 | 
			
		||||
            opts.on('--dir=DIRNAME', "Installation directory for the Gem") {|options[:directory]|}
 | 
			
		||||
            opts.on('--force', "Force Gem to intall, bypassing dependency checks") {|options[:force]|}
 | 
			
		||||
            opts.on('--force', "Force Gem to install, bypassing dependency checks") {|options[:force]|}
 | 
			
		||||
            opts.on('--gen-rdoc', "Generate RDoc documentation for the Gem") {|options[:gen_rdoc]|}
 | 
			
		||||
            opts.parse!
 | 
			
		||||
          end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems'
 | 
			
		||||
 | 
			
		||||
class TestConfig < RubyGemTestCase
 | 
			
		||||
class TestConfig < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_datadir
 | 
			
		||||
    _, err = capture_io do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,14 +4,14 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems'
 | 
			
		||||
require 'rubygems/gem_openssl'
 | 
			
		||||
require 'rubygems/installer'
 | 
			
		||||
require 'pathname'
 | 
			
		||||
require 'tmpdir'
 | 
			
		||||
 | 
			
		||||
class TestGem < RubyGemTestCase
 | 
			
		||||
class TestGem < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/builder'
 | 
			
		||||
 | 
			
		||||
class TestGemBuilder < RubyGemTestCase
 | 
			
		||||
class TestGemBuilder < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_build
 | 
			
		||||
    builder = Gem::Builder.new quick_gem('a')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,14 +4,14 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/command'
 | 
			
		||||
 | 
			
		||||
class Gem::Command
 | 
			
		||||
  public :parser
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class TestGemCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -93,7 +93,7 @@ class TestGemCommand < RubyGemTestCase
 | 
			
		|||
    assert done
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_invode_with_bad_options
 | 
			
		||||
  def test_invoke_with_bad_options
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      @cmd.when_invoked do true end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/command_manager'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandManager < RubyGemTestCase
 | 
			
		||||
class TestGemCommandManager < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ class TestGemCommandManager < RubyGemTestCase
 | 
			
		|||
    Gem.load_env_plugins
 | 
			
		||||
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      assert_raises MockGemUi::TermError do
 | 
			
		||||
      assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
        @command_manager.run 'interrupt'
 | 
			
		||||
      end
 | 
			
		||||
      assert_equal '', ui.output
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ class TestGemCommandManager < RubyGemTestCase
 | 
			
		|||
 | 
			
		||||
    @command_manager.register_command :crash
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      assert_raises MockGemUi::TermError do
 | 
			
		||||
      assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
        @command_manager.run 'crash'
 | 
			
		||||
      end
 | 
			
		||||
      assert_equal '', ui.output
 | 
			
		||||
| 
						 | 
				
			
			@ -50,9 +50,9 @@ class TestGemCommandManager < RubyGemTestCase
 | 
			
		|||
 | 
			
		||||
  def test_process_args_bad_arg
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      assert_raises(MockGemUi::TermError) {
 | 
			
		||||
      assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
        @command_manager.process_args("--bad-arg")
 | 
			
		||||
      }
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    assert_match(/invalid option: --bad-arg/i, @ui.error)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/build_command'
 | 
			
		||||
require 'rubygems/format'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsBuildCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsBuildCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,14 +4,14 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/cert_command'
 | 
			
		||||
 | 
			
		||||
unless defined? OpenSSL then
 | 
			
		||||
  warn "`gem cert` tests are being skipped, module OpenSSL not found"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsCertCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsCertCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/check_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsCheckCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsCheckCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/contents_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsContentsCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsContentsCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +54,7 @@ class TestGemCommandsContentsCommand < RubyGemTestCase
 | 
			
		|||
  def test_execute_bad_gem
 | 
			
		||||
    @cmd.options[:args] = %w[foo]
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @cmd.execute
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/dependency_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsDependencyCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsDependencyCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ Gem pl-1-x86-linux
 | 
			
		|||
  def test_execute_no_match
 | 
			
		||||
    @cmd.options[:args] = %w[foo]
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @cmd.execute
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			@ -161,7 +161,7 @@ Gem foo-2
 | 
			
		|||
    @cmd.options[:reverse_dependencies] = true
 | 
			
		||||
    @cmd.options[:domain] = :remote
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @cmd.execute
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/environment_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsEnvironmentCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsEnvironmentCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,12 +4,12 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/package'
 | 
			
		||||
require 'rubygems/security'
 | 
			
		||||
require 'rubygems/commands/fetch_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsFetchCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsFetchCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/indexer'
 | 
			
		||||
require 'rubygems/commands/generate_index_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsGenerateIndexCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsGenerateIndexCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ class TestGemCommandsGenerateIndexCommand < RubyGemTestCase
 | 
			
		|||
    @cmd.options[:rss_gems_host] = 'gems.example.com'
 | 
			
		||||
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      assert_raises MockGemUi::TermError do
 | 
			
		||||
      assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
        @cmd.execute
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/install_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsInstallCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsInstallCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/list_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsListCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsListCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/lock_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsLockCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsLockCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/outdated_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsOutdatedCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsOutdatedCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/owner_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsOwnerCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsOwnerCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ EOF
 | 
			
		|||
    response = "You don't have permission to push to this gem"
 | 
			
		||||
    @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners.yaml"] = [response, 403, 'Forbidden']
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @cmd.show_owners("freewill")
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ EOF
 | 
			
		|||
    response = "You don't have permission to push to this gem"
 | 
			
		||||
    @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 403, 'Forbidden']
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @cmd.add_owners("freewill", ["user-new1@example.com"])
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +100,7 @@ EOF
 | 
			
		|||
    response = "You don't have permission to push to this gem"
 | 
			
		||||
    @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 403, 'Forbidden']
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @cmd.remove_owners("freewill", ["user-remove1@example.com"])
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/pristine_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsPristineCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsPristineCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/push_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsPushCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsPushCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ class TestGemCommandsPushCommand < RubyGemTestCase
 | 
			
		|||
    response = "You don't have permission to push to this gem"
 | 
			
		||||
    @fetcher.data["#{Gem.host}/api/v1/gems"] = [response, 403, 'Forbidden']
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @cmd.send_gem(@path)
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/query_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsQueryCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsQueryCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/server_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsServerCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsServerCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/sources_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsSourcesCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsSourcesCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +90,7 @@ class TestGemCommandsSourcesCommand < RubyGemTestCase
 | 
			
		|||
    util_setup_spec_fetcher
 | 
			
		||||
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      assert_raises MockGemUi::TermError do
 | 
			
		||||
      assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
        @cmd.execute
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ Error fetching http://beta-gems.example.com:
 | 
			
		|||
    util_setup_spec_fetcher
 | 
			
		||||
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      assert_raises MockGemUi::TermError do
 | 
			
		||||
      assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
        @cmd.execute
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/specification_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsSpecificationCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsSpecificationCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +51,7 @@ class TestGemCommandsSpecificationCommand < RubyGemTestCase
 | 
			
		|||
  def test_execute_bad_name
 | 
			
		||||
    @cmd.options[:args] = %w[foo]
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @cmd.execute
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/stale_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsStaleCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsStaleCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,20 +4,16 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require "test/rubygems/gem_installer_test_case"
 | 
			
		||||
require 'rubygems/installer_test_case'
 | 
			
		||||
require 'rubygems/commands/uninstall_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsUninstallCommand < GemInstallerTestCase
 | 
			
		||||
class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
 | 
			
		||||
    ui = MockGemUi.new
 | 
			
		||||
    util_setup_gem ui
 | 
			
		||||
 | 
			
		||||
    build_rake_in do
 | 
			
		||||
      use_ui ui do
 | 
			
		||||
      use_ui @ui do
 | 
			
		||||
        @installer.install
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -28,15 +24,25 @@ class TestGemCommandsUninstallCommand < GemInstallerTestCase
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def test_execute_removes_executable
 | 
			
		||||
    ui = Gem::MockGemUi.new
 | 
			
		||||
    util_setup_gem ui
 | 
			
		||||
 | 
			
		||||
    build_rake_in do
 | 
			
		||||
      use_ui ui do
 | 
			
		||||
        @installer.install
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if win_platform?
 | 
			
		||||
      assert_equal true, File.exist?(@executable)
 | 
			
		||||
      assert File.exist?(@executable)
 | 
			
		||||
    else
 | 
			
		||||
      assert_equal true, File.symlink?(@executable)
 | 
			
		||||
      assert File.symlink?(@executable)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    # Evil hack to prevent false removal success
 | 
			
		||||
    FileUtils.rm_f @executable
 | 
			
		||||
    File.open(@executable, "wb+") {|f| f.puts "binary"}
 | 
			
		||||
 | 
			
		||||
    open(@executable, "wb+") {|f| f.puts "binary"}
 | 
			
		||||
 | 
			
		||||
    @cmd.options[:args] = Array(@spec.name)
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/unpack_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsUnpackCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsUnpackCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/update_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsUpdateCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsUpdateCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/commands/which_command'
 | 
			
		||||
 | 
			
		||||
class TestGemCommandsWhichCommand < RubyGemTestCase
 | 
			
		||||
class TestGemCommandsWhichCommand < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +45,7 @@ class TestGemCommandsWhichCommand < RubyGemTestCase
 | 
			
		|||
    @cmd.handle_options %w[missing]
 | 
			
		||||
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      assert_raises MockGemUi::TermError do
 | 
			
		||||
      assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
        @cmd.execute
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/config_file'
 | 
			
		||||
 | 
			
		||||
class TestGemConfigFile < RubyGemTestCase
 | 
			
		||||
class TestGemConfigFile < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/dependency'
 | 
			
		||||
 | 
			
		||||
class TestGemDependency < RubyGemTestCase
 | 
			
		||||
class TestGemDependency < Gem::TestCase
 | 
			
		||||
  def test_initialize
 | 
			
		||||
    d = dep "pkg", "> 1.0"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +64,7 @@ class TestGemDependency < RubyGemTestCase
 | 
			
		|||
  def test_equals_tilde
 | 
			
		||||
    d = dep "a", "0"
 | 
			
		||||
 | 
			
		||||
    assert_match d,                  d,             "matche self"
 | 
			
		||||
    assert_match d,                  d,             "match self"
 | 
			
		||||
    assert_match dep("a", ">= 0"),   d,             "match version exact"
 | 
			
		||||
    assert_match dep("a", ">= 0"),   dep("a", "1"), "match version"
 | 
			
		||||
    assert_match dep(/a/, ">= 0"),   d,             "match simple regexp"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/dependency_installer'
 | 
			
		||||
 | 
			
		||||
class TestGemDependencyInstaller < RubyGemTestCase
 | 
			
		||||
class TestGemDependencyInstaller < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/dependency_list'
 | 
			
		||||
 | 
			
		||||
class TestGemDependencyList < RubyGemTestCase
 | 
			
		||||
class TestGemDependencyList < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ class TestGemDependencyList < RubyGemTestCase
 | 
			
		|||
                 'deps of trimmed specs not included'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_dependency_order_no_dependendencies
 | 
			
		||||
  def test_dependency_order_no_dependencies
 | 
			
		||||
    @deplist.add @a1, @c2
 | 
			
		||||
 | 
			
		||||
    order = @deplist.dependency_order
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/doc_manager'
 | 
			
		||||
 | 
			
		||||
class TestGemDocManager < RubyGemTestCase
 | 
			
		||||
class TestGemDocManager < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/ext'
 | 
			
		||||
 | 
			
		||||
class TestGemExtConfigureBuilder < RubyGemTestCase
 | 
			
		||||
class TestGemExtConfigureBuilder < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/ext'
 | 
			
		||||
 | 
			
		||||
class TestGemExtExtConfBuilder < RubyGemTestCase
 | 
			
		||||
class TestGemExtExtConfBuilder < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/ext'
 | 
			
		||||
 | 
			
		||||
class TestGemExtRakeBuilder < RubyGemTestCase
 | 
			
		||||
class TestGemExtRakeBuilder < Gem::TestCase
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require "test/rubygems/simple_gem"
 | 
			
		||||
require 'rubygems/format'
 | 
			
		||||
 | 
			
		||||
class TestGemFormat < RubyGemTestCase
 | 
			
		||||
class TestGemFormat < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/gem_path_searcher'
 | 
			
		||||
 | 
			
		||||
class Gem::GemPathSearcher
 | 
			
		||||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ class Gem::GemPathSearcher
 | 
			
		|||
  attr_accessor :lib_dirs
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class TestGemGemPathSearcher < RubyGemTestCase
 | 
			
		||||
class TestGemGemPathSearcher < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/gem_runner'
 | 
			
		||||
 | 
			
		||||
class TestGemGemRunner < RubyGemTestCase
 | 
			
		||||
class TestGemGemRunner < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_do_configuration
 | 
			
		||||
    Gem.clear_paths
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems'
 | 
			
		||||
require 'rubygems/gemcutter_utilities'
 | 
			
		||||
 | 
			
		||||
class TestGemGemcutterUtilities < RubyGemTestCase
 | 
			
		||||
class TestGemGemcutterUtilities < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ class TestGemGemcutterUtilities < RubyGemTestCase
 | 
			
		|||
  def test_sign_in_with_bad_credentials
 | 
			
		||||
    skip 'Always uses $stdin on windows' if Gem.win_platform?
 | 
			
		||||
 | 
			
		||||
    assert_raises MockGemUi::TermError do
 | 
			
		||||
    assert_raises Gem::MockGemUi::TermError do
 | 
			
		||||
      util_sign_in ['Access Denied.', 403, 'Forbidden']
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ class TestGemGemcutterUtilities < RubyGemTestCase
 | 
			
		|||
    @fetcher.data["#{host}/api/v1/api_key"] = response
 | 
			
		||||
    Gem::RemoteFetcher.fetcher = @fetcher
 | 
			
		||||
 | 
			
		||||
    @sign_in_ui = MockGemUi.new "#{email}\n#{password}\n"
 | 
			
		||||
    @sign_in_ui = Gem::MockGemUi.new "#{email}\n#{password}\n"
 | 
			
		||||
 | 
			
		||||
    use_ui @sign_in_ui do
 | 
			
		||||
      @cmd.sign_in
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,14 +4,14 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/indexer'
 | 
			
		||||
 | 
			
		||||
unless ''.respond_to? :to_xs then
 | 
			
		||||
unless defined?(Builder::XChar) then
 | 
			
		||||
  warn "Gem::Indexer tests are being skipped.  Install builder gem." if $VERBOSE
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class TestGemIndexer < RubyGemTestCase
 | 
			
		||||
class TestGemIndexer < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -558,5 +558,5 @@ eighty characters.</pre>
 | 
			
		|||
    refute File.exist?(file), "#{file} exists"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end if ''.respond_to? :to_xs
 | 
			
		||||
end if defined?(Builder::XChar)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_installer_test_case"
 | 
			
		||||
require 'rubygems/installer_test_case'
 | 
			
		||||
require 'rubygems/install_update_options'
 | 
			
		||||
require 'rubygems/command'
 | 
			
		||||
 | 
			
		||||
class TestGemInstallUpdateOptions < GemInstallerTestCase
 | 
			
		||||
class TestGemInstallUpdateOptions < Gem::InstallerTestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,9 +4,9 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_installer_test_case"
 | 
			
		||||
require 'rubygems/installer_test_case'
 | 
			
		||||
 | 
			
		||||
class TestGemInstaller < GemInstallerTestCase
 | 
			
		||||
class TestGemInstaller < Gem::InstallerTestCase
 | 
			
		||||
 | 
			
		||||
  def test_app_script_text
 | 
			
		||||
    util_make_exec '2', ''
 | 
			
		||||
| 
						 | 
				
			
			@ -72,6 +72,7 @@ load Gem.bin_path('a', 'my_exec', version)
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def test_build_extensions_unsupported
 | 
			
		||||
    gem_make_out = File.join @gemhome, 'gems', @spec.full_name, 'gem_make.out'
 | 
			
		||||
    @spec.extensions << nil
 | 
			
		||||
 | 
			
		||||
    e = assert_raises Gem::Installer::ExtensionBuildError do
 | 
			
		||||
| 
						 | 
				
			
			@ -80,15 +81,15 @@ load Gem.bin_path('a', 'my_exec', version)
 | 
			
		|||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    assert_match(/^No builder for extension ''$/, e.message)
 | 
			
		||||
    assert_match(/^\s*No builder for extension ''$/, e.message)
 | 
			
		||||
 | 
			
		||||
    assert_equal "Building native extensions.  This could take a while...\n",
 | 
			
		||||
                 @ui.output
 | 
			
		||||
    assert_equal '', @ui.error
 | 
			
		||||
 | 
			
		||||
    assert_equal "No builder for extension ''\n", File.read('gem_make.out')
 | 
			
		||||
    assert_equal "No builder for extension ''\n", File.read(gem_make_out)
 | 
			
		||||
  ensure
 | 
			
		||||
    FileUtils.rm_f 'gem_make.out'
 | 
			
		||||
    FileUtils.rm_f gem_make_out
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_ensure_dependency
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/local_remote_options'
 | 
			
		||||
require 'rubygems/command'
 | 
			
		||||
 | 
			
		||||
class TestGemLocalRemoteOptions < RubyGemTestCase
 | 
			
		||||
class TestGemLocalRemoteOptions < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_package_tar_test_case"
 | 
			
		||||
require 'rubygems/package/tar_test_case'
 | 
			
		||||
require 'rubygems/package'
 | 
			
		||||
 | 
			
		||||
class TestGemPackageTarHeader < TarTestCase
 | 
			
		||||
class TestGemPackageTarHeader < Gem::Package::TarTestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_package_tar_test_case"
 | 
			
		||||
require 'rubygems/package/tar_test_case'
 | 
			
		||||
require 'rubygems/package/tar_input'
 | 
			
		||||
 | 
			
		||||
class TestGemPackageTarInput < TarTestCase
 | 
			
		||||
class TestGemPackageTarInput < Gem::Package::TarTestCase
 | 
			
		||||
 | 
			
		||||
  # Sometimes the setgid bit doesn't take.  Don't know if this is a problem on
 | 
			
		||||
  # all systems, or just some.  But for now, we will ignore it in the tests.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_package_tar_test_case"
 | 
			
		||||
require 'rubygems/package/tar_test_case'
 | 
			
		||||
require 'rubygems/package/tar_output'
 | 
			
		||||
 | 
			
		||||
class TestGemPackageTarOutput < TarTestCase
 | 
			
		||||
class TestGemPackageTarOutput < Gem::Package::TarTestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_package_tar_test_case"
 | 
			
		||||
require 'rubygems/package/tar_test_case'
 | 
			
		||||
require 'rubygems/package'
 | 
			
		||||
 | 
			
		||||
class TestGemPackageTarReader < TarTestCase
 | 
			
		||||
class TestGemPackageTarReader < Gem::Package::TarTestCase
 | 
			
		||||
 | 
			
		||||
  def test_each_entry
 | 
			
		||||
    tar = tar_dir_header "foo", "bar", 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_package_tar_test_case"
 | 
			
		||||
require 'rubygems/package/tar_test_case'
 | 
			
		||||
require 'rubygems/package'
 | 
			
		||||
 | 
			
		||||
class TestGemPackageTarReaderEntry < TarTestCase
 | 
			
		||||
class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_package_tar_test_case"
 | 
			
		||||
require 'rubygems/package/tar_test_case'
 | 
			
		||||
require 'rubygems/package/tar_writer'
 | 
			
		||||
 | 
			
		||||
class TestTarWriter < TarTestCase
 | 
			
		||||
class TestTarWriter < Gem::Package::TarTestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems'
 | 
			
		||||
require 'rubygems/package_task'
 | 
			
		||||
 | 
			
		||||
class TestGemPackageTask < RubyGemTestCase
 | 
			
		||||
class TestGemPackageTask < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_gem_package
 | 
			
		||||
    gem = Gem::Specification.new do |g|
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/platform'
 | 
			
		||||
require 'rbconfig'
 | 
			
		||||
 | 
			
		||||
class TestGemPlatform < RubyGemTestCase
 | 
			
		||||
class TestGemPlatform < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_self_local
 | 
			
		||||
    util_set_arch 'i686-darwin8.10.1'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'ostruct'
 | 
			
		||||
require 'webrick'
 | 
			
		||||
require 'rubygems/remote_fetcher'
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ require 'rubygems/format'
 | 
			
		|||
# software doesn't really care, as long as we hit the proxy URL when a
 | 
			
		||||
# proxy is configured.
 | 
			
		||||
 | 
			
		||||
class TestGemRemoteFetcher < RubyGemTestCase
 | 
			
		||||
class TestGemRemoteFetcher < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  include Gem::DefaultUserInteraction
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -617,7 +617,7 @@ gems:
 | 
			
		|||
    assert_equal '', response.body
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_request_unmodifed
 | 
			
		||||
  def test_request_unmodified
 | 
			
		||||
    uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}"
 | 
			
		||||
    conn = util_stub_connection_for :body => '', :code => 304
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require "rubygems/requirement"
 | 
			
		||||
 | 
			
		||||
class TestGemRequirement < RubyGemTestCase
 | 
			
		||||
class TestGemRequirement < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_equals2
 | 
			
		||||
    r = req "= 1.2"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/security'
 | 
			
		||||
 | 
			
		||||
class TestGemSecurity < RubyGemTestCase
 | 
			
		||||
class TestGemSecurity < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_class_build_cert
 | 
			
		||||
    name = OpenSSL::X509::Name.parse "CN=nobody/DC=example"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/server'
 | 
			
		||||
require 'stringio'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ class Gem::Server
 | 
			
		|||
  attr_reader :server
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class TestGemServer < RubyGemTestCase
 | 
			
		||||
class TestGemServer < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/source_index'
 | 
			
		||||
require 'rubygems/config_file'
 | 
			
		||||
 | 
			
		||||
class TestGemSourceIndex < RubyGemTestCase
 | 
			
		||||
class TestGemSourceIndex < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/spec_fetcher'
 | 
			
		||||
 | 
			
		||||
class TestGemSpecFetcher < RubyGemTestCase
 | 
			
		||||
class TestGemSpecFetcher < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'stringio'
 | 
			
		||||
require 'rubygems/specification'
 | 
			
		||||
 | 
			
		||||
class TestGemSpecification < RubyGemTestCase
 | 
			
		||||
class TestGemSpecification < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  LEGACY_YAML_SPEC = <<-EOF
 | 
			
		||||
--- !ruby/object:Gem::Specification
 | 
			
		||||
| 
						 | 
				
			
			@ -997,7 +997,7 @@ end
 | 
			
		|||
 | 
			
		||||
      assert_equal "WARNING:  no description specified\n", @ui.error, 'error'
 | 
			
		||||
 | 
			
		||||
      @ui = MockGemUi.new
 | 
			
		||||
      @ui = Gem::MockGemUi.new
 | 
			
		||||
      @a1.summary = 'this is my summary'
 | 
			
		||||
      @a1.description = @a1.summary
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1133,7 +1133,7 @@ end
 | 
			
		|||
 | 
			
		||||
      assert_equal "WARNING:  no homepage specified\n", @ui.error, 'error'
 | 
			
		||||
 | 
			
		||||
      @ui = MockGemUi.new
 | 
			
		||||
      @ui = Gem::MockGemUi.new
 | 
			
		||||
 | 
			
		||||
      @a1.homepage = ''
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/user_interaction'
 | 
			
		||||
require 'timeout'
 | 
			
		||||
 | 
			
		||||
class TestGemStreamUI < RubyGemTestCase
 | 
			
		||||
class TestGemStreamUI < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  module IsTty
 | 
			
		||||
    attr_accessor :tty
 | 
			
		||||
| 
						 | 
				
			
			@ -199,6 +199,24 @@ class TestGemStreamUI < RubyGemTestCase
 | 
			
		|||
    assert_equal "Fetching: a.gem\rFetching: a.gem ( 50%)\rFetching: a.gem (100%)\n", @out.string
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_verbose_download_reporter_progress_nil_length
 | 
			
		||||
    @cfg.verbose = true
 | 
			
		||||
    reporter = @sui.download_reporter
 | 
			
		||||
    reporter.fetch 'a.gem', nil
 | 
			
		||||
    reporter.update 1024
 | 
			
		||||
    reporter.done
 | 
			
		||||
    assert_equal "Fetching: a.gem\rFetching: a.gem (1024B)\rFetching: a.gem (1024B)\n", @out.string
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_verbose_download_reporter_progress_zero_length
 | 
			
		||||
    @cfg.verbose = true
 | 
			
		||||
    reporter = @sui.download_reporter
 | 
			
		||||
    reporter.fetch 'a.gem', 0
 | 
			
		||||
    reporter.update 1024
 | 
			
		||||
    reporter.done
 | 
			
		||||
    assert_equal "Fetching: a.gem\rFetching: a.gem (1024B)\rFetching: a.gem (1024B)\n", @out.string
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_verbose_download_reporter_no_tty
 | 
			
		||||
    @out.tty = false
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require "rubygems/text"
 | 
			
		||||
 | 
			
		||||
class TestGemText < RubyGemTestCase
 | 
			
		||||
class TestGemText < Gem::TestCase
 | 
			
		||||
  include Gem::Text
 | 
			
		||||
 | 
			
		||||
  def test_format_text
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,31 +4,28 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gem_installer_test_case"
 | 
			
		||||
require 'rubygems/installer_test_case'
 | 
			
		||||
require 'rubygems/uninstaller'
 | 
			
		||||
 | 
			
		||||
class TestGemUninstaller < GemInstallerTestCase
 | 
			
		||||
class TestGemUninstaller < Gem::InstallerTestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
 | 
			
		||||
    ui = MockGemUi.new
 | 
			
		||||
    util_setup_gem ui
 | 
			
		||||
 | 
			
		||||
    @user_spec.executables = ["my_exec"]
 | 
			
		||||
 | 
			
		||||
    # HACK util_make_exec
 | 
			
		||||
    user_bin_dir = File.join Gem.user_dir, 'gems', @user_spec.full_name, 'bin'
 | 
			
		||||
    FileUtils.mkdir_p user_bin_dir
 | 
			
		||||
    exec_path = File.join user_bin_dir, "my_exec"
 | 
			
		||||
    File.open exec_path, 'w' do |f|
 | 
			
		||||
    open exec_path, 'w' do |f|
 | 
			
		||||
      f.puts "#!/usr/bin/ruby"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    user_bin_dir = File.join Gem.user_dir, 'bin'
 | 
			
		||||
    FileUtils.mkdir_p user_bin_dir
 | 
			
		||||
    exec_path = File.join user_bin_dir, "my_exec"
 | 
			
		||||
    File.open exec_path, 'w' do |f|
 | 
			
		||||
    open exec_path, 'w' do |f|
 | 
			
		||||
      f.puts "#!/usr/bin/ruby"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -50,11 +47,14 @@ class TestGemUninstaller < GemInstallerTestCase
 | 
			
		|||
  def test_remove_executables_force_keep
 | 
			
		||||
    uninstaller = Gem::Uninstaller.new nil, :executables => false
 | 
			
		||||
 | 
			
		||||
    executable = File.join Gem.user_dir, 'bin', 'my_exec'
 | 
			
		||||
    assert File.exist? executable
 | 
			
		||||
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      uninstaller.remove_executables @spec
 | 
			
		||||
      uninstaller.remove_executables @user_spec
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    assert_equal true, File.exist?(File.join(@gemhome, 'bin', 'executable'))
 | 
			
		||||
    assert File.exist? executable
 | 
			
		||||
 | 
			
		||||
    assert_equal "Executables and scripts will remain installed.\n", @ui.output
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			@ -62,13 +62,16 @@ class TestGemUninstaller < GemInstallerTestCase
 | 
			
		|||
  def test_remove_executables_force_remove
 | 
			
		||||
    uninstaller = Gem::Uninstaller.new nil, :executables => true
 | 
			
		||||
 | 
			
		||||
    executable = File.join Gem.user_dir, 'bin', 'my_exec'
 | 
			
		||||
    assert File.exist? executable
 | 
			
		||||
 | 
			
		||||
    use_ui @ui do
 | 
			
		||||
      uninstaller.remove_executables @spec
 | 
			
		||||
      uninstaller.remove_executables @user_spec
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    assert_equal "Removing executable\n", @ui.output
 | 
			
		||||
    assert_equal "Removing my_exec\n", @ui.output
 | 
			
		||||
 | 
			
		||||
    assert_equal false, File.exist?(File.join(@gemhome, 'bin', 'executable'))
 | 
			
		||||
    refute File.exist? executable
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_remove_executables_user
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require "test/rubygems/simple_gem"
 | 
			
		||||
require 'rubygems/validator'
 | 
			
		||||
 | 
			
		||||
class TestGemValidator < RubyGemTestCase
 | 
			
		||||
class TestGemValidator < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require "rubygems/version"
 | 
			
		||||
 | 
			
		||||
class TestGemVersion < RubyGemTestCase
 | 
			
		||||
class TestGemVersion < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_bump
 | 
			
		||||
    assert_bumped_version_equal "5.3", "5.2.4"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,11 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
require 'rubygems/command'
 | 
			
		||||
require 'rubygems/version_option'
 | 
			
		||||
 | 
			
		||||
class TestGemVersionOption < RubyGemTestCase
 | 
			
		||||
class TestGemVersionOption < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,9 +4,9 @@
 | 
			
		|||
# File a patch instead and assign it to Ryan Davis or Eric Hodel.
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
require "test/rubygems/gemutilities"
 | 
			
		||||
require 'rubygems/test_case'
 | 
			
		||||
 | 
			
		||||
class TestKernel < RubyGemTestCase
 | 
			
		||||
class TestKernel < Gem::TestCase
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ class TestKernel < RubyGemTestCase
 | 
			
		|||
    assert $:.any? { |p| %r{a-1/lib} =~ p }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_gem_redundent
 | 
			
		||||
  def test_gem_redundant
 | 
			
		||||
    assert gem('a', '= 1'), "Should load"
 | 
			
		||||
    refute gem('a', '= 1'), "Should not load"
 | 
			
		||||
    assert_equal 1, $:.select { |p| %r{a-1/lib} =~ p }.size
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue