diff options
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/system_command.rb | 11 | ||||
| -rw-r--r-- | Library/Homebrew/cask/spec/cask/system_command_result_spec.rb | 74 | ||||
| -rw-r--r-- | Library/Homebrew/cask/spec/plist/parser_spec.rb | 75 |
4 files changed, 62 insertions, 100 deletions
diff --git a/Library/Homebrew/cask/lib/hbc.rb b/Library/Homebrew/cask/lib/hbc.rb index 80f1f1da0..c971cbd58 100644 --- a/Library/Homebrew/cask/lib/hbc.rb +++ b/Library/Homebrew/cask/lib/hbc.rb @@ -37,8 +37,6 @@ require "hbc/verify" require "hbc/version" require "utils" -require "vendor/plist/plist" - module Hbc include Locations include Scopes diff --git a/Library/Homebrew/cask/lib/hbc/system_command.rb b/Library/Homebrew/cask/lib/hbc/system_command.rb index 06ce276df..f26be8e62 100644 --- a/Library/Homebrew/cask/lib/hbc/system_command.rb +++ b/Library/Homebrew/cask/lib/hbc/system_command.rb @@ -1,5 +1,6 @@ require "open3" require "shellwords" +require "vendor/plist/plist" require "extend/io" @@ -167,16 +168,6 @@ module Hbc EOS end xml - rescue Plist::ParseError => e - raise CaskError, <<-EOS - Error parsing plist output from command. - command was: - #{command.utf8_inspect} - error was: - #{e} - output we attempted to parse: - #{output} - EOS end end end diff --git a/Library/Homebrew/cask/spec/cask/system_command_result_spec.rb b/Library/Homebrew/cask/spec/cask/system_command_result_spec.rb index a6a51301a..b15d4d437 100644 --- a/Library/Homebrew/cask/spec/cask/system_command_result_spec.rb +++ b/Library/Homebrew/cask/spec/cask/system_command_result_spec.rb @@ -1,16 +1,11 @@ +require "hbc/system_command" + describe Hbc::SystemCommand::Result do describe "::_parse_plist" do + subject { described_class._parse_plist(command, input) } let(:command) { Hbc::SystemCommand.new("/usr/bin/true", {}) } - let(:hdiutil_output) { + let(:plist) { <<-EOS.undent - Hello there! I am in no way XML am I?!?! - - That's a little silly... you were expexting XML here! - - What is a parser to do? - - Hopefully <not> explode! - <?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"> @@ -19,6 +14,26 @@ describe Hbc::SystemCommand::Result do <array> <dict> <key>content-hint</key> + <string>Apple_partition_map</string> + <key>dev-entry</key> + <string>/dev/disk3s1</string> + <key>potentially-mountable</key> + <false/> + <key>unmapped-content-hint</key> + <string>Apple_partition_map</string> + </dict> + <dict> + <key>content-hint</key> + <string>Apple_partition_scheme</string> + <key>dev-entry</key> + <string>/dev/disk3</string> + <key>potentially-mountable</key> + <false/> + <key>unmapped-content-hint</key> + <string>Apple_partition_scheme</string> + </dict> + <dict> + <key>content-hint</key> <string>Apple_HFS</string> <key>dev-entry</key> <string>/dev/disk3s2</string> @@ -37,11 +52,44 @@ describe Hbc::SystemCommand::Result do EOS } - it "ignores garbage output before xml starts" do - parsed = described_class._parse_plist(command, hdiutil_output) + context "when output contains garbage" do + let(:input) { + <<-EOS.undent + Hello there! I am in no way XML am I?!?! + + That's a little silly... you were expexting XML here! + + What is a parser to do? + + Hopefully <not> explode! + + #{plist} + EOS + } + + it "ignores garbage before xml" do + expect(subject.keys).to eq(["system-entities"]) + expect(subject["system-entities"].length).to eq(3) + end + end + + context "given a hdiutil output as input" do + let(:input) { plist } + + it "successfully parses it" do + expect(subject.keys).to eq(["system-entities"]) + expect(subject["system-entities"].length).to eq(3) + expect(subject["system-entities"].map { |e| e["dev-entry"] }) + .to eq(["/dev/disk3s1", "/dev/disk3", "/dev/disk3s2"]) + end + end + + context "given an empty input" do + let(:input) { "" } - expect(parsed.keys).to eq(["system-entities"]) - expect(parsed["system-entities"].length).to eq(1) + it "raises an error" do + expect { subject }.to raise_error(Hbc::CaskError, /Empty plist input/) + end end end end diff --git a/Library/Homebrew/cask/spec/plist/parser_spec.rb b/Library/Homebrew/cask/spec/plist/parser_spec.rb deleted file mode 100644 index a71b7ea2e..000000000 --- a/Library/Homebrew/cask/spec/plist/parser_spec.rb +++ /dev/null @@ -1,75 +0,0 @@ -require "spec_helper" - -describe Plist do - subject { described_class.parse_xml(input) } - - describe "::parse_xml" do - context "given a hdiutil output as input" do - let(:input) { - <<-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>system-entities</key> - <array> - <dict> - <key>content-hint</key> - <string>Apple_partition_map</string> - <key>dev-entry</key> - <string>/dev/disk3s1</string> - <key>potentially-mountable</key> - <false/> - <key>unmapped-content-hint</key> - <string>Apple_partition_map</string> - </dict> - <dict> - <key>content-hint</key> - <string>Apple_partition_scheme</string> - <key>dev-entry</key> - <string>/dev/disk3</string> - <key>potentially-mountable</key> - <false/> - <key>unmapped-content-hint</key> - <string>Apple_partition_scheme</string> - </dict> - <dict> - <key>content-hint</key> - <string>Apple_HFS</string> - <key>dev-entry</key> - <string>/dev/disk3s2</string> - <key>mount-point</key> - <string>/private/tmp/dmg.BhfS2g</string> - <key>potentially-mountable</key> - <true/> - <key>unmapped-content-hint</key> - <string>Apple_HFS</string> - <key>volume-kind</key> - <string>hfs</string> - </dict> - </array> - </dict> - </plist> - EOS - } - - it "successfully parses it" do - expect(subject.keys).to eq(["system-entities"]) - expect(subject["system-entities"].length).to eq(3) - expect(subject["system-entities"].map { |e| e["dev-entry"] }).to eq( - %w[ - /dev/disk3s1 - /dev/disk3 - /dev/disk3s2 - ], - ) - end - end - - context "given an empty input" do - let(:input) { "" } - - it { is_expected.to be_nil } - end - end -end |
