require "test_helper"
describe Plist do
it "parses some hdiutil output okay" do
hdiutil_output = <<-HDIUTILOUTPUT
system-entities
content-hint
Apple_partition_map
dev-entry
/dev/disk3s1
potentially-mountable
unmapped-content-hint
Apple_partition_map
content-hint
Apple_partition_scheme
dev-entry
/dev/disk3
potentially-mountable
unmapped-content-hint
Apple_partition_scheme
content-hint
Apple_HFS
dev-entry
/dev/disk3s2
mount-point
/private/tmp/dmg.BhfS2g
potentially-mountable
unmapped-content-hint
Apple_HFS
volume-kind
hfs
HDIUTILOUTPUT
parsed = Plist.parse_xml(hdiutil_output)
parsed.keys.must_equal ["system-entities"]
parsed["system-entities"].length.must_equal 3
parsed["system-entities"].map { |e| e["dev-entry"] }.must_equal %w[
/dev/disk3s1
/dev/disk3
/dev/disk3s2
]
end
it "can ignore garbage output before xml starts" do
hdiutil_output = <<-HDIUTILOUTPUT
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 explode!
system-entities
content-hint
Apple_HFS
dev-entry
/dev/disk3s2
mount-point
/private/tmp/dmg.BhfS2g
potentially-mountable
unmapped-content-hint
Apple_HFS
volume-kind
hfs
HDIUTILOUTPUT
parsed = Plist.parse_xml(hdiutil_output)
parsed.keys.must_equal ["system-entities"]
parsed["system-entities"].length.must_equal 1
end
it "does not choke on empty input" do
Plist.parse_xml("").must_equal {}
end
end