fix(dev-infra): distinguish gate results from states
This commit is contained in:
@@ -32,7 +32,8 @@ export type Mode = keyof typeof MODE_SCRIPTS
|
|||||||
|
|
||||||
const MODES = Object.keys(MODE_SCRIPTS) as Mode[]
|
const MODES = Object.keys(MODE_SCRIPTS) as Mode[]
|
||||||
|
|
||||||
type GateStatus = 'pending' | 'running' | 'passed' | 'failed' | 'skipped'
|
type GateResultStatus = 'passed' | 'failed' | 'skipped'
|
||||||
|
type GateState = 'pending' | 'running' | GateResultStatus
|
||||||
|
|
||||||
/** One scheduler-owned environment operation, resolved against inherited values only at spawn time. */
|
/** One scheduler-owned environment operation, resolved against inherited values only at spawn time. */
|
||||||
export type GateEnvironmentOverride =
|
export type GateEnvironmentOverride =
|
||||||
@@ -64,7 +65,7 @@ export interface GatePlan {
|
|||||||
/** The observed outcome of one gate process. */
|
/** The observed outcome of one gate process. */
|
||||||
export interface GateResult {
|
export interface GateResult {
|
||||||
gate: Gate
|
gate: Gate
|
||||||
status: GateStatus
|
status: GateResultStatus
|
||||||
durationMs: number
|
durationMs: number
|
||||||
stdout: string
|
stdout: string
|
||||||
stderr: string
|
stderr: string
|
||||||
@@ -874,7 +875,7 @@ async function runGates(
|
|||||||
execute: GateExecutor,
|
execute: GateExecutor,
|
||||||
observe: ResultObserver,
|
observe: ResultObserver,
|
||||||
): Promise<GateResult[]> {
|
): Promise<GateResult[]> {
|
||||||
const states = new Map<string, GateStatus>(allGates.map(gate => [gate.id, 'pending']))
|
const states = new Map<string, GateState>(allGates.map(gate => [gate.id, 'pending']))
|
||||||
const results = new Map<string, GateResult>()
|
const results = new Map<string, GateResult>()
|
||||||
const running: RunningGate[] = []
|
const running: RunningGate[] = []
|
||||||
|
|
||||||
@@ -936,7 +937,7 @@ async function runGates(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function dependenciesPassed(gate: Gate, states: Map<string, GateStatus>): boolean {
|
function dependenciesPassed(gate: Gate, states: Map<string, GateState>): boolean {
|
||||||
return (gate.needs ?? []).every(id => states.get(id) === 'passed')
|
return (gate.needs ?? []).every(id => states.get(id) === 'passed')
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -983,7 +984,7 @@ export async function runGate(gate: Gate): Promise<GateResult> {
|
|||||||
})
|
})
|
||||||
const { exitCode, signalCode } = outcome
|
const { exitCode, signalCode } = outcome
|
||||||
|
|
||||||
let status: GateStatus = exitCode === 0 && signalCode === null && spawnError === undefined ? 'passed' : 'failed'
|
let status: GateResultStatus = exitCode === 0 && signalCode === null && spawnError === undefined ? 'passed' : 'failed'
|
||||||
let error = spawnError
|
let error = spawnError
|
||||||
if (status === 'passed' && gate.verify !== undefined) {
|
if (status === 'passed' && gate.verify !== undefined) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user