hive-forge dependency: don't drop the original errors if the verification read-back also fails

This commit is contained in:
damocles 2026-08-16 18:51:46 +02:00
commit 4f8b78a4d4

View file

@ -113,7 +113,26 @@ fn apply_and_verify(
if call_errors.is_empty() {
return Ok(());
}
let after = dependency_summaries(client, owner, name, number)?;
let after = match dependency_summaries(client, owner, name, number) {
Ok(deps) => deps,
Err(read_err) => {
// The read-back itself failed, so none of the per-dep errors
// above could be re-classified — surface all of them rather
// than dropping them behind the read-back's own error.
let originals: Vec<String> = call_errors
.iter()
.map(|(dep, e)| format!("#{dep}: {e:#}"))
.collect();
let verb = if adding { "add" } else { "remove" };
bail!(
"hive-forge dependency {verb}: {} call(s) reported an error, and the \
read-back to check whether they actually landed also failed ({read_err:#}). \
Original error(s):\n{}",
call_errors.len(),
originals.join("\n")
);
}
};
let present: HashSet<i64> = after
.iter()
.filter_map(|d| d.get("number").and_then(Value::as_i64))