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

ruby-changes:18760

From: nobu <ko1@a...>
Date: Sat, 5 Feb 2011 03:37:59 +0900 (JST)
Subject: [ruby-changes:18760] Ruby:r30787 (trunk): * lib/fileutils.rb (FileUtils::LowMethods): make low level methods

nobu	2011-02-05 03:37:52 +0900 (Sat, 05 Feb 2011)

  New Revision: 30787

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

  Log:
    * lib/fileutils.rb (FileUtils::LowMethods): make low level methods
      in NoWrite and DryRun to do nothing.  [ruby-dev:43129]

  Added files:
    trunk/test/fileutils/clobber.rb
  Modified files:
    trunk/ChangeLog
    trunk/lib/fileutils.rb
    trunk/test/fileutils/test_dryrun.rb
    trunk/test/fileutils/test_nowrite.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30786)
+++ ChangeLog	(revision 30787)
@@ -1,5 +1,8 @@
-Sat Feb  5 03:34:59 2011  Nobuyoshi Nakada  <nobu@r...>
+Sat Feb  5 03:37:47 2011  Nobuyoshi Nakada  <nobu@r...>
 
+	* lib/fileutils.rb (FileUtils::LowMethods): make low level methods
+	  in NoWrite and DryRun to do nothing.  [ruby-dev:43129]
+
 	* test/fileutils/fileasserts.rb: add message arguments.
 
 	* test/fileutils/fileasserts.rb (Test::Unit::Assertions#assert_block):
Index: lib/fileutils.rb
===================================================================
--- lib/fileutils.rb	(revision 30786)
+++ lib/fileutils.rb	(revision 30787)
@@ -1519,6 +1519,12 @@
     OPT_TABLE.keys.select {|m| OPT_TABLE[m].include?(opt) }
   end
 
+  LOW_METHODS = singleton_methods(false) - collect_method(:noop).map(&:intern)
+  module LowMethods
+    module_eval("private\n" + ::FileUtils::LOW_METHODS.map {|name| "def #{name}(*)end"}.join("\n"),
+                __FILE__, __LINE__)
+  end
+
   METHODS = singleton_methods() - [:private_module_function,
       :commands, :options, :have_option?, :options_of, :collect_method]
 
@@ -1554,6 +1560,7 @@
   #
   module NoWrite
     include FileUtils
+    include LowMethods
     @fileutils_output  = $stderr
     @fileutils_label   = ''
     ::FileUtils.collect_method(:noop).each do |name|
@@ -1580,6 +1587,7 @@
   #
   module DryRun
     include FileUtils
+    include LowMethods
     @fileutils_output  = $stderr
     @fileutils_label   = ''
     ::FileUtils.collect_method(:noop).each do |name|
Index: test/fileutils/test_dryrun.rb
===================================================================
--- test/fileutils/test_dryrun.rb	(revision 30786)
+++ test/fileutils/test_dryrun.rb	(revision 30787)
@@ -1,11 +1,13 @@
 # $Id$
 
+require 'fileutils'
 require 'test/unit'
-require 'fileutils'
+require_relative 'clobber'
 
 class TestFileUtilsDryRun < Test::Unit::TestCase
 
   include FileUtils::DryRun
+  include TestFileUtils::Clobber
 
   def test_visibility
     FileUtils::METHODS.each do |m|
Index: test/fileutils/test_nowrite.rb
===================================================================
--- test/fileutils/test_nowrite.rb	(revision 30786)
+++ test/fileutils/test_nowrite.rb	(revision 30787)
@@ -1,13 +1,13 @@
 # $Id$
 
 require 'fileutils'
-require_relative 'fileasserts'
-require 'tmpdir'
 require 'test/unit'
+require_relative 'clobber'
 
 class TestFileUtilsNoWrite < Test::Unit::TestCase
 
   include FileUtils::NoWrite
+  include TestFileUtils::Clobber
 
   def test_visibility
     FileUtils::METHODS.each do |m|
@@ -23,77 +23,4 @@
                    "FileUtils::NoWrite\##{m} is not private"
     end
   end
-
-  def my_rm_rf(path)
-    if File.exist?('/bin/rm')
-      system %Q[/bin/rm -rf "#{path}"]
-    else
-      FileUtils.rm_rf path
-    end
-  end
-
-  SRC  = 'data/src'
-  COPY = 'data/copy'
-
-  def setup
-    @prevdir = Dir.pwd
-    tmproot = "#{Dir.tmpdir}/fileutils.rb.#{$$}"
-    Dir.mkdir tmproot unless File.directory?(tmproot)
-    Dir.chdir tmproot
-    my_rm_rf 'data'; Dir.mkdir 'data'
-    my_rm_rf 'tmp'; Dir.mkdir 'tmp'
-    File.open(SRC,  'w') {|f| f.puts 'dummy' }
-    File.open(COPY, 'w') {|f| f.puts 'dummy' }
-  end
-
-  def teardown
-    tmproot = Dir.pwd
-    Dir.chdir @prevdir
-    my_rm_rf tmproot
-  end
-
-  def test_cp
-    cp SRC, 'tmp/cp'
-    check 'tmp/cp'
-  end
-
-  def test_mv
-    mv SRC, 'tmp/mv'
-    check 'tmp/mv'
-  end
-
-  def check(dest)
-    assert_file_not_exist dest
-    assert_file_exist SRC
-    assert_same_file SRC, COPY
-  end
-
-  def test_rm
-    rm SRC
-    assert_file_exist SRC
-    assert_same_file SRC, COPY
-  end
-
-  def test_rm_f
-    rm_f SRC
-    assert_file_exist SRC
-    assert_same_file SRC, COPY
-  end
-
-  def test_rm_rf
-    rm_rf SRC
-    assert_file_exist SRC
-    assert_same_file SRC, COPY
-  end
-
-  def test_mkdir
-    mkdir 'dir'
-    assert_file_not_exist 'dir'
-  end
-
-  def test_mkdir_p
-    mkdir 'dir/dir/dir'
-    assert_file_not_exist 'dir'
-  end
-
 end
Index: test/fileutils/clobber.rb
===================================================================
--- test/fileutils/clobber.rb	(revision 0)
+++ test/fileutils/clobber.rb	(revision 30787)
@@ -0,0 +1,89 @@
+require 'fileutils'
+require 'test/unit'
+require 'tmpdir'
+require_relative 'fileasserts'
+
+class TestFileUtils < Test::Unit::TestCase
+end
+
+module TestFileUtils::Clobber
+  def my_rm_rf(path)
+    if File.exist?('/bin/rm')
+      system %Q[/bin/rm -rf "#{path}"]
+    else
+      FileUtils.rm_rf path
+    end
+  end
+
+  SRC  = 'data/src'
+  COPY = 'data/copy'
+
+  def setup
+    @prevdir = Dir.pwd
+    class << (@fileutils_output = "")
+      alias puts <<
+    end
+    tmproot = "#{Dir.tmpdir}/fileutils.rb.#{$$}"
+    Dir.mkdir tmproot unless File.directory?(tmproot)
+    Dir.chdir tmproot
+    my_rm_rf 'data'; Dir.mkdir 'data'
+    my_rm_rf 'tmp'; Dir.mkdir 'tmp'
+    File.open(SRC,  'w') {|f| f.puts 'dummy' }
+    File.open(COPY, 'w') {|f| f.puts 'dummy' }
+  end
+
+  def teardown
+    tmproot = Dir.pwd
+    Dir.chdir @prevdir
+    my_rm_rf tmproot
+  end
+
+  def test_cp
+    cp SRC, 'tmp/cp'
+    check 'tmp/cp'
+  end
+
+  def test_mv
+    mv SRC, 'tmp/mv'
+    check 'tmp/mv'
+  end
+
+  def check(dest, message=nil)
+    assert_file_not_exist dest, message
+    assert_file_exist SRC, message
+    assert_same_file SRC, COPY, message
+  end
+
+  def test_rm
+    rm SRC
+    assert_file_exist SRC
+    assert_same_file SRC, COPY
+  end
+
+  def test_rm_f
+    rm_f SRC
+    assert_file_exist SRC
+    assert_same_file SRC, COPY
+  end
+
+  def test_rm_rf
+    rm_rf SRC
+    assert_file_exist SRC
+    assert_same_file SRC, COPY
+  end
+
+  def test_mkdir
+    mkdir 'dir'
+    assert_file_not_exist 'dir'
+  end
+
+  def test_mkdir_p
+    mkdir 'dir/dir/dir'
+    assert_file_not_exist 'dir'
+  end
+
+  def test_copy_entry
+    copy_entry SRC, 'tmp/copy_entry'
+    check 'tmp/copy_entry', bug4331 = '[ruby-dev:43129]'
+  end
+end

Property changes on: test/fileutils/clobber.rb
___________________________________________________________________
Added: svn:eol-style
   + LF
Added: svn:keywords
   + Id


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

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