Skip to content

Commit b9e9469

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

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
@@ -1059,9 +1059,19 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
10591059
return params
10601060
}
10611061

1062-
public func makeBuildRequest(session: SWBBuildServiceSession, configuredTargets: [SWBTargetGUID], derivedDataPath: Basics.AbsolutePath, symbolGraphOptions: BuildOutput.SymbolGraphOptions?) async throws -> SWBBuildRequest {
1062+
public func makeBuildRequest(
1063+
session: SWBBuildServiceSession,
1064+
configuredTargets: [SWBTargetGUID],
1065+
derivedDataPath: Basics.AbsolutePath,
1066+
symbolGraphOptions: BuildOutput.SymbolGraphOptions?,
1067+
setToolchainSetting: Bool = true,
1068+
) async throws -> SWBBuildRequest {
10631069
var request = SWBBuildRequest()
1064-
request.parameters = try await makeBuildParameters(session: session, symbolGraphOptions: symbolGraphOptions)
1070+
request.parameters = try await makeBuildParameters(
1071+
session: session,
1072+
symbolGraphOptions: symbolGraphOptions,
1073+
setToolchainSetting: setToolchainSetting,
1074+
)
10651075
request.configuredTargets = configuredTargets.map { SWBConfiguredTarget(guid: $0.rawValue, parameters: request.parameters) }
10661076
request.useParallelTargets = true
10671077
request.useImplicitDependencies = false

Sources/_InternalTestSupport/MockBuildTestHelper.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public func mockBuildParameters(
9494
enableXCFrameworksOnLinux: Bool = false,
9595
prepareForIndexing: BuildParameters.PrepareForIndexingMode = .off,
9696
sanitizers: [Sanitizer] = [],
97+
numberOfWorkers: UInt32 = 3,
9798
) -> BuildParameters {
9899
try! BuildParameters(
99100
destination: destination,
@@ -104,7 +105,7 @@ public func mockBuildParameters(
104105
flags: flags,
105106
buildSystemKind: buildSystemKind,
106107
pkgConfigDirectories: [],
107-
workers: 3,
108+
workers: numberOfWorkers,
108109
sanitizers: EnabledSanitizers(Set(sanitizers)),
109110
indexStoreMode: indexStoreMode,
110111
prepareForIndexing: prepareForIndexing,

Tests/SwiftBuildSupportTests/SwiftBuildSystemTests.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,4 +316,36 @@ struct SwiftBuildSystemTests {
316316
#expect(synthesizedArgs.table["CLANG_INDEX_STORE_PATH"] == expectedPathValue)
317317
}
318318
}
319+
320+
@Test(
321+
arguments: [
322+
0,
323+
1,
324+
2,
325+
10,
326+
]
327+
)
328+
func numberOfWorkersBuildParameterSetsTheExpectedSwiftBuildRequest(
329+
expectedNumberOfWorkers: UInt32,
330+
) async throws {
331+
try await withTemporaryDirectory { tempDir in
332+
try await withInstantiatedSwiftBuildSystem(
333+
fromFixture: "PIFBuilder/Simple",
334+
buildParameters: mockBuildParameters(
335+
destination: .host,
336+
numberOfWorkers: expectedNumberOfWorkers,
337+
),
338+
) { swiftBuild, session, observabilityScope, buildParameters in
339+
let buildRequest = try await swiftBuild.makeBuildRequest(
340+
session: session,
341+
configuredTargets: [],
342+
derivedDataPath: tempDir,
343+
symbolGraphOptions: nil,
344+
setToolchainSetting: false
345+
)
346+
347+
#expect(buildRequest.schedulerLaneWidthOverride == expectedNumberOfWorkers)
348+
}
349+
}
350+
}
319351
}

0 commit comments

Comments
 (0)