Skip to content

Commit a76b970

Browse files
committed
[Tests] NFC: Add build plan tests for provided libraries
1 parent ec680ec commit a76b970

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed

Tests/BuildTests/BuildPlanTests.swift

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6260,4 +6260,112 @@ final class BuildPlanTests: XCTestCase {
62606260
let dylibs = Array(buildProduct.dylibs.map({$0.product.name})).sorted()
62616261
XCTAssertEqual(dylibs, ["BarLogging", "FooLogging"])
62626262
}
6263+
6264+
func testSwiftPackageWithProvidedLibraries() throws {
6265+
let fs = InMemoryFileSystem(
6266+
emptyFiles:
6267+
"/A/Sources/ATarget/main.swift",
6268+
"/Libraries/B/BTarget.swiftmodule",
6269+
"/Libraries/C/CTarget.swiftmodule"
6270+
)
6271+
6272+
let observability = ObservabilitySystem.makeForTesting()
6273+
let graph = try loadModulesGraph(
6274+
fileSystem: fs,
6275+
manifests: [
6276+
Manifest.createRootManifest(
6277+
displayName: "A",
6278+
path: "/A",
6279+
dependencies: [
6280+
.localSourceControl(path: "/B", requirement: .upToNextMajor(from: "1.0.0")),
6281+
.localSourceControl(path: "/C", requirement: .upToNextMajor(from: "1.0.0")),
6282+
],
6283+
products: [
6284+
ProductDescription(
6285+
name: "A",
6286+
type: .executable,
6287+
targets: ["ATarget"]
6288+
)
6289+
],
6290+
targets: [
6291+
TargetDescription(name: "ATarget", dependencies: ["BLibrary", "CLibrary"])
6292+
]
6293+
),
6294+
Manifest.createFileSystemManifest(
6295+
displayName: "B",
6296+
path: "/B",
6297+
products: [
6298+
ProductDescription(name: "BLibrary", type: .library(.automatic), targets: ["BTarget"]),
6299+
],
6300+
targets: [
6301+
TargetDescription(
6302+
name: "BTarget",
6303+
path: "/Libraries/B",
6304+
type: .providedLibrary
6305+
)
6306+
]
6307+
),
6308+
Manifest.createFileSystemManifest(
6309+
displayName: "C",
6310+
path: "/C",
6311+
products: [
6312+
ProductDescription(name: "CLibrary", type: .library(.automatic), targets: ["CTarget"]),
6313+
],
6314+
targets: [
6315+
TargetDescription(
6316+
name: "CTarget",
6317+
path: "/Libraries/C",
6318+
type: .providedLibrary
6319+
)
6320+
]
6321+
),
6322+
],
6323+
observabilityScope: observability.topScope
6324+
)
6325+
6326+
XCTAssertNoDiagnostics(observability.diagnostics)
6327+
6328+
let plan = try BuildPlan(
6329+
buildParameters: mockBuildParameters(),
6330+
graph: graph,
6331+
fileSystem: fs,
6332+
observabilityScope: observability.topScope
6333+
)
6334+
let result = try BuildPlanResult(plan: plan)
6335+
6336+
result.checkProductsCount(1)
6337+
result.checkTargetsCount(1)
6338+
6339+
XCTAssertMatch(
6340+
try result.target(for: "ATarget").swiftTarget().compileArguments(),
6341+
[
6342+
.anySequence,
6343+
"-I", "/Libraries/C",
6344+
"-I", "/Libraries/B",
6345+
.anySequence
6346+
]
6347+
)
6348+
6349+
let linkerArgs = try result.buildProduct(for: "A").linkArguments()
6350+
6351+
XCTAssertMatch(
6352+
linkerArgs,
6353+
[
6354+
.anySequence,
6355+
"-L", "/Libraries/B",
6356+
"-l", "BTarget",
6357+
.anySequence
6358+
]
6359+
)
6360+
6361+
XCTAssertMatch(
6362+
linkerArgs,
6363+
[
6364+
.anySequence,
6365+
"-L", "/Libraries/C",
6366+
"-l", "CTarget",
6367+
.anySequence
6368+
]
6369+
)
6370+
}
62636371
}

0 commit comments

Comments
 (0)