Skip to content

Commit fcaa635

Browse files
committed
fix: Don't assume crates are non-breaking just because they are in the user selection. (#422)
Crates shownig up 'early' in our list could cause the entire breakage-propagation to fail which led the crate to be ignored entirely even when their dependees changed their version. This led to inconsistent version requirements which would abort any cargo call. Fixes #422.
1 parent a046c70 commit fcaa635

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

cargo-smart-release/src/traverse.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -270,14 +270,18 @@ fn forward_propagate_breaking_changes_for_manifest_updates<'meta>(
270270
continue;
271271
}
272272
seen.insert(&dependant.id);
273-
let crate_is_known_already = crates.iter().find_map(|c| {
274-
(c.package.id == dependant.id).then(|| c.mode.version_adjustment_bump().map(|b| b.is_breaking()))
275-
});
273+
let crate_is_known_already = crates
274+
.iter()
275+
.find_map(|c| {
276+
(c.package.id == dependant.id)
277+
.then(|| c.mode.version_adjustment_bump().map(|b| b.is_breaking()))
278+
})
279+
.flatten();
276280

277281
let bump = breaking_version_bump(ctx, dependant, bump_when_needed)?;
278282
if bump.next_release_changes_manifest() {
279283
if crate_is_known_already.is_some() {
280-
let is_breaking = crate_is_known_already.flatten().unwrap_or(false);
284+
let is_breaking = crate_is_known_already.unwrap_or(false);
281285
if !is_breaking {
282286
log::debug!(
283287
"Wanted to mark '{}' for breaking manifest change, but its already known without breaking change.",

0 commit comments

Comments
 (0)