cask/utils: quieten down when fixing permissions fails.

When fixing permissions fails, we should not print the error messages
from e.g. `chmod` unless we are in debug or verbose mode (because we
immediately retry taking ownership `sudo`).
This commit is contained in:
Mike McQuaid 2024-04-01 16:22:42 +01:00
parent 865d38ab82
commit 7e35ae25d5
No known key found for this signature in database
2 changed files with 5 additions and 6 deletions

View File

@ -68,15 +68,19 @@ module Cask
rescue
# in case of permissions problems
unless tried_permissions
print_stderr = Context.current.debug? || Context.current.verbose?
# TODO: Better handling for the case where path is a symlink.
# The -h and -R flags cannot be combined, and behavior is
# dependent on whether the file argument has a trailing
# slash. This should do the right thing, but is fragile.
command.run("/usr/bin/chflags",
print_stderr:,
args: command_args + ["--", "000", path])
command.run("/bin/chmod",
print_stderr:,
args: command_args + ["--", "u+rwx", path])
command.run("/bin/chmod",
print_stderr:,
args: command_args + ["-N", path])
tried_permissions = true
retry # rmtree

View File

@ -171,12 +171,7 @@ RSpec.describe Cask::Artifact::App, :cask do
end
it "overwrites the existing app" do
expect(command).to receive(:run).with("/usr/bin/chflags",
args: ["-R", "--", "000", target_path]).and_call_original
expect(command).to receive(:run).with("/bin/chmod",
args: ["-R", "--", "u+rwx", target_path]).and_call_original
expect(command).to receive(:run).with("/bin/chmod",
args: ["-R", "-N", target_path]).and_call_original
expect(command).to receive(:run).and_call_original.at_least(:once)
stdout = <<~EOS
==> Removing App '#{target_path}'