Skip to content

Commit ab7b332

Browse files
committed
Add an automated test to validate the --jobs arguments is passed to SwiftBuild correctly
1 parent 5ddd1a6 commit ab7b332

File tree

3 files changed

+46
-3
lines changed

3 files changed

+46
-3
lines changed

Sources/SwiftBuildSupport/SwiftBuildSystem.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,9 +1072,19 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
10721072
return params
10731073
}
10741074

1075-
public func makeBuildRequest(session: SWBBuildServiceSession, configuredTargets: [SWBTargetGUID], derivedDataPath: Basics.AbsolutePath, symbolGraphOptions: BuildOutput.SymbolGraphOptions?) async throws -> SWBBuildRequest {
1075+
public func makeBuildRequest(
1076+
session: SWBBuildServiceSession,
1077+
configuredTargets: [SWBTargetGUID],
1078+
derivedDataPath: Basics.AbsolutePath,
1079+
symbolGraphOptions: BuildOutput.SymbolGraphOptions?,
1080+
setToolchainSetting: Bool = true,
1081+
) async throws -> SWBBuildRequest {
10761082
var request = SWBBuildRequest()
1077-
request.parameters = try await makeBuildParameters(session: session, symbolGraphOptions: symbolGraphOptions)
1083+
request.parameters = try await makeBuildParameters(
1084+
session: session,
1085+
symbolGraphOptions: symbolGraphOptions,
1086+
setToolchainSetting: setToolchainSetting,
1087+
)
10781088
request.configuredTargets = configuredTargets.map { SWBConfiguredTarget(guid: $0.rawValue, parameters: request.parameters) }
10791089
request.useParallelTargets = true
10801090
request.useImplicitDependencies = false

Sources/_InternalTestSupport/MockBuildTestHelper.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public func mockBuildParameters(
9898
enableXCFrameworksOnLinux: Bool = false,
9999
prepareForIndexing: BuildParameters.PrepareForIndexingMode = .off,
100100
sanitizers: [Sanitizer] = [],
101+
numberOfWorkers: UInt32 = 3,
101102
) -> BuildParameters {
102103
try! BuildParameters(
103104
destination: destination,
@@ -108,7 +109,7 @@ public func mockBuildParameters(
108109
flags: flags,
109110
buildSystemKind: buildSystemKind,
110111
pkgConfigDirectories: [],
111-
workers: 3,
112+
workers: numberOfWorkers,
112113
sanitizers: EnabledSanitizers(Set(sanitizers)),
113114
indexStoreMode: indexStoreMode,
114115
prepareForIndexing: prepareForIndexing,

Tests/SwiftBuildSupportTests/SwiftBuildSystemTests.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,4 +269,36 @@ struct SwiftBuildSystemTests {
269269
)
270270
}
271271
}
272+
273+
@Test(
274+
arguments: [
275+
0,
276+
1,
277+
2,
278+
10,
279+
],
280+
)
281+
func numberOfWorkersBuildParameterSetsTheExpectedSwiftBuildRequest(
282+
expectedNumberOfWorkers: UInt32,
283+
) async throws {
284+
try await withTemporaryDirectory { tempDir in
285+
try await withInstantiatedSwiftBuildSystem(
286+
fromFixture: "PIFBuilder/Simple",
287+
buildParameters: mockBuildParameters(
288+
destination: .host,
289+
numberOfWorkers: expectedNumberOfWorkers,
290+
),
291+
) { swiftBuild, session, observabilityScope, buildParameters in
292+
let buildRequest = try await swiftBuild.makeBuildRequest(
293+
session: session,
294+
configuredTargets: [],
295+
derivedDataPath: tempDir,
296+
symbolGraphOptions: nil,
297+
setToolchainSetting: false
298+
)
299+
300+
#expect(buildRequest.schedulerLaneWidthOverride == expectedNumberOfWorkers)
301+
}
302+
}
303+
}
272304
}

0 commit comments

Comments
 (0)