From 4f8b78a4d4176895d57ff18a5431db7c494a2c25 Mon Sep 17 00:00:00 2001 From: damocles Date: Sun, 16 Aug 2026 18:51:46 +0200 Subject: [PATCH] hive-forge dependency: don't drop the original errors if the verification read-back also fails --- hive-forge/src/verbs/dependency.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/hive-forge/src/verbs/dependency.rs b/hive-forge/src/verbs/dependency.rs index 6fb4a349..64a9d943 100644 --- a/hive-forge/src/verbs/dependency.rs +++ b/hive-forge/src/verbs/dependency.rs @@ -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 = 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 = after .iter() .filter_map(|d| d.get("number").and_then(Value::as_i64))