diff options
author | nagachika <nagachika@ruby-lang.org> | 2022-09-25 15:18:36 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2022-09-25 15:18:36 +0900 |
commit | a07e7ad6b0b9abc44d097ca600b0ff801d0d0a06 (patch) | |
tree | 630e7a89a88cca6151344da5d5157f45f7cdb286 | |
parent | 89eab8e0bf34ed36f32c1f8c230790f8b23a356f (diff) |
merge revision(s) 70f69f85395f5735429cd45136d7de2742f08b72: [Backport #18941]
[ruby/fileutils] Fix mkdir_p hanging on Windows when trying to create
a file on a offline drive
https://github.com/ruby/fileutils/commit/9cc6a082d7
---
lib/fileutils.rb | 2 +-
test/fileutils/test_fileutils.rb | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
-rw-r--r-- | lib/fileutils.rb | 2 | ||||
-rw-r--r-- | test/fileutils/test_fileutils.rb | 8 | ||||
-rw-r--r-- | version.h | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/lib/fileutils.rb b/lib/fileutils.rb index c115005163..32968f0a1a 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -212,7 +212,7 @@ module FileUtils path = remove_trailing_slash(item) stack = [] - until File.directory?(path) + until File.directory?(path) || File.dirname(path) == path stack.push path path = File.dirname(path) end diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb index 36b5d6ef50..9a648276fa 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -1098,6 +1098,14 @@ class TestFileUtils < Test::Unit::TestCase ensure Dir.rmdir(drive) if drive and File.directory?(drive) end + + def test_mkdir_p_offline_drive + offline_drive = ("A".."Z").to_a.reverse.find {|d| !File.exist?("#{d}:/") } + + assert_raise(Errno::ENOENT) { + mkdir_p "#{offline_drive}:/new_dir" + } + end end def test_mkdir_p_file_perm @@ -11,7 +11,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 3 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 61 +#define RUBY_PATCHLEVEL 62 #define RUBY_RELEASE_YEAR 2022 #define RUBY_RELEASE_MONTH 9 |