aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/fileutils.rb1
-rw-r--r--test/fileutils/test_fileutils.rb5
3 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 70b11bd432..f6842cac21 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Nov 4 10:35:47 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy): ensure that the
+ source entry exists first, to fix error for non-existent entry.
+ [ruby-core:77885] [Bug #12892]
+
Thu Nov 3 21:45:00 2016 Kenta Murata <mrkn@mrkn.jp>
* ext/bigdecimal/bigdecimal.c: Import changes from ruby/bigdecimal
diff --git a/lib/fileutils.rb b/lib/fileutils.rb
index 4317af5327..efceb2fba7 100644
--- a/lib/fileutils.rb
+++ b/lib/fileutils.rb
@@ -1244,6 +1244,7 @@ module FileUtils
end
def copy(dest)
+ lstat
case
when file?
copy_file dest
diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb
index 00441a4cfb..0ff0aadca2 100644
--- a/test/fileutils/test_fileutils.rb
+++ b/test/fileutils/test_fileutils.rb
@@ -361,6 +361,11 @@ class TestFileUtils < Test::Unit::TestCase
assert_raise(ArgumentError, bug3588) do
cp_r 'tmp2', 'tmp2/new_tmp2'
end
+
+ bug12892 = '[ruby-core:77885] [Bug #12892]'
+ assert_raise(Errno::ENOENT, bug12892) do
+ cp_r 'non/existent', 'tmp'
+ end
end
def test_cp_r_symlink