1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/fileutils.rb (FileUtils::LowMethods): make low level methods

in NoWrite and DryRun to do nothing.  [ruby-dev:43129]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2011-02-04 18:37:52 +00:00
parent ab53367bc7
commit 780678dafb
5 changed files with 106 additions and 77 deletions

View file

@ -1,4 +1,7 @@
Sat Feb 5 03:34:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org> Sat Feb 5 03:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
* 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: add message arguments.

View file

@ -1519,6 +1519,12 @@ module FileUtils
OPT_TABLE.keys.select {|m| OPT_TABLE[m].include?(opt) } OPT_TABLE.keys.select {|m| OPT_TABLE[m].include?(opt) }
end 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, METHODS = singleton_methods() - [:private_module_function,
:commands, :options, :have_option?, :options_of, :collect_method] :commands, :options, :have_option?, :options_of, :collect_method]
@ -1554,6 +1560,7 @@ module FileUtils
# #
module NoWrite module NoWrite
include FileUtils include FileUtils
include LowMethods
@fileutils_output = $stderr @fileutils_output = $stderr
@fileutils_label = '' @fileutils_label = ''
::FileUtils.collect_method(:noop).each do |name| ::FileUtils.collect_method(:noop).each do |name|
@ -1580,6 +1587,7 @@ module FileUtils
# #
module DryRun module DryRun
include FileUtils include FileUtils
include LowMethods
@fileutils_output = $stderr @fileutils_output = $stderr
@fileutils_label = '' @fileutils_label = ''
::FileUtils.collect_method(:noop).each do |name| ::FileUtils.collect_method(:noop).each do |name|

89
test/fileutils/clobber.rb Normal file
View file

@ -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

View file

@ -1,11 +1,13 @@
# $Id$ # $Id$
require 'test/unit'
require 'fileutils' require 'fileutils'
require 'test/unit'
require_relative 'clobber'
class TestFileUtilsDryRun < Test::Unit::TestCase class TestFileUtilsDryRun < Test::Unit::TestCase
include FileUtils::DryRun include FileUtils::DryRun
include TestFileUtils::Clobber
def test_visibility def test_visibility
FileUtils::METHODS.each do |m| FileUtils::METHODS.each do |m|

View file

@ -1,13 +1,13 @@
# $Id$ # $Id$
require 'fileutils' require 'fileutils'
require_relative 'fileasserts'
require 'tmpdir'
require 'test/unit' require 'test/unit'
require_relative 'clobber'
class TestFileUtilsNoWrite < Test::Unit::TestCase class TestFileUtilsNoWrite < Test::Unit::TestCase
include FileUtils::NoWrite include FileUtils::NoWrite
include TestFileUtils::Clobber
def test_visibility def test_visibility
FileUtils::METHODS.each do |m| FileUtils::METHODS.each do |m|
@ -23,77 +23,4 @@ class TestFileUtilsNoWrite < Test::Unit::TestCase
"FileUtils::NoWrite\##{m} is not private" "FileUtils::NoWrite\##{m} is not private"
end end
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 end