Skip to content

Commit bd578d8

Browse files
authored
Merge pull request #39 from jeremyevans/windows-fix-cp_r-symlink-dev
Fix a Couple Windows Issues
2 parents c19c11a + 7359cef commit bd578d8

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

lib/fileutils.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,11 @@ def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil,
488488
# If +remove_destination+ is true, this method removes each destination file before copy.
489489
#
490490
def copy_entry(src, dest, preserve = false, dereference_root = false, remove_destination = false)
491-
Entry_.new(src, nil, dereference_root).wrap_traverse(proc do |ent|
491+
if dereference_root
492+
src = File.realpath(src)
493+
end
494+
495+
Entry_.new(src, nil, false).wrap_traverse(proc do |ent|
492496
destent = Entry_.new(dest, ent.rel, false)
493497
File.unlink destent.path if remove_destination && (File.file?(destent.path) || File.symlink?(destent.path))
494498
ent.copy destent.path

test/fileutils/test_fileutils.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -450,11 +450,11 @@ def test_cp_r_fifo
450450

451451
def test_cp_r_dev
452452
devs = Dir['/dev/*']
453-
chardev = Dir['/dev/*'].find{|f| File.chardev?(f)}
454-
blockdev = Dir['/dev/*'].find{|f| File.blockdev?(f)}
453+
chardev = devs.find{|f| File.chardev?(f)}
454+
blockdev = devs.find{|f| File.blockdev?(f)}
455455
Dir.mkdir('tmp/cpr_dest')
456-
assert_raise(RuntimeError) { cp_r chardev, 'tmp/cpr_dest/cd' }
457-
assert_raise(RuntimeError) { cp_r blockdev, 'tmp/cpr_dest/bd' }
456+
assert_raise(RuntimeError) { cp_r chardev, 'tmp/cpr_dest/cd' } if chardev
457+
assert_raise(RuntimeError) { cp_r blockdev, 'tmp/cpr_dest/bd' } if blockdev
458458
end
459459

460460
begin

0 commit comments

Comments
 (0)