diff --git a/rslib/src/media/check.rs b/rslib/src/media/check.rs index 20d684826..030090ce7 100644 --- a/rslib/src/media/check.rs +++ b/rslib/src/media/check.rs @@ -552,6 +552,7 @@ pub(crate) mod test { use super::*; use crate::collection::CollectionBuilder; + use crate::tests::NoteAdder; fn common_setup() -> Result<(TempDir, MediaManager, Collection)> { let dir = tempdir()?; @@ -869,4 +870,33 @@ Unused: unused.jpg Ok(()) } + + /// Regression test for https://github.com/ankitects/anki/issues/1909 + #[test] + fn long_filename_rename_not_reported_as_unused() -> Result<()> { + let (_dir, mgr, mut col) = common_setup()?; + + // 65 Greek α characters (2 bytes each) + ".mp3" = 134 bytes + let long_filename = format!("{}.mp3", "α".repeat(65)); + assert!(long_filename.len() > 120); + + 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() <= 120); + assert!(!output.unused.contains(new_filename)); + assert!(!output.missing.contains(new_filename)); + + Ok(()) + } }