aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/cask/artifact
diff options
context:
space:
mode:
authorMarkus Reiter2017-03-09 22:01:46 +0100
committerMarkus Reiter2017-03-11 10:47:39 +0100
commit9393b16930740f16a8749d006e5acf3f52d8e5fb (patch)
tree06ac560f9a29b4860d67adab61d856a8a4898a24 /Library/Homebrew/test/cask/artifact
parent371a830028f53c0ac94d37b736307837b2f2b120 (diff)
downloadbrew-9393b16930740f16a8749d006e5acf3f52d8e5fb.tar.bz2
Fix `uninstall :pkgutil` leaving empty `.app` directories.
Diffstat (limited to 'Library/Homebrew/test/cask/artifact')
-rw-r--r--Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb97
1 files changed, 13 insertions, 84 deletions
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 2b69a06a8..69e015489 100644
--- a/Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb
+++ b/Library/Homebrew/test/cask/artifact/uninstall_zap_shared_examples.rb
@@ -66,94 +66,23 @@ shared_examples "#uninstall_phase or #zap_phase" do
let(:fake_system_command) { class_double(Hbc::SystemCommand) }
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-#{artifact_name}-pkgutil.rb") }
+
let(:main_pkg_id) { "my.fancy.package.main" }
let(:agent_pkg_id) { "my.fancy.package.agent" }
- let(:main_files) do
- %w[
- fancy/bin/fancy.exe
- fancy/var/fancy.data
- ]
- end
- let(:main_dirs) do
- %w[
- fancy
- fancy/bin
- fancy/var
- ]
- end
- let(:agent_files) do
- %w[
- fancy/agent/fancy-agent.exe
- fancy/agent/fancy-agent.pid
- fancy/agent/fancy-agent.log
- ]
- end
- let(:agent_dirs) do
- %w[
- fancy
- fancy/agent
- ]
- end
- let(:pkg_info_plist) do
- <<-EOS.undent
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plist version="1.0">
- <dict>
- <key>install-location</key>
- <string>tmp</string>
- <key>volume</key>
- <string>/</string>
- </dict>
- </plist>
- EOS
- end
it "is supported" do
- allow(fake_system_command).to receive(:run).with(
- "/usr/sbin/pkgutil",
- args: ["--pkgs=my.fancy.package.*"],
- ).and_return(double(stdout: "#{main_pkg_id}\n#{agent_pkg_id}"))
-
- [
- [main_pkg_id, main_files, main_dirs],
- [agent_pkg_id, agent_files, agent_dirs],
- ].each do |pkg_id, pkg_files, pkg_dirs|
-
- allow(fake_system_command).to receive(:run!).with(
- "/usr/sbin/pkgutil",
- args: ["--only-files", "--files", pkg_id.to_s],
- ).and_return(double(stdout: pkg_files.join("\n")))
-
- allow(fake_system_command).to receive(:run!).with(
- "/usr/sbin/pkgutil",
- args: ["--only-dirs", "--files", pkg_id.to_s],
- ).and_return(double(stdout: pkg_dirs.join("\n")))
-
- allow(fake_system_command).to receive(:run!).with(
- "/usr/sbin/pkgutil",
- args: ["--files", pkg_id.to_s],
- ).and_return(double(stdout: (pkg_files + pkg_dirs).join("\n")))
-
- result = Hbc::SystemCommand::Result.new(nil, pkg_info_plist, nil, 0)
- allow(fake_system_command).to receive(:run!).with(
- "/usr/sbin/pkgutil",
- args: ["--pkg-info-plist", pkg_id.to_s],
- ).and_return(result)
-
- expect(fake_system_command).to receive(:run).with(
- "/usr/bin/xargs",
- args: ["-0", "--", "/bin/rm", "-f", "--"],
- input: pkg_files.map { |path| "/tmp/#{path}" }.join("\0"),
- sudo: true,
- )
-
- expect(fake_system_command).to receive(:run!).with(
- "/usr/sbin/pkgutil",
- args: ["--forget", pkg_id.to_s],
- sudo: true,
- )
- end
+ main_pkg = Hbc::Pkg.new(main_pkg_id, fake_system_command)
+ agent_pkg = Hbc::Pkg.new(agent_pkg_id, fake_system_command)
+
+ expect(Hbc::Pkg).to receive(:all_matching).and_return(
+ [
+ main_pkg,
+ agent_pkg,
+ ],
+ )
+
+ expect(main_pkg).to receive(:uninstall)
+ expect(agent_pkg).to receive(:uninstall)
subject
end