Skip to content

Commit 0cc1772

Browse files
committed
Fix logical race in TriggerBuilds_triggerBuilds_error
1 parent 7f17543 commit 0cc1772

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

Tests/AppTests/BuildTriggerTests.swift

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import Testing
1616

1717
@testable import App
1818

19+
import AsyncHTTPClient
1920
import Dependencies
2021
import Fluent
2122
import NIOConcurrencyHelpers
@@ -729,13 +730,15 @@ extension AllTests.BuildTriggerTests {
729730
$0.environment.siteURL = { "http://example.com" }
730731
$0.buildSystem.triggerBuild = BuildSystemClient.liveValue.triggerBuild
731732
$0.httpClient.post = { @Sendable _, _, body in
732-
defer { triggerCount.increment() }
733-
// let the 5th trigger succeed to ensure we don't early out on errors
734-
if triggerCount.value == 5 {
735-
return .created(webUrl: "http://web_url")
736-
} else {
737-
struct Response: Content { var message: String }
738-
return try .tooManyRequests(jsonEncode: Response(message: "Too many pipelines created in the last minute. Try again later."))
733+
return try triggerCount.withValue { triggerCount -> HTTPClient.Response in
734+
defer { triggerCount += 1 }
735+
// Let one trigger not fail
736+
if triggerCount == 5 {
737+
return .created(webUrl: "http://web_url")
738+
} else {
739+
struct Response: Content { var message: String }
740+
return try .tooManyRequests(jsonEncode: Response(message: "Too many pipelines created in the last minute. Try again later."))
741+
}
739742
}
740743
}
741744
} operation: {
@@ -749,6 +752,9 @@ extension AllTests.BuildTriggerTests {
749752
// MUT
750753
try await triggerBuilds(on: app.db, mode: .packageId(.id0, force: false))
751754

755+
// Ensure all triggers were attempted
756+
#expect(triggerCount.value == 32)
757+
752758
// validate that one build record is saved, for the successful trigger
753759
let count = try await Build.query(on: app.db).count()
754760
#expect(count == 1)

0 commit comments

Comments
 (0)