hive-forge dependency: don't drop the original errors if the verification read-back also fails
This commit is contained in:
parent
eefd971bd8
commit
4f8b78a4d4
1 changed files with 20 additions and 1 deletions
|
|
@ -113,7 +113,26 @@ fn apply_and_verify(
|
||||||
if call_errors.is_empty() {
|
if call_errors.is_empty() {
|
||||||
return Ok(());
|
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
|
let present: HashSet<i64> = after
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|d| d.get("number").and_then(Value::as_i64))
|
.filter_map(|d| d.get("number").and_then(Value::as_i64))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue