diff --git a/tests/taglib/data/segfault.oga b/tests/taglib/data/segfault.oga new file mode 100644 index 000000000..e23c21706 Binary files /dev/null and b/tests/taglib/data/segfault.oga differ diff --git a/tests/taglib/main.rs b/tests/taglib/main.rs index c9c4c7321..b431252ba 100644 --- a/tests/taglib/main.rs +++ b/tests/taglib/main.rs @@ -10,7 +10,8 @@ mod test_id3v1; mod test_info; mod test_mp4; mod test_mpeg; +mod test_ogaflac; mod test_speex; +mod test_wav; mod test_wavpack; mod test_xiphcomment; -mod test_wav; diff --git a/tests/taglib/test_ogaflac.rs b/tests/taglib/test_ogaflac.rs new file mode 100644 index 000000000..80335ead2 --- /dev/null +++ b/tests/taglib/test_ogaflac.rs @@ -0,0 +1,45 @@ +use crate::temp_file; +use lofty::flac::FlacFile; +use lofty::ogg::VorbisComments; +use lofty::{Accessor, AudioFile, ParseOptions}; +use std::io::{Seek, SeekFrom}; + +#[test] +#[ignore] // TODO: We don't support FLAC in OGA +fn test_framing_bit() { + let mut file = temp_file!("tests/taglib/data/empty_flac.oga"); + + { + let mut f = FlacFile::read_from(&mut file, ParseOptions::new()).unwrap(); + file.rewind().unwrap(); + + let mut vorbis_comments = VorbisComments::new(); + vorbis_comments.set_artist(String::from("The Artist")); + f.set_vorbis_comments(vorbis_comments); + f.save_to(&mut file).unwrap(); + } + file.rewind().unwrap(); + { + let f = FlacFile::read_from(&mut file, ParseOptions::new()).unwrap(); + assert_eq!( + f.vorbis_comments().unwrap().artist().as_deref(), + Some("The Artist") + ); + + assert_eq!(file.seek(SeekFrom::End(0)).unwrap(), 9134); + } +} + +#[test] +#[ignore] // TODO +fn test_fuzzed_file() { + let mut file = temp_file!("tests/taglib/data/segfault.oga"); + let f = FlacFile::read_from(&mut file, ParseOptions::new()); + assert!(f.is_err()); +} + +#[test] +#[ignore] +fn test_split_packets() { + // Marker test, Lofty does not retain the packet information +}