From 2b4c3ee1d75199c7886905f4ee678e7dd437b5e0 Mon Sep 17 00:00:00 2001 From: Markus Reiter <me@reitermark.us> Date: Sun, 12 Mar 2017 22:09:13 +0100 Subject: [PATCH] Default to `sudo: false` for `installer/uninstall :script`. --- .../cask/lib/hbc/artifact/installer.rb | 2 +- .../cask/lib/hbc/artifact/uninstall_base.rb | 2 +- .../artifact/uninstall_zap_shared_examples.rb | 53 +++++++++---------- 3 files changed, 27 insertions(+), 30 deletions(-) diff --git a/Library/Homebrew/cask/lib/hbc/artifact/installer.rb b/Library/Homebrew/cask/lib/hbc/artifact/installer.rb index 55e8d38c03..be857696ec 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/installer.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/installer.rb @@ -16,7 +16,7 @@ module Hbc else executable, script_arguments = self.class.read_script_arguments(artifact.script, self.class.artifact_dsl_key.to_s, - { must_succeed: true, sudo: true }, + { must_succeed: true, sudo: false }, print_stdout: true) ohai "Running #{self.class.artifact_dsl_key} script #{executable}" raise CaskInvalidError.new(@cask, "#{self.class.artifact_dsl_key} missing executable") if executable.nil? diff --git a/Library/Homebrew/cask/lib/hbc/artifact/uninstall_base.rb b/Library/Homebrew/cask/lib/hbc/artifact/uninstall_base.rb index d438fc0264..478f313b5a 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/uninstall_base.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/uninstall_base.rb @@ -163,7 +163,7 @@ module Hbc def uninstall_script(directives, directive_name: :script) executable, script_arguments = self.class.read_script_arguments(directives, "uninstall", - { must_succeed: true, sudo: true }, + { must_succeed: true, sudo: false }, { print_stdout: true }, directive_name) diff --git a/Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb b/Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb index 69e0154899..6c2fd1a056 100644 --- a/Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb +++ b/Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb @@ -216,35 +216,32 @@ shared_examples "#uninstall_phase or #zap_phase" do end end - context "using :script" do - let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-#{artifact_name}-script.rb") } - let(:script_pathname) { cask.staged_path.join("MyFancyPkg", "FancyUninstaller.tool") } - - it "is supported" do - Hbc::FakeSystemCommand.expects_command(%w[/bin/chmod -- +x] + [script_pathname]) - - Hbc::FakeSystemCommand.expects_command( - sudo(cask.staged_path.join("MyFancyPkg", "FancyUninstaller.tool"), "--please"), - ) - - InstallHelper.install_without_artifacts(cask) - subject - end - end - - context "using :early_script" do - let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-#{artifact_name}-early-script.rb") } - let(:script_pathname) { cask.staged_path.join("MyFancyPkg", "FancyUninstaller.tool") } - - it "is supported" do - Hbc::FakeSystemCommand.expects_command(%w[/bin/chmod -- +x] + [script_pathname]) - - Hbc::FakeSystemCommand.expects_command( - sudo(cask.staged_path.join("MyFancyPkg", "FancyUninstaller.tool"), "--please"), - ) + [:script, :early_script].each do |script_type| + context "using #{script_type.inspect}" do + let(:fake_system_command) { Hbc::NeverSudoSystemCommand } + let(:token) { "with-#{artifact_name}-#{script_type}".tr("_", "-") } + let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/#{token}.rb") } + let(:script_pathname) { cask.staged_path.join("MyFancyPkg", "FancyUninstaller.tool") } - InstallHelper.install_without_artifacts(cask) - subject + it "is supported" do + allow(fake_system_command).to receive(:run).with(any_args).and_call_original + + expect(fake_system_command).to receive(:run).with( + "/bin/chmod", + args: ["--", "+x", script_pathname], + ) + + expect(fake_system_command).to receive(:run).with( + cask.staged_path.join("MyFancyPkg", "FancyUninstaller.tool"), + args: ["--please"], + must_succeed: true, + print_stdout: true, + sudo: false, + ) + + InstallHelper.install_without_artifacts(cask) + subject + end end end -- GitLab