ruby-changes:6266
From: mame <ko1@a...>
Date: Tue, 1 Jul 2008 21:33:28 +0900 (JST)
Subject: [ruby-changes:6266] Ruby:r17780 (trunk): * lib/test/unit/ui/console/testrunner.rb: prevent destructive modification to $0.
mame 2008-07-01 21:33:11 +0900 (Tue, 01 Jul 2008) New Revision: 17780 Modified files: trunk/ChangeLog trunk/lib/test/unit/ui/console/testrunner.rb trunk/test/rubygems/gemutilities.rb trunk/test/rubygems/test_gem_ext_rake_builder.rb trunk/test/rubygems/test_gem_installer.rb trunk/test/rubygems/test_gem_uninstaller.rb Log: * lib/test/unit/ui/console/testrunner.rb: prevent destructive modification to $0. * test/rubygems/gemutilities.rb (build_rake_in): move from test_gem_ext_rake_builder.rb. * test/rubygems/test_gem_ext_rake_builder.rb: ditto. * test/rubygems/test_gem_installer.rb: override Gem.ruby and ENV["rake"]. * test/rubygems/test_gem_uninstaller.rb: ditto. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=17780 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_uninstaller.rb?r1=17780&r2=17779&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_ext_rake_builder.rb?r1=17780&r2=17779&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=17780&r2=17779&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/test/unit/ui/console/testrunner.rb?r1=17780&r2=17779&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_installer.rb?r1=17780&r2=17779&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/gemutilities.rb?r1=17780&r2=17779&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 17779) +++ ChangeLog (revision 17780) @@ -1,3 +1,19 @@ +Tue Jul 1 21:32:43 2008 Yusuke Endoh <mame@t...> + + * lib/test/unit/ui/console/testrunner.rb: prevent destructive + modification to $0. + + * test/rubygems/gemutilities.rb (build_rake_in): move from + test_gem_ext_rake_builder.rb. + + * test/rubygems/test_gem_ext_rake_builder.rb: ditto. + + * test/rubygems/test_gem_installer.rb: override Gem.ruby and + ENV["rake"]. + + * test/rubygems/test_gem_uninstaller.rb: ditto. + + Tue Jul 1 21:13:17 2008 Koichi Sasada <ko1@a...> * compile.c, vm.c, insns.def: call FrozenCore.set_postexe method Index: lib/test/unit/ui/console/testrunner.rb =================================================================== --- lib/test/unit/ui/console/testrunner.rb (revision 17779) +++ lib/test/unit/ui/console/testrunner.rb (revision 17780) @@ -90,10 +90,8 @@ end def test_started(name) - unless defined? $program_name - $program_name = $0 - alias $0 $program_name - end + $program_name = $0 + alias $0 $program_name $PROGRAM_NAME += "\0#{name}" output_single(name + ": ", VERBOSE) end Index: test/rubygems/test_gem_uninstaller.rb =================================================================== --- test/rubygems/test_gem_uninstaller.rb (revision 17779) +++ test/rubygems/test_gem_uninstaller.rb (revision 17780) @@ -10,8 +10,10 @@ ui = MockGemUi.new util_setup_gem ui - use_ui ui do - @installer.install + build_rake_in do + use_ui ui do + @installer.install + end end end Index: test/rubygems/test_gem_installer.rb =================================================================== --- test/rubygems/test_gem_installer.rb (revision 17779) +++ test/rubygems/test_gem_installer.rb (revision 17780) @@ -529,8 +529,10 @@ Dir.mkdir util_inst_bindir util_setup_gem - use_ui @ui do - assert_equal @spec, @installer.install + build_rake_in do + use_ui @ui do + assert_equal @spec, @installer.install + end end gemdir = File.join @gemhome, 'gems', @spec.full_name @@ -600,8 +602,10 @@ util_setup_gem @installer.ignore_dependencies = true - use_ui @ui do - assert_equal @spec, @installer.install + build_rake_in do + use_ui @ui do + assert_equal @spec, @installer.install + end end gemdir = File.join @gemhome, 'gems', @spec.full_name @@ -646,9 +650,11 @@ install_dir = File.join @userhome, '.gem', 'gems', @spec.full_name @spec.executables = ["executable"] - use_ui @ui do - util_setup_gem - @installer.install + build_rake_in do + use_ui @ui do + util_setup_gem + @installer.install + end end assert File.exist?(File.join(install_dir, 'lib', 'code.rb')) @@ -663,10 +669,12 @@ File.chmod 0755, @userhome File.chmod 0000, util_inst_bindir - use_ui @ui do - setup - util_setup_gem - @installer.install + build_rake_in do + use_ui @ui do + setup + util_setup_gem + @installer.install + end end assert File.exist?(File.join(@userhome, '.gem', 'bin', 'executable')) Index: test/rubygems/test_gem_ext_rake_builder.rb =================================================================== --- test/rubygems/test_gem_ext_rake_builder.rb (revision 17779) +++ test/rubygems/test_gem_ext_rake_builder.rb (revision 17780) @@ -3,9 +3,6 @@ require 'rubygems/ext' class TestGemExtRakeBuilder < RubyGemTestCase - @@ruby = ENV["RUBY"] - @@rake = ENV["rake"] || (@@ruby + " " + File.expand_path("../../../bin/rake", __FILE__)) - def setup super @@ -16,24 +13,6 @@ FileUtils.mkdir_p @dest_path end - def build_rake_in dir - gem_ruby = Gem.ruby - ruby = @@ruby - Gem.module_eval {@ruby = ruby} - env_rake = ENV["rake"] - ENV["rake"] = @@rake - Dir.chdir dir do - yield @@rake - end - ensure - Gem.module_eval {@ruby = gem_ruby} - if env_rake - ENV["rake"] = env_rake - else - ENV.delete("rake") - end - end - def test_class_build File.open File.join(@ext, 'mkrf_conf.rb'), 'w' do |mkrf_conf| mkrf_conf.puts <<-EO_MKRF @@ -46,9 +25,11 @@ output = [] realdir = nil # HACK /tmp vs. /private/tmp - build_rake_in @ext do - realdir = Dir.pwd - Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', nil, @dest_path, output + build_rake_in do + Dir.chdir @ext do + realdir = Dir.pwd + Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', nil, @dest_path, output + end end expected = [ @@ -73,8 +54,10 @@ output = [] error = assert_raise Gem::InstallError do - build_rake_in @ext do - Gem::Ext::RakeBuilder.build "mkrf_conf.rb", nil, @dest_path, output + build_rake_in do + Dir.chdir @ext do + Gem::Ext::RakeBuilder.build "mkrf_conf.rb", nil, @dest_path, output + end end end Index: test/rubygems/gemutilities.rb =================================================================== --- test/rubygems/gemutilities.rb (revision 17779) +++ test/rubygems/gemutilities.rb (revision 17780) @@ -392,5 +392,50 @@ self.class.process_based_port end + def build_rake_in + gem_ruby = Gem.ruby + ruby = @@ruby + Gem.module_eval {@ruby = ruby} + env_rake = ENV["rake"] + ENV["rake"] = @@rake + yield @@rake + ensure + Gem.module_eval {@ruby = gem_ruby} + if env_rake + ENV["rake"] = env_rake + else + ENV.delete("rake") + end + end + + def self.rubybin + if ruby = ENV["RUBY"] + return ruby + end + ruby = "ruby" + rubyexe = ruby+".exe" + 3.times do + if File.exist? ruby and File.executable? ruby and !File.directory? ruby + return File.expand_path(ruby) + end + if File.exist? rubyexe and File.executable? rubyexe + return File.expand_path(rubyexe) + end + ruby = File.join("..", ruby) + end + begin + require "rbconfig" + File.join( + RbConfig::CONFIG["bindir"], + RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"] + ) + rescue LoadError + "ruby" + end + end + + @@ruby = rubybin + @@rake = ENV["rake"] || (@@ruby + " " + File.expand_path("../../../bin/rake", __FILE__)) + end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/