@@ -16,6 +16,7 @@ import Testing
16
16
17
17
@testable import App
18
18
19
+ import AsyncHTTPClient
19
20
import Dependencies
20
21
import Fluent
21
22
import NIOConcurrencyHelpers
@@ -729,13 +730,15 @@ extension AllTests.BuildTriggerTests {
729
730
$0. environment. siteURL = { " http://example.com " }
730
731
$0. buildSystem. triggerBuild = BuildSystemClient . liveValue. triggerBuild
731
732
$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
+ }
739
742
}
740
743
}
741
744
} operation: {
@@ -749,6 +752,9 @@ extension AllTests.BuildTriggerTests {
749
752
// MUT
750
753
try await triggerBuilds ( on: app. db, mode: . packageId( . id0, force: false ) )
751
754
755
+ // Ensure all triggers were attempted
756
+ #expect( triggerCount. value == 32 )
757
+
752
758
// validate that one build record is saved, for the successful trigger
753
759
let count = try await Build . query ( on: app. db) . count ( )
754
760
#expect( count == 1 )
0 commit comments