hive-forge: hard-error unresolved --label names; render dependency timeline events
This commit is contained in:
parent
10285ff764
commit
7bad72d354
4 changed files with 134 additions and 20 deletions
|
|
@ -196,6 +196,23 @@ fn format_event(ev: &Value) -> String {
|
|||
}
|
||||
}
|
||||
"comment_ref" | "issue_ref" => "referenced from another issue/PR".to_owned(),
|
||||
"add_dependency" | "remove_dependency" => {
|
||||
let verb = if event_type == "add_dependency" {
|
||||
"added dependency on"
|
||||
} else {
|
||||
"removed dependency on"
|
||||
};
|
||||
let dep = ev.get("dependent_issue");
|
||||
let number = dep
|
||||
.and_then(|d| d.get("number"))
|
||||
.and_then(Value::as_u64)
|
||||
.map_or_else(|| "?".to_owned(), |n| n.to_string());
|
||||
let title = dep
|
||||
.and_then(|d| d.get("title"))
|
||||
.and_then(Value::as_str)
|
||||
.unwrap_or("?");
|
||||
format!("{verb} #{number} ({title})")
|
||||
}
|
||||
"changed_target_branch" => "changed target branch".to_owned(),
|
||||
"review" => "submitted a review".to_owned(),
|
||||
"lock" => "locked the conversation".to_owned(),
|
||||
|
|
@ -344,6 +361,34 @@ mod tests {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn add_dependency_renders_target_issue() {
|
||||
let ev = serde_json::json!({
|
||||
"type": "add_dependency",
|
||||
"user": { "login": "mara" },
|
||||
"created_at": "2026-05-31T12:00:00Z",
|
||||
"dependent_issue": { "number": 2850, "title": "extract swarm controller" },
|
||||
});
|
||||
assert_eq!(
|
||||
format_event(&ev),
|
||||
"**mara @ 2026-05-31T12:00:00Z**: added dependency on #2850 (extract swarm controller)" // lint:allow: sample issue number in a test fixture string, not a tracker tag
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn remove_dependency_renders_target_issue() {
|
||||
let ev = serde_json::json!({
|
||||
"type": "remove_dependency",
|
||||
"user": { "login": "mara" },
|
||||
"created_at": "2026-05-31T12:00:00Z",
|
||||
"dependent_issue": { "number": 2850, "title": "extract swarm controller" },
|
||||
});
|
||||
assert_eq!(
|
||||
format_event(&ev),
|
||||
"**mara @ 2026-05-31T12:00:00Z**: removed dependency on #2850 (extract swarm controller)" // lint:allow: sample issue number in a test fixture string, not a tracker tag
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unknown_event_type_renders_bracketed_placeholder() {
|
||||
// Future-proofing: a forge schema bump that adds a new event
|
||||
|
|
|
|||
Loading…
Reference in a new issue