diff --git a/CONTRIBUTORS b/CONTRIBUTORS index a874a313d..d12afefcf 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -256,6 +256,7 @@ Eltaurus jariji Francisco Esteva SelfishPig +Brett Schwartz ******************** diff --git a/rslib/src/media/check.rs b/rslib/src/media/check.rs index 20d684826..9545441c1 100644 --- a/rslib/src/media/check.rs +++ b/rslib/src/media/check.rs @@ -552,6 +552,8 @@ pub(crate) mod test { use super::*; use crate::collection::CollectionBuilder; + use crate::sync::media::MAX_MEDIA_FILENAME_LENGTH; + use crate::tests::NoteAdder; fn common_setup() -> Result<(TempDir, MediaManager, Collection)> { let dir = tempdir()?; @@ -869,4 +871,30 @@ Unused: unused.jpg Ok(()) } + + #[test] + fn long_filename_rename_not_reported_as_unused() -> Result<()> { + let (_dir, mgr, mut col) = common_setup()?; + + let long_filename = format!("{}.mp3", "a".repeat(MAX_MEDIA_FILENAME_LENGTH + 1)); + + NoteAdder::basic(&mut col) + .fields(&["test", &format!("[sound:{}]", long_filename)]) + .add(&mut col); + + write_file(mgr.media_folder.join(&long_filename), "audio data")?; + + let output = { + let mut checker = col.media_checker()?; + checker.check()? + }; + + assert!(output.renamed.contains_key(&long_filename)); + let new_filename = output.renamed.get(&long_filename).unwrap(); + assert!(new_filename.len() <= MAX_MEDIA_FILENAME_LENGTH); + assert!(!output.unused.contains(new_filename)); + assert!(!output.missing.contains(new_filename)); + + Ok(()) + } }