diff --git a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb index cede9f4d53..fffb10cae7 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb @@ -54,17 +54,25 @@ module Hbc ] args << "-verboseR" if Hbc.verbose args << "-allowUntrusted" if pkg_install_opts :allow_untrusted - if pkg_install_opts :choices - choices_file = choices_xml - args << "-applyChoiceChangesXML" << choices_file.path + with_choices_file pkg_install_opts(:choices) do |choices_path| + args << "-applyChoiceChangesXML" << choices_path if choices_path + @command.run!("/usr/sbin/installer", sudo: true, args: args, print_stdout: true) end - @command.run!("/usr/sbin/installer", sudo: true, args: args, print_stdout: true) end - def choices_xml - file = Tempfile.open(["", ".xml"]) - file.write Plist::Emit.dump(pkg_install_opts(:choices)) - file + def with_choices_file(choices) + unless choices + yield nil + return + end + + begin + file = Tempfile.new(["choices", ".xml"]) + file.write Plist::Emit.dump(choices) + yield file.path + ensure + file.close(true) + end end end end diff --git a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb index cb30c4a0af..6e10177d12 100644 --- a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb +++ b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb @@ -60,7 +60,9 @@ describe Hbc::Artifact::Pkg do EOS file.stubs path: Pathname.new("/tmp/choices.xml") - Tempfile.expects(:open).returns(file) + file.expects(:close).with true + Tempfile.expects(:new).returns file + Hbc::FakeSystemCommand.expects_command(["/usr/bin/sudo", "-E", "--", "/usr/sbin/installer", "-pkg", @cask.staged_path.join("MyFancyPkg", "Fancy.pkg"), "-target", "/", "-applyChoiceChangesXML", @cask.staged_path.join("/tmp/choices.xml")]) shutup do