Skip to content

Commit 1a2bd7f

Browse files
committed
Avoid "permission denied" errors copying assets
by running `FileUtils#cp_r` with the `:remove_destination` option enabled. This makes asset copying more robust in the face of restrictive permissions on asset file destination paths. This should be safe and backward-compatible given that the destination files (or their contents) will be fully replaced anyway. Example case: irb(main):001:0> FileUtils.touch('foo') => ["foo"] irb(main):002:0> FileUtils.touch('bar') => ["bar"] irb(main):003:0> FileUtils.chmod(0o444, 'bar') => ["bar"] irb(main):004:0> FileUtils.cp_r('foo', 'bar') Errno::EACCES: Permission denied @ rb_sysopen - bar from /nix/store/2kw126cy93rix4pmh9lcl120njnb6r7r-ruby-3.1.4/lib/ruby/3.1.0/fileutils.rb:1395:in `initialize' irb(main):005:0> FileUtils.cp_r('foo', 'bar', remove_destination: true) => nil Addresses simplecov-ruby/simplecov#741.
1 parent 37c0b23 commit 1a2bd7f

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

lib/simplecov-html.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def initialize
2727
def format(result)
2828
unless @inline_assets
2929
Dir[File.join(@public_assets_dir, "*")].each do |path|
30-
FileUtils.cp_r(path, asset_output_path)
30+
FileUtils.cp_r(path, asset_output_path, remove_destination: true)
3131
end
3232
end
3333

0 commit comments

Comments
 (0)