diff --git a/src/app/config/manager.rs b/src/app/config/manager.rs index 349573f..213c289 100644 --- a/src/app/config/manager.rs +++ b/src/app/config/manager.rs @@ -1,7 +1,7 @@ use diesel; use diesel::prelude::*; -use std::time::Duration; use regex::Regex; +use std::time::Duration; use super::*; use crate::app::user; @@ -53,7 +53,8 @@ impl Manager { diesel::result::Error::NotFound => Error::IndexAlbumArtPatternNotFound, _ => Error::Unspecified, }) - .and_then(|s: String| Regex::new(&s).map_err(|_| Error::IndexAlbumArtPatternInvalid)) + .map(|s: String| format!("(?i){}", s)) + .and_then(|s| Regex::new(&s).map_err(|_| Error::IndexAlbumArtPatternInvalid)) } pub fn read(&self) -> anyhow::Result { diff --git a/src/app/index/test.rs b/src/app/index/test.rs index ad0543c..05010a7 100644 --- a/src/app/index/test.rs +++ b/src/app/index/test.rs @@ -64,6 +64,39 @@ fn test_metadata() { ); } +#[test] +fn test_artwork_pattern_case_insensitive() { + let target: PathBuf = ["test-data", "small-collection", "Khemmis", "Hunted"] + .iter() + .collect(); + + let mut song_path = target.clone(); + song_path.push("05 - Hunted.mp3"); + + let mut artwork_path = target.clone(); + artwork_path.push("folder.jpg"); + + let db = db::get_test_db(&test_name!()); + let vfs_manager = vfs::Manager::new(db.clone()); + let user_manager = user::Manager::new(db.clone()); + let config_manager = config::Manager::new(db.clone(), user_manager); + let index = Index::new(db.clone(), vfs_manager, config_manager); + index.update().unwrap(); + + let connection = db.connect().unwrap(); + let songs: Vec = songs::table + .filter(songs::title.eq("Hunted")) + .load(&connection) + .unwrap(); + + assert_eq!(songs.len(), 1); + let song = &songs[0]; + assert_eq!( + song.artwork, + Some(artwork_path.to_string_lossy().into_owned()) + ); +} + #[test] fn test_embedded_artwork() { let song_path: PathBuf = [