From f4a3bc100b4b98a3d06222c15934abb36bf16594 Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Thu, 10 Nov 2016 11:56:00 +0900 Subject: cask: add the choices option to pkg stanza installer command accepts -applyChoiceChangesXML option to change customize options on the GUI installer from the commandline. (`man installer` for more detailed information) The introduced option `choice` enables the choice changes to be supplied via pkg stanza without tricks in preflight code. --- .../Homebrew/cask/test/cask/artifact/pkg_test.rb | 37 ++++++++++++++++++++++ .../cask/test/support/Casks/with-choices.rb | 16 ++++++++++ 2 files changed, 53 insertions(+) create mode 100644 Library/Homebrew/cask/test/support/Casks/with-choices.rb (limited to 'Library/Homebrew/cask/test') diff --git a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb index e87db7a7a..8ee4e0a3c 100644 --- a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb +++ b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb @@ -30,4 +30,41 @@ describe Hbc::Artifact::Pkg do end end end + + describe "choices" do + before do + @cask = Hbc.load("with-choices") + shutup do + TestHelper.install_without_artifacts(@cask) + end + end + + it "passes the choice changes xml to the system installer" do + pkg = Hbc::Artifact::Pkg.new(@cask, + command: Hbc::FakeSystemCommand) + + 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("Choices.xml")]) + + shutup do + pkg.install_phase + end + + IO.read(@cask.staged_path.join("Choices.xml")).must_equal <<-EOS.undent + + + + + + attributeSetting + 1 + choiceAttribute + selected + choiceIdentifier + choice1 + + + + EOS + end + end end diff --git a/Library/Homebrew/cask/test/support/Casks/with-choices.rb b/Library/Homebrew/cask/test/support/Casks/with-choices.rb new file mode 100644 index 000000000..1871efab3 --- /dev/null +++ b/Library/Homebrew/cask/test/support/Casks/with-choices.rb @@ -0,0 +1,16 @@ +test_cask 'with-choices' do + version '1.2.3' + sha256 '8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b' + + url "file://#{TEST_FIXTURE_DIR}/cask/MyFancyPkg.zip" + homepage 'http://example.com/fancy-pkg' + + pkg 'MyFancyPkg/Fancy.pkg', + choices: [ + { + 'choiceIdentifier' => 'choice1', + 'choiceAttribute' => 'selected', + 'attributeSetting' => 1, + }, + ] +end -- cgit v1.2.3 From 28072021031836937a01e9fd995b03995fe49443 Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Sat, 19 Nov 2016 13:05:55 +0900 Subject: cask: use Tempfile and some style fixes --- .../Homebrew/cask/test/cask/artifact/pkg_test.rb | 35 +++++++++++----------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'Library/Homebrew/cask/test') diff --git a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb index 8ee4e0a3c..cb30c4a0a 100644 --- a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb +++ b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb @@ -40,31 +40,32 @@ describe Hbc::Artifact::Pkg do end it "passes the choice changes xml to the system installer" do - pkg = Hbc::Artifact::Pkg.new(@cask, - command: Hbc::FakeSystemCommand) - - 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("Choices.xml")]) + pkg = Hbc::Artifact::Pkg.new(@cask, command: Hbc::FakeSystemCommand) - shutup do - pkg.install_phase - end - - IO.read(@cask.staged_path.join("Choices.xml")).must_equal <<-EOS.undent + file = mock + file.expects(:write).with <<-EOS.undent - - attributeSetting - 1 - choiceAttribute - selected - choiceIdentifier - choice1 - + \t + \t\tattributeSetting + \t\t1 + \t\tchoiceAttribute + \t\tselected + \t\tchoiceIdentifier + \t\tchoice1 + \t EOS + file.stubs path: Pathname.new("/tmp/choices.xml") + Tempfile.expects(:open).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 + pkg.install_phase + end end end end -- cgit v1.2.3 From 0c22cc45e6fe7da64f037fc2fc1556c0e967d55f Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Sun, 20 Nov 2016 14:09:16 +0900 Subject: cask: Call Tempfile#close(true) with the choices file to ensure it deleted --- Library/Homebrew/cask/test/cask/artifact/pkg_test.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Library/Homebrew/cask/test') diff --git a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb index cb30c4a0a..6e10177d1 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 -- cgit v1.2.3 From df635c8259dffca891424352765088a3b88a87d2 Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Mon, 21 Nov 2016 04:13:29 +0900 Subject: cask: compact the code --- Library/Homebrew/cask/test/cask/artifact/pkg_test.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Library/Homebrew/cask/test') diff --git a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb index 6e10177d1..3ed427763 100644 --- a/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb +++ b/Library/Homebrew/cask/test/cask/artifact/pkg_test.rb @@ -60,8 +60,9 @@ describe Hbc::Artifact::Pkg do EOS file.stubs path: Pathname.new("/tmp/choices.xml") - file.expects(:close).with true - Tempfile.expects(:new).returns file + file.expects(:close) + file.expects(:unlink) + Tempfile.expects(:open).yields 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")]) -- cgit v1.2.3