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