Skip to content

Commit 6f22e9d

Browse files
committed
test(schemas): Add PartialVersion unit tests
1 parent 3a2cc82 commit 6f22e9d

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

crates/cargo-util-schemas/src/core/partial_version.rs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,3 +189,64 @@ fn is_req(value: &str) -> bool {
189189
|| value.contains('x')
190190
|| value.contains('X')
191191
}
192+
193+
#[cfg(test)]
194+
mod test {
195+
use super::*;
196+
use snapbox::str;
197+
198+
#[test]
199+
fn parse_success() {
200+
let cases = &[
201+
// Valid pre-release
202+
("1.43.0-beta.1", str!["1.43.0-beta.1"]),
203+
];
204+
for (input, expected) in cases {
205+
let actual: Result<PartialVersion, _> = input.parse();
206+
let actual = match actual {
207+
Ok(result) => result.to_string(),
208+
Err(err) => format!("didn't pass: {err}"),
209+
};
210+
snapbox::assert_eq(expected.clone(), actual);
211+
}
212+
}
213+
214+
#[test]
215+
fn parse_errors() {
216+
let cases = &[
217+
// Disallow caret
218+
(
219+
"^1.43",
220+
str![[r#"unexpected version requirement, expected a version like "1.32""#]],
221+
),
222+
// Bad pre-release
223+
(
224+
"1.43-beta.1",
225+
str![[r#"unexpected prerelease field, expected a version like "1.32""#]],
226+
),
227+
// Weird wildcard
228+
(
229+
"x",
230+
str![[r#"unexpected version requirement, expected a version like "1.32""#]],
231+
),
232+
(
233+
"1.x",
234+
str![[r#"unexpected version requirement, expected a version like "1.32""#]],
235+
),
236+
(
237+
"1.1.x",
238+
str![[r#"unexpected version requirement, expected a version like "1.32""#]],
239+
),
240+
// Non-sense
241+
("foodaddle", str![[r#"expected a version like "1.32""#]]),
242+
];
243+
for (input, expected) in cases {
244+
let actual: Result<PartialVersion, _> = input.parse();
245+
let actual = match actual {
246+
Ok(result) => format!("didn't fail: {result:?}"),
247+
Err(err) => err.to_string(),
248+
};
249+
snapbox::assert_eq(expected.clone(), actual);
250+
}
251+
}
252+
}

0 commit comments

Comments
 (0)