@@ -1148,6 +1148,39 @@ final class SwiftPMBuildSystemTests: XCTestCase {
11481148 XCTAssert(compilerArgs.contains(try versionSpecificManifestURL.filePath))
11491149 }
11501150 }
1151+
1152+ func testBuildSettingsForInvalidManifest() async throws {
1153+ try await withTestScratchDir { tempDir in
1154+ try FileManager.default.createFiles(
1155+ root: tempDir,
1156+ files: [
1157+ "pkg/Sources/lib/a.swift": "",
1158+ "pkg/Package.swift": """
1159+ // swift-tools-version: 4.2
1160+ import PackageDescription
1161+ """,
1162+ ]
1163+ )
1164+ let packageRoot = try tempDir.appendingPathComponent("pkg").realpath
1165+ let manifestURL = packageRoot.appendingPathComponent("Package.swift")
1166+ let buildSystemManager = await BuildSystemManager(
1167+ buildSystemSpec: BuildSystemSpec(kind: .swiftPM, projectRoot: packageRoot),
1168+ toolchainRegistry: .forTesting,
1169+ options: SourceKitLSPOptions(),
1170+ connectionToClient: DummyBuildSystemManagerConnectionToClient(),
1171+ buildSystemTestHooks: BuildSystemTestHooks()
1172+ )
1173+ await buildSystemManager.waitForUpToDateBuildGraph()
1174+ let settings = await buildSystemManager.buildSettingsInferredFromMainFile(
1175+ for: DocumentURI(manifestURL),
1176+ language: .swift,
1177+ fallbackAfterTimeout: false
1178+ )
1179+ let compilerArgs = try XCTUnwrap(settings?.compilerArguments)
1180+ XCTAssert(compilerArgs.contains("-package-description-version"))
1181+ XCTAssert(compilerArgs.contains(try manifestURL.filePath))
1182+ }
1183+ }
11511184}
11521185
11531186private func assertArgumentsDoNotContain(
0 commit comments