Skip to content

Commit dfde4b7

Browse files
authored
Fix test track_deps_are_up_to_date (#189)
The bundled dependencies now have a slightly more complicated structure, so the test also needs to account for dependencies declared as below, when determining the available versions of a crate. ```toml rand_09 = { package = "rand", version = "0.9.2" } # pin rand = "0.10.0" # pin ```
1 parent a05d6fd commit dfde4b7

1 file changed

Lines changed: 23 additions & 10 deletions

File tree

track_deps_are_up_to_date/tests/track_deps_are_up_to_date.rs

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,31 @@ fn track_deps_are_up_to_date() {
3939
let deps = manifest["dependencies"].as_table().unwrap();
4040

4141
for (name, version) in deps {
42-
let Some(available_version) = available_deps.get(name) else {
43-
panic!("{exercise:?} is using a dependency that's not available: {name}")
44-
};
4542
let (major, minor) = parse_semver(version.as_str().unwrap());
46-
let (av_major, av_minor) = parse_semver(available_version.as_str().unwrap());
4743

48-
if major != av_major {
49-
panic!("{exercise:?} depends on {name} v{major}, but only v{av_major} is available")
50-
} else if major == 0 && minor != av_minor {
51-
panic!(
52-
"{exercise:?} depends on {name} v0.{minor}, but only v0.{av_minor} is available"
53-
)
44+
if available_deps
45+
.iter()
46+
.filter_map(|(k, v)| {
47+
if k == name {
48+
return Some(v);
49+
}
50+
if k.starts_with(name)
51+
&& let Some(table) = v.as_table()
52+
{
53+
return table.get("version");
54+
}
55+
None
56+
})
57+
.map(|v| parse_semver(v.as_str().unwrap()))
58+
.any(|(av_major, av_minor)| {
59+
major != 0 && major == av_major || major == 0 && minor == av_minor
60+
})
61+
{
62+
continue;
63+
} else if major != 0 {
64+
panic!("{exercise:?} depends on {name} v{major}, which is not available")
65+
} else {
66+
panic!("{exercise:?} depends on {name} v0.{minor}, which is not available")
5467
}
5568
}
5669
}

0 commit comments

Comments
 (0)