@@ -16,6 +16,7 @@ import Testing
1616
1717@testable import App
1818
19+ import AsyncHTTPClient
1920import Dependencies
2021import Fluent
2122import 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