From 1abad38daa0cf9e76f7a0a161f2d6c720410aea6 Mon Sep 17 00:00:00 2001 From: Brett Schwartz Date: Wed, 24 Dec 2025 11:14:28 -0700 Subject: [PATCH 1/3] Add regression test for #1909 (long filename rename not reported as unused) --- rslib/src/media/check.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) 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(()) + } } From 92ae74af9f854e726c62ac94abd46ca585ca71db Mon Sep 17 00:00:00 2001 From: Brett Schwartz Date: Wed, 24 Dec 2025 11:18:34 -0700 Subject: [PATCH 2/3] Add Brett Schwartz to CONTRIBUTORS --- CONTRIBUTORS | 1 + 1 file changed, 1 insertion(+) 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 ******************** From fc2166893d79a94adefb48a794d0b8a476bd6b68 Mon Sep 17 00:00:00 2001 From: Brett Schwartz Date: Thu, 1 Jan 2026 16:37:05 -0700 Subject: [PATCH 3/3] Use MAX_MEDIA_FILENAME_LENGTH constant and 'a' --- rslib/src/media/check.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/rslib/src/media/check.rs b/rslib/src/media/check.rs index 030090ce7..9545441c1 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::sync::media::MAX_MEDIA_FILENAME_LENGTH; use crate::tests::NoteAdder; fn common_setup() -> Result<(TempDir, MediaManager, Collection)> { @@ -871,14 +872,11 @@ 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); + let long_filename = format!("{}.mp3", "a".repeat(MAX_MEDIA_FILENAME_LENGTH + 1)); NoteAdder::basic(&mut col) .fields(&["test", &format!("[sound:{}]", long_filename)]) @@ -893,7 +891,7 @@ Unused: unused.jpg assert!(output.renamed.contains_key(&long_filename)); let new_filename = output.renamed.get(&long_filename).unwrap(); - assert!(new_filename.len() <= 120); + assert!(new_filename.len() <= MAX_MEDIA_FILENAME_LENGTH); assert!(!output.unused.contains(new_filename)); assert!(!output.missing.contains(new_filename));