fix(git-tools): ci-queue-wait — Gitea statuses:null no longer malformed; CI-less repos pushable again (#1129)
ci/woodpecker/push/publish Pipeline was successful

Co-authored-by: Ghost <>
This commit was merged in pull request #1129.
This commit is contained in:
Ghost
2026-08-19 22:08:34 +00:00
committed by ops-02
co-authored by Ghost <>
parent 1bdeed62eb
commit d339e8fd21
4 changed files with 213 additions and 10 deletions
@@ -85,10 +85,6 @@ function Get-QueueState {
$state = "$($Payload.state)".ToLowerInvariant()
}
if ($pending -contains $state) { return "pending" }
if ($failure -contains $state) { return "terminal-failure" }
if ($success -contains $state) { return "terminal-success" }
$values = @()
$statuses = @()
if ($null -ne $Payload.statuses) { $statuses = @($Payload.statuses) }
@@ -101,7 +97,15 @@ function Get-QueueState {
if (-not [string]::IsNullOrEmpty($v)) { $values += $v }
}
if ($values.Count -eq 0 -and [string]::IsNullOrEmpty($state)) { return "no-status" }
# Zero contexts is classified FIRST: Gitea reports a synthetic aggregate
# state of "pending" alongside statuses:null / total_count:0 (a commit
# with no CI at all), and honoring that aggregate would poll to the
# timeout. With zero contexts there is nothing to wait on.
if ($values.Count -eq 0) { return "no-status" }
if ($pending -contains $state) { return "pending" }
if ($failure -contains $state) { return "terminal-failure" }
if ($success -contains $state) { return "terminal-success" }
if (($values | Where-Object { $pending -contains $_ }).Count -gt 0) { return "pending" }
if (($values | Where-Object { $failure -contains $_ }).Count -gt 0) { return "terminal-failure" }
if ($values.Count -gt 0 -and ($values | Where-Object { -not ($success -contains $_) }).Count -eq 0) { return "terminal-success" }