diff options
author | ktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-03-03 15:28:58 +0000 |
---|---|---|
committer | ktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-03-03 15:28:58 +0000 |
commit | c754b227978af124734fb90be703c923b0752519 (patch) | |
tree | 79a8ec2f48d00a27ee5e96c7ea6393d756c3befe | |
parent | d0a9ee1e86c3cfd410ed39d693bc14431baec420 (diff) | |
download | ruby-c754b227978af124734fb90be703c923b0752519.tar.gz |
* lib/find.rb (Find#find): should pass ignore_error option to enumerators.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45263 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | lib/find.rb | 2 | ||||
-rw-r--r-- | test/test_find.rb | 20 |
3 files changed, 25 insertions, 1 deletions
@@ -1,3 +1,7 @@ +Tue Mar 4 00:25:35 2014 Kazuki Tsujimoto <kazuki@callcc.net> + + * lib/find.rb (Find#find): should pass ignore_error option to enumerators. + Mon Mar 3 13:27:35 2014 NAKAMURA Usaku <usa@ruby-lang.org> * test/test_find.rb (TestFind#test_unsearchable_dir): ruby cannot make diff --git a/lib/find.rb b/lib/find.rb index c5fd35b1d7..46e2512b9e 100644 --- a/lib/find.rb +++ b/lib/find.rb @@ -35,7 +35,7 @@ module Find # See the +Find+ module documentation for an example. # def find(*paths, ignore_error: true) # :yield: path - block_given? or return enum_for(__method__, *paths) + block_given? or return enum_for(__method__, *paths, ignore_error: ignore_error) fs_encoding = Encoding.find("filesystem") diff --git a/test/test_find.rb b/test/test_find.rb index af0cb2dc95..cb2ce56129 100644 --- a/test/test_find.rb +++ b/test/test_find.rb @@ -106,10 +106,20 @@ class TestFind < Test::Unit::TestCase assert_equal([d, dir], a) a = [] + Find.find(d, ignore_error: true).each {|f| a << f } + assert_equal([d, dir], a) + + a = [] assert_raise_with_message(Errno::EACCES, /#{Regexp.quote(dir)}/) do Find.find(d, ignore_error: false) {|f| a << f } end assert_equal([d, dir], a) + + a = [] + assert_raise_with_message(Errno::EACCES, /#{Regexp.quote(dir)}/) do + Find.find(d, ignore_error: false).each {|f| a << f } + end + assert_equal([d, dir], a) ensure File.chmod(0700, dir) end @@ -130,6 +140,10 @@ class TestFind < Test::Unit::TestCase Find.find(d, ignore_error: true) {|f| a << f } assert_equal([d, dir, file], a) + a = [] + Find.find(d, ignore_error: true).each {|f| a << f } + assert_equal([d, dir, file], a) + skip "no meaning test on Windows" if /mswin|mingw/ =~ RUBY_PLATFORM a = [] assert_raise_with_message(Errno::EACCES, /#{Regexp.quote(file)}/) do @@ -137,6 +151,12 @@ class TestFind < Test::Unit::TestCase end assert_equal([d, dir, file], a) + a = [] + assert_raise_with_message(Errno::EACCES, /#{Regexp.quote(file)}/) do + Find.find(d, ignore_error: false).each {|f| a << f } + end + assert_equal([d, dir, file], a) + assert_raise(Errno::EACCES) { File.lstat(file) } ensure File.chmod(0700, dir) |