This commit is contained in:
Timmy
2026-04-10 01:04:09 +01:00
parent 0de9200d48
commit 962e3d4e7d
+20 -21
View File
@@ -223,10 +223,7 @@ pub enum PipelineEvent {
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TransitionError {
InvalidTransition {
from_stage: String,
event: String,
},
InvalidTransition { from_stage: String, event: String },
}
impl fmt::Display for TransitionError {
@@ -263,11 +260,23 @@ pub fn transition(state: Stage, event: PipelineEvent) -> Result<Stage, Transitio
// ── Forward path ────────────────────────────────────────────────
(Backlog, DepsMet) => Ok(Coding),
(Coding, GatesStarted) => Ok(Qa),
(Coding, QaSkipped { feature_branch, commits_ahead }) => Ok(Merge {
(
Coding,
QaSkipped {
feature_branch,
commits_ahead,
},
) => Ok(Merge {
feature_branch,
commits_ahead,
}),
(Qa, GatesPassed { feature_branch, commits_ahead }) => Ok(Merge {
(
Qa,
GatesPassed {
feature_branch,
commits_ahead,
},
) => Ok(Merge {
feature_branch,
commits_ahead,
}),
@@ -507,10 +516,7 @@ pub enum ProjectionError {
/// A required field is missing from the CRDT data.
MissingField(&'static str),
/// A field has an invalid value.
InvalidField {
field: &'static str,
detail: String,
},
InvalidField { field: &'static str, detail: String },
}
impl fmt::Display for ProjectionError {
@@ -575,8 +581,7 @@ fn project_stage(view: &PipelineItemView) -> Result<Stage, ProjectionError> {
// at least one commit).
Ok(Stage::Merge {
feature_branch: BranchName(branch),
commits_ahead: NonZeroU32::new(1)
.expect("1 is non-zero"),
commits_ahead: NonZeroU32::new(1).expect("1 is non-zero"),
})
}
"5_done" => {
@@ -1094,10 +1099,7 @@ mod tests {
assert!(matches!(e, ExecutionState::Running { .. }));
let e = execution_transition(e, ExecutionEvent::Exited { exit_code: 0 }).unwrap();
assert!(matches!(
e,
ExecutionState::Completed { exit_code: 0, .. }
));
assert!(matches!(e, ExecutionState::Completed { exit_code: 0, .. }));
}
#[test]
@@ -1313,8 +1315,8 @@ mod tests {
#[test]
fn event_bus_fires_to_all_subscribers() {
use std::sync::atomic::{AtomicU32, Ordering};
use std::sync::Arc;
use std::sync::atomic::{AtomicU32, Ordering};
struct CountingSub(Arc<AtomicU32>);
impl TransitionSubscriber for CountingSub {
@@ -1368,10 +1370,7 @@ mod tests {
from_stage: "Backlog".into(),
event: "Accepted".into(),
};
assert_eq!(
err.to_string(),
"invalid transition: Backlog + Accepted"
);
assert_eq!(err.to_string(), "invalid transition: Backlog + Accepted");
}
// ── ProjectionError Display ─────────────────────────────────────────