[前][次][番号順一覧][スレッド一覧]

ruby-changes:25972

From: drbrain <ko1@a...>
Date: Fri, 30 Nov 2012 13:30:22 +0900 (JST)
Subject: [ruby-changes:25972] drbrain:r38029 (trunk): * lib/rubygems/commands/setup_command.rb: Remove old files on install

drbrain	2012-11-30 13:30:12 +0900 (Fri, 30 Nov 2012)

  New Revision: 38029

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38029

  Log:
    * lib/rubygems/commands/setup_command.rb:  Remove old files on install
      of RubyGems.  (not by rbinstall.rb).
    * test/rubygems/test_gem_commands_setup_command.rb:  Test for above.

  Added files:
    trunk/test/rubygems/test_gem_commands_setup_command.rb
  Modified files:
    trunk/ChangeLog
    trunk/lib/rubygems/commands/setup_command.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 38028)
+++ ChangeLog	(revision 38029)
@@ -1,3 +1,9 @@
+Fri Nov 30 13:11:53 2012  Eric Hodel  <drbrain@s...>
+
+	* lib/rubygems/commands/setup_command.rb:  Remove old files on install
+	  of RubyGems.  (not by rbinstall.rb).
+	* test/rubygems/test_gem_commands_setup_command.rb:  Test for above.
+
 Fri Nov 30 12:47:59 2012  Akinori MUSHA  <knu@i...>
 
 	* lib/abbrev.rb (Abbrev#abbrev): A fixed string prefix pattern
Index: lib/rubygems/commands/setup_command.rb
===================================================================
--- lib/rubygems/commands/setup_command.rb	(revision 38028)
+++ lib/rubygems/commands/setup_command.rb	(revision 38029)
@@ -137,6 +137,8 @@
 
     remove_old_bin_files bin_dir
 
+    remove_old_lib_files lib_dir
+
     say "RubyGems #{Gem::VERSION} installed"
 
     uninstall_old_gemcutter
@@ -280,9 +282,9 @@
   def install_lib(lib_dir)
     say "Installing RubyGems" if @verbose
 
+    lib_files = rb_files_in 'lib'
+
     Dir.chdir 'lib' do
-      lib_files = Dir[File.join('**', '*rb')]
-
       lib_files.each do |lib_file|
         dest_file = File.join lib_dir, lib_file
         dest_dir = File.dirname dest_file
@@ -379,6 +381,12 @@
     [lib_dir, bin_dir]
   end
 
+  def rb_files_in dir
+    Dir.chdir dir do
+      Dir[File.join('**', '*rb')]
+    end
+  end
+
   def remove_old_bin_files(bin_dir)
     old_bin_files = {
       'gem_mirror' => 'gem mirror',
@@ -411,6 +419,23 @@
     end
   end
 
+  def remove_old_lib_files lib_dir
+    lib_files = rb_files_in 'lib'
+
+    old_lib_files = rb_files_in lib_dir
+
+    to_remove = old_lib_files - lib_files
+
+    Dir.chdir lib_dir do
+      to_remove.each do |file|
+        FileUtils.rm_f file
+
+        warn "unable to remove old file #{file} please remove it by hand" if
+          File.exist? file
+      end
+    end
+  end
+
   def uninstall_old_gemcutter
     require 'rubygems/uninstaller'
 
Index: test/rubygems/test_gem_commands_setup_command.rb
===================================================================
--- test/rubygems/test_gem_commands_setup_command.rb	(revision 0)
+++ test/rubygems/test_gem_commands_setup_command.rb	(revision 38029)
@@ -0,0 +1,45 @@
+require 'rubygems/test_case'
+require 'rubygems/commands/setup_command'
+
+class TestGemCommandsSetupCommand < Gem::TestCase
+
+  def setup
+    super
+
+    @install_dir = File.join @tempdir, 'install'
+    @cmd = Gem::Commands::SetupCommand.new
+    @cmd.options[:prefix] = @install_dir
+
+    FileUtils.mkdir_p 'bin'
+    FileUtils.mkdir_p 'lib/rubygems'
+
+    open 'bin/gem',                   'w' do |io| io.puts '# gem'          end
+    open 'lib/rubygems.rb',           'w' do |io| io.puts '# rubygems.rb'  end
+    open 'lib/rubygems/test_case.rb', 'w' do |io| io.puts '# test_case.rb' end
+  end
+
+  def test_rb_files_in
+    assert_equal %w[rubygems.rb rubygems/test_case.rb],
+                 @cmd.rb_files_in('lib').sort
+  end
+
+  def test_remove_old_lib_files
+    lib            = File.join @install_dir, 'lib'
+    lib_rubygems   = File.join lib, 'rubygems'
+
+    old_builder_rb = File.join lib_rubygems, 'builder.rb'
+    old_format_rb  = File.join lib_rubygems, 'format.rb'
+
+    FileUtils.mkdir_p lib_rubygems
+
+    open old_builder_rb, 'w' do |io| io.puts '# builder.rb' end
+    open old_format_rb,  'w' do |io| io.puts '# format.rb'  end
+
+    @cmd.remove_old_lib_files lib
+
+    refute_path_exists old_builder_rb
+    refute_path_exists old_format_rb
+  end
+
+end
+

Property changes on: test/rubygems/test_gem_commands_setup_command.rb
___________________________________________________________________
Added: svn:eof-style
   + LF


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]