describe Hbc::Artifact::Pkg, :cask do let(:cask) { Hbc::CaskLoader.load(cask_path("with-installable")) } let(:fake_system_command) { class_double(Hbc::SystemCommand) } before do InstallHelper.install_without_artifacts(cask) end describe "install_phase" do it "runs the system installer on the specified pkgs" do pkg = cask.artifacts.find { |a| a.is_a?(described_class) } expect(fake_system_command).to receive(:run!).with( "/usr/sbin/installer", args: ["-pkg", cask.staged_path.join("MyFancyPkg", "Fancy.pkg"), "-target", "/"], sudo: true, print_stdout: true, ) pkg.install_phase(command: fake_system_command) end end describe "choices" do let(:cask) { Hbc::CaskLoader.load(cask_path("with-choices")) } it "passes the choice changes xml to the system installer" do pkg = cask.artifacts.find { |a| a.is_a?(described_class) } file = double(path: Pathname.new("/tmp/choices.xml")) expect(file).to receive(:write).with(<<~EOS) \t \t\tattributeSetting \t\t1 \t\tchoiceAttribute \t\tselected \t\tchoiceIdentifier \t\tchoice1 \t EOS expect(file).to receive(:close) expect(file).to receive(:unlink) expect(Tempfile).to receive(:open).and_yield(file) expect(fake_system_command).to receive(:run!).with( "/usr/sbin/installer", args: ["-pkg", cask.staged_path.join("MyFancyPkg", "Fancy.pkg"), "-target", "/", "-applyChoiceChangesXML", cask.staged_path.join("/tmp/choices.xml")], sudo: true, print_stdout: true, ) pkg.install_phase(command: fake_system_command) end end end