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