diff --git a/Library/Homebrew/cask/lib/hbc/artifact/uninstall_base.rb b/Library/Homebrew/cask/lib/hbc/artifact/uninstall_base.rb index d3bd5ded17..d574adee33 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/uninstall_base.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/uninstall_base.rb @@ -234,13 +234,27 @@ module Hbc ohai "Trashing files:" puts resolved_paths.map(&:first) - @command.run!("/usr/bin/osascript", args: ["-e", <<-EOS.undent, *resolved_paths.flat_map(&:last)]) + trash_paths(*resolved_paths.flat_map(&:last)) + end + + def trash_paths(*paths) + @command.run!("/usr/bin/osascript", args: ["-e", <<-'EOS'.undent, *paths]) on run argv repeat with i from 1 to (count argv) set item i of argv to (item i of argv as POSIX file) end repeat - tell application "Finder" to move argv to trash + tell application "Finder" + set trashedItems to (move argv to trash) + set output to "" + + repeat with i from 1 to (count trashedItems) + set item i of trashedItems to POSIX path of (item i of trashedItems as string) + set output to output & (item i of trashedItems) & (do shell script "printf \"\\0\"") + end repeat + + return output + end tell end run EOS end 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 6c2fd1a056..b84c1fd00f 100644 --- a/Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb +++ b/Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb @@ -176,6 +176,14 @@ shared_examples "#uninstall_phase or #zap_phase" do let(:fake_system_command) { Hbc::NeverSudoSystemCommand } let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-#{artifact_name}-#{directive}.rb") } + before(:each) do + allow_any_instance_of(Hbc::Artifact::UninstallBase).to receive(:trash_paths) + .and_wrap_original do |method, *args| + result = method.call(*args) + FileUtils.rm_rf result.stdout.split("\0") + end + end + it "is supported" do paths.each do |path| expect(path).to exist