diff --git a/crates/meilisearch/src/error.rs b/crates/meilisearch/src/error.rs index b13eb8d7c..13800adc1 100644 --- a/crates/meilisearch/src/error.rs +++ b/crates/meilisearch/src/error.rs @@ -64,7 +64,7 @@ pub enum MeilisearchHttpError { #[error(transparent)] IndexScheduler(#[from] index_scheduler::Error), #[error("{}", match .index_name { - Some(name) if !name.is_empty() => format!("Index `{}`: {error}", name), + Some(name) if !name.is_empty() => format!("Index `{}`: {error}", MeilisearchHttpError::index_name(name)), _ => format!("{error}") })] Milli { error: milli::Error, index_name: Option }, @@ -84,6 +84,14 @@ impl MeilisearchHttpError { pub(crate) fn from_milli(error: milli::Error, index_name: Option) -> Self { Self::Milli { error, index_name } } + + fn index_name(index_name: &str) -> &str { + if let Ok(_) = uuid::Uuid::parse_str(index_name) { + "[uuid]" + } else { + index_name + } + } } impl ErrorCode for MeilisearchHttpError { diff --git a/crates/meilisearch/tests/search/errors.rs b/crates/meilisearch/tests/search/errors.rs index 2b63a07b1..bce03f56b 100644 --- a/crates/meilisearch/tests/search/errors.rs +++ b/crates/meilisearch/tests/search/errors.rs @@ -729,7 +729,7 @@ async fn filter_invalid_attribute_string() { |response, code| { snapshot!(response, @r###" { - "message": "Index `test`: Attribute `many` is not filterable. Available filterable attribute patterns are: `title`.\n1:5 many = Glass", + "message": "Index `[uuid]`: Attribute `many` is not filterable. Available filterable attribute patterns are: `title`.\n1:5 many = Glass", "code": "invalid_search_filter", "type": "invalid_request", "link": "https://docs.meilisearch.com/errors#invalid_search_filter" diff --git a/crates/meilisearch/tests/search/mod.rs b/crates/meilisearch/tests/search/mod.rs index 70d76db0c..2cc882c71 100644 --- a/crates/meilisearch/tests/search/mod.rs +++ b/crates/meilisearch/tests/search/mod.rs @@ -17,11 +17,9 @@ mod restrict_searchable; mod search_queue; use meili_snap::{json_string, snapshot}; -use meilisearch::Opt; -use tempfile::TempDir; use crate::common::{ - default_settings, shared_index_with_documents, shared_index_with_nested_documents, + shared_index_with_documents, shared_index_with_nested_documents, shared_index_with_score_documents, Server, Value, DOCUMENTS, FRUITS_DOCUMENTS, NESTED_DOCUMENTS, SCORE_DOCUMENTS, VECTOR_DOCUMENTS, }; @@ -33,11 +31,10 @@ async fn test_settings_documents_indexing_swapping_and_search( query: &Value, test: impl Fn(Value, actix_http::StatusCode) + std::panic::UnwindSafe + Clone, ) { - let temp = TempDir::new().unwrap(); - let server = Server::new_with_options(Opt { ..default_settings(temp.path()) }).await.unwrap(); + let server = Server::new_shared(); eprintln!("Documents -> Settings -> test"); - let index = server.index("test"); + let index = server.unique_index(); let (task, code) = index.add_documents(documents.clone(), None).await; assert_eq!(code, 202, "{task}"); @@ -48,12 +45,9 @@ async fn test_settings_documents_indexing_swapping_and_search( index.wait_task(task.uid()).await.succeeded(); index.search(query.clone(), test.clone()).await; - let (task, code) = server.delete_index("test").await; - assert_eq!(code, 202, "{task}"); - server.wait_task(task.uid()).await.succeeded(); eprintln!("Settings -> Documents -> test"); - let index = server.index("test"); + let index = server.unique_index(); let (task, code) = index.update_settings(settings.clone()).await; assert_eq!(code, 202, "{task}"); @@ -64,9 +58,6 @@ async fn test_settings_documents_indexing_swapping_and_search( index.wait_task(task.uid()).await.succeeded(); index.search(query.clone(), test.clone()).await; - let (task, code) = server.delete_index("test").await; - assert_eq!(code, 202, "{task}"); - server.wait_task(task.uid()).await.succeeded(); } #[actix_rt::test]