From e798ccbacf489a3af2201ae30058ff0ae7f79045 Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 19 Jan 2011 00:08:49 +0000 Subject: Import rubygems 1.5.0 (release candidate) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30599 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rubygems/gemutilities.rb | 92 ++++++++++++++++++++++++++++++------------- 1 file changed, 65 insertions(+), 27 deletions(-) (limited to 'test/rubygems/gemutilities.rb') diff --git a/test/rubygems/gemutilities.rb b/test/rubygems/gemutilities.rb index 66914d0c0e..fc27d6077c 100644 --- a/test/rubygems/gemutilities.rb +++ b/test/rubygems/gemutilities.rb @@ -1,8 +1,18 @@ +###################################################################### +# 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. +###################################################################### + at_exit { $SAFE = 1 } -$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) +# $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) -require 'rubygems' +if defined? Gem::QuickLoader + Gem::QuickLoader.load_full_rubygems_library +else + require 'rubygems' +end require 'fileutils' require 'minitest/autorun' require 'tmpdir' @@ -11,6 +21,8 @@ require 'rubygems/package' require 'rubygems/test_utilities' require 'pp' require 'yaml' +require 'zlib' + begin YAML::ENGINE.yamler = 'psych' rescue LoadError @@ -23,11 +35,11 @@ end require 'rdoc/rdoc' -require_relative 'mockgemui' +require "test/rubygems/mockgemui" module Gem def self.searcher=(searcher) - MUTEX.synchronize do @searcher = searcher end + @searcher = searcher end def self.source_index=(si) @@ -38,6 +50,10 @@ module Gem @@win_platform = val end + def self.ruby= ruby + @ruby = ruby + end + module DefaultUserInteraction @ui = MockGemUi.new end @@ -53,15 +69,19 @@ class RubyGemTestCase < MiniTest::Unit::TestCase def setup super + @orig_gem_home = ENV['GEM_HOME'] + @orig_gem_path = ENV['GEM_PATH'] + @ui = MockGemUi.new tmpdir = nil Dir.chdir Dir.tmpdir do tmpdir = Dir.pwd end # HACK OSX /private/tmp - @tempdir = File.join tmpdir, "test_rubygems_#{$$}" + if ENV['KEEP_FILES'] then + @tempdir = File.join tmpdir, "test_rubygems_#{$$}.#{Time.now.to_i}" + else + @tempdir = File.join tmpdir, "test_rubygems_#{$$}" + end @tempdir.untaint - @gemhome = File.join @tempdir, "gemhome" - @gemcache = File.join(@gemhome, "source_cache") - @usrcache = File.join(@gemhome, ".gem", "user_cache") - @latest_usrcache = File.join(@gemhome, ".gem", "latest_user_cache") + @gemhome = File.join @tempdir, 'gemhome' @userhome = File.join @tempdir, 'userhome' Gem.ensure_gem_subdirectories @gemhome @@ -80,7 +100,6 @@ class RubyGemTestCase < MiniTest::Unit::TestCase FileUtils.mkdir_p @gemhome FileUtils.mkdir_p @userhome - ENV['GEMCACHE'] = @usrcache Gem.use_paths(@gemhome) Gem.loaded_specs.clear @@ -131,9 +150,13 @@ class RubyGemTestCase < MiniTest::Unit::TestCase Gem.pre_uninstall do |uninstaller| @pre_uninstall_hook_arg = uninstaller end + + @orig_LOAD_PATH = $LOAD_PATH.dup end def teardown + $LOAD_PATH.replace @orig_LOAD_PATH + Gem::ConfigMap[:BASERUBY] = @orig_BASERUBY Gem::ConfigMap[:arch] = @orig_arch @@ -141,15 +164,15 @@ class RubyGemTestCase < MiniTest::Unit::TestCase Gem::RemoteFetcher.fetcher = nil end - FileUtils.rm_rf @tempdir + FileUtils.rm_rf @tempdir unless ENV['KEEP_FILES'] - ENV.delete 'GEMCACHE' - ENV.delete 'GEM_HOME' - ENV.delete 'GEM_PATH' + ENV['GEM_HOME'] = @orig_gem_home + ENV['GEM_PATH'] = @orig_gem_path Gem.clear_paths - Gem.class_eval { @ruby = ruby } if ruby = @orig_ruby + _ = @orig_ruby + Gem.class_eval { @ruby = _ } if _ if @orig_ENV_HOME then ENV['HOME'] = @orig_ENV_HOME @@ -171,6 +194,14 @@ class RubyGemTestCase < MiniTest::Unit::TestCase Gem::Installer.new(gem, :wrappers => true).install end + def uninstall_gem gem + require 'rubygems/uninstaller' + + uninstaller = Gem::Uninstaller.new gem.name, :executables => true, + :user_install => true + uninstaller.uninstall + end + def mu_pp(obj) s = '' s = PP.pp obj, s @@ -283,7 +314,15 @@ class RubyGemTestCase < MiniTest::Unit::TestCase Gem.source_index.refresh! end - def util_gem(name, version, &block) + def util_gem(name, version, deps = nil, &block) + if deps then # fuck you eric + block = proc do |s| + deps.each do |n, req| + s.add_dependency n, (req || '>= 0') + end + end + end + spec = quick_gem(name, version, &block) util_build_gem spec @@ -500,13 +539,12 @@ Also, a list: def build_rake_in gem_ruby = Gem.ruby - ruby = @@ruby - Gem.module_eval {@ruby = ruby} + Gem.ruby = @@ruby env_rake = ENV["rake"] ENV["rake"] = @@rake yield @@rake ensure - Gem.module_eval {@ruby = gem_ruby} + Gem.ruby = gem_ruby if env_rake ENV["rake"] = env_rake else @@ -515,11 +553,11 @@ Also, a list: end def self.rubybin - if ruby = ENV["RUBY"] - return ruby - end + ruby = ENV["RUBY"] + return ruby if ruby ruby = "ruby" - rubyexe = ruby+".exe" + rubyexe = "#{ruby}.exe" + 3.times do if File.exist? ruby and File.executable? ruby and !File.directory? ruby return File.expand_path(ruby) @@ -529,12 +567,12 @@ Also, a list: end ruby = File.join("..", ruby) end + begin require "rbconfig" - File.join( - RbConfig::CONFIG["bindir"], - RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"] - ) + File.join(RbConfig::CONFIG["bindir"], + RbConfig::CONFIG["ruby_install_name"] + + RbConfig::CONFIG["EXEEXT"]) rescue LoadError "ruby" end -- cgit v1.2.3