cask/artifact/abstract_uninstall: fix trash_paths

This is currently behaving incorrectly when calling `trash.swift` fails
due to lack of permissions. In this instance, `trash.swift` prints

    error: permissionDenied

to stdout, and this is incorrectly parsed as having successfully trashed
a file named `error` and another named ` permissionDenied`.

Let's fix this by ensuring that:
- any paths in `trashed` are in the `paths` that we wanted to trash in
  the first place
- define `untrashable` by removing the `trashed` paths from `paths`
This commit is contained in:
Carlo Cabrera 2025-04-24 18:03:07 +08:00 committed by Carlo Cabrera
parent d19dca6228
commit f816a39d1f
No known key found for this signature in database
GPG Key ID: C74D447FC549A1D0

View File

@ -464,9 +464,9 @@ module Cask
args: paths,
print_stderr: Homebrew::EnvConfig.developer?
trashed, _, untrashable = stdout.partition("\n")
trashed = trashed.split(":")
untrashable = untrashable.split(":")
trashed, = stdout.partition("\n")
trashed = trashed.split(":") & paths
untrashable = paths - trashed
trashed_with_permissions, untrashable = untrashable.partition do |path|
Utils.gain_permissions(path, ["-R"], SystemCommand) do