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