diff --git a/src/tests.rs b/src/tests.rs index cdbd910..e39f26d 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -184,14 +184,13 @@ async fn remove_docs_success() { let mut config = Config::new(); config.api_base = http::Uri::try_from(server.url()).unwrap(); - let result = crate::api_remove_docs_response( + crate::api_remove_docs_response( http_send(crate::api_remove_docs_request(package, version, key, &config).unwrap()) .await .unwrap(), ) .unwrap(); - assert_eq!(result, ()); mock.assert(); } @@ -217,14 +216,13 @@ async fn revert_release_success() { let mut config = Config::new(); config.api_base = http::Uri::try_from(server.url()).unwrap(); - let result = crate::api_revert_release_response( + crate::api_revert_release_response( http_send(crate::api_revert_release_request(package, version, key, &config).unwrap()) .await .unwrap(), ) .unwrap(); - assert_eq!(result, ()); mock.assert(); } @@ -255,7 +253,7 @@ async fn add_owner_success() { let mut config = Config::new(); config.api_base = http::Uri::try_from(server.url()).unwrap(); - let result = crate::api_add_owner_response( + crate::api_add_owner_response( http_send(crate::api_add_owner_request( package, owner, level, key, &config, )) @@ -264,7 +262,6 @@ async fn add_owner_success() { ) .unwrap(); - assert_eq!(result, ()); mock.assert(); } @@ -294,7 +291,7 @@ async fn transfer_owner_success() { let mut config = Config::new(); config.api_base = http::Uri::try_from(server.url()).unwrap(); - let result = crate::api_transfer_owner_response( + crate::api_transfer_owner_response( http_send(crate::api_transfer_owner_request( package, owner, key, &config, )) @@ -303,7 +300,6 @@ async fn transfer_owner_success() { ) .unwrap(); - assert_eq!(result, ()); mock.assert(); } @@ -329,7 +325,7 @@ async fn remove_owner_success() { let mut config = Config::new(); config.api_base = http::Uri::try_from(server.url()).unwrap(); - let result = crate::api_remove_owner_response( + crate::api_remove_owner_response( http_send(crate::api_remove_owner_request( package, owner, key, &config, )) @@ -338,7 +334,6 @@ async fn remove_owner_success() { ) .unwrap(); - assert_eq!(result, ()); mock.assert(); } @@ -360,14 +355,13 @@ async fn remove_key_success() { let mut config = Config::new(); config.api_base = http::Uri::try_from(server.url()).unwrap(); - let result = crate::api_remove_api_key_response( + crate::api_remove_api_key_response( http_send(crate::api_remove_api_key_request(name, key, &config)) .await .unwrap(), ) .unwrap(); - assert_eq!(result, ()); mock.assert(); } @@ -389,14 +383,13 @@ async fn remove_key_success_2() { let mut config = Config::new(); config.api_base = http::Uri::try_from(server.url()).unwrap(); - let result = crate::api_remove_api_key_response( + crate::api_remove_api_key_response( http_send(crate::api_remove_api_key_request(name, key, &config)) .await .unwrap(), ) .unwrap(); - assert_eq!(result, ()); mock.assert(); } diff --git a/src/version/lexer.rs b/src/version/lexer.rs index 1c4811f..235e7be 100644 --- a/src/version/lexer.rs +++ b/src/version/lexer.rs @@ -74,10 +74,7 @@ pub enum Token<'input> { impl<'input> Token<'input> { /// Check if the current token is a whitespace token. pub fn is_whitespace(&self) -> bool { - match *self { - Whitespace(..) => true, - _ => false, - } + matches!(*self, Whitespace(..)) } } diff --git a/src/version/parser.rs b/src/version/parser.rs index b38110a..bcd3c38 100644 --- a/src/version/parser.rs +++ b/src/version/parser.rs @@ -48,10 +48,18 @@ impl fmt::Display for Error { EmptyPredicate => write!(fmt, "encountered empty predicate"), EmptyRange => write!(fmt, "encountered empty range"), MinorVersionMissing(major) => { - write!(fmt, "missing minor and patch versions: {:?}", major) + write!( + fmt, + "incomplete version: {}.x.x - versions must follow MAJOR.MINOR.PATCH format (e.g., {}.0.0)", + major, major + ) } PatchVersionMissing(major, minor) => { - write!(fmt, "missing patch version: {:?}.{:?}", major, minor) + write!( + fmt, + "incomplete version: {}.{}.x - versions must follow MAJOR.MINOR.PATCH format (e.g., {}.{}.0)", + major, minor, major, minor + ) } } } diff --git a/src/version/tests.rs b/src/version/tests.rs index b9732d6..2f84c15 100644 --- a/src/version/tests.rs +++ b/src/version/tests.rs @@ -469,3 +469,39 @@ fn missing_minor_has_correct_error_type() { fn missing_patch_has_correct_error_type() { assert_eq!(Version::parse("1.2"), Err(Error::PatchVersionMissing(1, 2))) } + +// Tests for improved error messages from issue #35 +#[test] +fn range_incomplete_patch_left_side() { + let error = Range::new(">= 0.34".to_string()).unwrap_err(); + let error_msg = error.to_string(); + assert!(error_msg.contains("incomplete version")); + assert!(error_msg.contains("0.34")); + assert!(error_msg.contains("MAJOR.MINOR.PATCH")); +} + +#[test] +fn range_incomplete_patch_right_side() { + let error = Range::new("< 2.0".to_string()).unwrap_err(); + let error_msg = error.to_string(); + assert!(error_msg.contains("incomplete version")); + assert!(error_msg.contains("2.0")); + assert!(error_msg.contains("MAJOR.MINOR.PATCH")); +} + +#[test] +fn range_incomplete_patch_both_sides() { + let error = Range::new(">= 0.34 and < 2.0.0".to_string()).unwrap_err(); + let error_msg = error.to_string(); + assert!(error_msg.contains("incomplete version")); + assert!(error_msg.contains("0.34")); +} + +#[test] +fn range_incomplete_major_only() { + let error = Range::new(">= 1".to_string()).unwrap_err(); + let error_msg = error.to_string(); + assert!(error_msg.contains("incomplete version")); + assert!(error_msg.contains("1.x.x")); + assert!(error_msg.contains("1.0.0")); +}