@@ -1148,6 +1148,39 @@ final class SwiftPMBuildSystemTests: XCTestCase {
1148
1148
XCTAssert ( compilerArgs. contains ( try versionSpecificManifestURL. filePath) )
1149
1149
}
1150
1150
}
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
+ }
1151
1184
}
1152
1185
1153
1186
private func assertArgumentsDoNotContain(
0 commit comments