Skip to content

Commit 48e5ff9

Browse files
committed
FileList tests
1 parent f0295d9 commit 48e5ff9

File tree

1 file changed

+152
-0
lines changed

1 file changed

+152
-0
lines changed

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3136,6 +3136,158 @@ final class SwiftDriverTests: XCTestCase {
31363136
XCTAssertTrue(job.commandLine.contains(.flag("-use-static-resource-dir")))
31373137
}
31383138
}
3139+
3140+
func testFilelist() throws {
3141+
do {
3142+
var driver = try Driver(args: ["swiftc", "-emit-module", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0"])
3143+
let plannedJobs = try driver.planBuild()
3144+
3145+
let jobA = plannedJobs[0]
3146+
let flagA = jobA.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
3147+
let fileListArgumentA = jobA.commandLine[jobA.commandLine.index(after: flagA)]
3148+
guard case let .path(.fileList(_, fileListA)) = fileListArgumentA else {
3149+
XCTFail("Argument wasn't a filelist")
3150+
return
3151+
}
3152+
guard case let .outputFileMap(mapA) = fileListA else {
3153+
XCTFail("FileList wasn't OutputFileMap")
3154+
return
3155+
}
3156+
let filesA = try XCTUnwrap(mapA.entries[.relative(RelativePath("a.swift"))])
3157+
XCTAssertTrue(filesA.keys.contains(.swiftModule))
3158+
XCTAssertTrue(filesA.keys.contains(.swiftDocumentation))
3159+
XCTAssertTrue(filesA.keys.contains(.swiftSourceInfoFile))
3160+
3161+
let jobB = plannedJobs[1]
3162+
let flagB = jobB.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
3163+
let fileListArgumentB = jobB.commandLine[jobB.commandLine.index(after: flagB)]
3164+
guard case let .path(.fileList(_, fileListB)) = fileListArgumentB else {
3165+
XCTFail("Argument wasn't a filelist")
3166+
return
3167+
}
3168+
guard case let .outputFileMap(mapB) = fileListB else {
3169+
XCTFail("FileList wasn't OutputFileMap")
3170+
return
3171+
}
3172+
let filesB = try XCTUnwrap(mapB.entries[.relative(RelativePath("b.swift"))])
3173+
XCTAssertTrue(filesB.keys.contains(.swiftModule))
3174+
XCTAssertTrue(filesB.keys.contains(.swiftDocumentation))
3175+
XCTAssertTrue(filesB.keys.contains(.swiftSourceInfoFile))
3176+
3177+
let jobC = plannedJobs[2]
3178+
let flagC = jobC.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
3179+
let fileListArgumentC = jobC.commandLine[jobC.commandLine.index(after: flagC)]
3180+
guard case let .path(.fileList(_, fileListC)) = fileListArgumentC else {
3181+
XCTFail("Argument wasn't a filelist")
3182+
return
3183+
}
3184+
guard case let .outputFileMap(mapC) = fileListC else {
3185+
XCTFail("FileList wasn't OutputFileMap")
3186+
return
3187+
}
3188+
let filesC = try XCTUnwrap(mapC.entries[.relative(RelativePath("c.swift"))])
3189+
XCTAssertTrue(filesC.keys.contains(.swiftModule))
3190+
XCTAssertTrue(filesC.keys.contains(.swiftDocumentation))
3191+
XCTAssertTrue(filesC.keys.contains(.swiftSourceInfoFile))
3192+
}
3193+
3194+
do {
3195+
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-whole-module-optimization"])
3196+
let plannedJobs = try driver.planBuild()
3197+
let job = plannedJobs[0]
3198+
let inputsFlag = job.commandLine.firstIndex(of: .flag("-filelist"))!
3199+
let inputFileListArgument = job.commandLine[job.commandLine.index(after: inputsFlag)]
3200+
guard case let .path(.fileList(_, inputFileList)) = inputFileListArgument else {
3201+
XCTFail("Argument wasn't a filelist")
3202+
return
3203+
}
3204+
guard case let .list(inputs) = inputFileList else {
3205+
XCTFail("FileList wasn't List")
3206+
return
3207+
}
3208+
XCTAssertEqual(inputs, [.relative(RelativePath("a.swift")), .relative(RelativePath("b.swift")), .relative(RelativePath("c.swift"))])
3209+
3210+
let outputsFlag = job.commandLine.firstIndex(of: .flag("-output-filelist"))!
3211+
let outputFileListArgument = job.commandLine[job.commandLine.index(after: outputsFlag)]
3212+
guard case let .path(.fileList(_, outputFileList)) = outputFileListArgument else {
3213+
XCTFail("Argument wasn't a filelist")
3214+
return
3215+
}
3216+
guard case let .list(outputs) = outputFileList else {
3217+
XCTFail("FileList wasn't List")
3218+
return
3219+
}
3220+
XCTAssertEqual(outputs, [.relative(RelativePath("main.o"))])
3221+
}
3222+
3223+
do {
3224+
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1"])
3225+
let plannedJobs = try driver.planBuild()
3226+
let job = plannedJobs[0]
3227+
let outputsFlag = job.commandLine.firstIndex(of: .flag("-output-filelist"))!
3228+
let outputFileListArgument = job.commandLine[job.commandLine.index(after: outputsFlag)]
3229+
guard case let .path(.fileList(_, outputFileList)) = outputFileListArgument else {
3230+
XCTFail("Argument wasn't a filelist")
3231+
return
3232+
}
3233+
guard case let .list(outputs) = outputFileList else {
3234+
XCTFail("FileList wasn't List")
3235+
return
3236+
}
3237+
XCTAssertEqual(outputs, [.relative(RelativePath("a.o")), .relative(RelativePath("b.o")), .relative(RelativePath("c.o"))])
3238+
}
3239+
3240+
do {
3241+
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1", "-embed-bitcode"])
3242+
let plannedJobs = try driver.planBuild()
3243+
let job = plannedJobs[0]
3244+
let outputsFlag = job.commandLine.firstIndex(of: .flag("-output-filelist"))!
3245+
let outputFileListArgument = job.commandLine[job.commandLine.index(after: outputsFlag)]
3246+
guard case let .path(.fileList(_, outputFileList)) = outputFileListArgument else {
3247+
XCTFail("Argument wasn't a filelist")
3248+
return
3249+
}
3250+
guard case let .list(outputs) = outputFileList else {
3251+
XCTFail("FileList wasn't List")
3252+
return
3253+
}
3254+
XCTAssertEqual(outputs, [.temporary(RelativePath("a.bc")), .temporary(RelativePath("b.bc")), .temporary(RelativePath("c.bc"))])
3255+
}
3256+
3257+
do {
3258+
var driver = try Driver(args: ["swiftc", "-emit-library", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0"])
3259+
let plannedJobs = try driver.planBuild()
3260+
let job = plannedJobs[3]
3261+
let inputsFlag = job.commandLine.firstIndex(of: .flag("-filelist"))!
3262+
let inputFileListArgument = job.commandLine[job.commandLine.index(after: inputsFlag)]
3263+
guard case let .path(.fileList(_, inputFileList)) = inputFileListArgument else {
3264+
XCTFail("Argument wasn't a filelist")
3265+
return
3266+
}
3267+
guard case let .list(inputs) = inputFileList else {
3268+
XCTFail("FileList wasn't List")
3269+
return
3270+
}
3271+
XCTAssertEqual(inputs, [.temporary(RelativePath("a.o")), .temporary(RelativePath("b.o")), .temporary(RelativePath("c.o"))])
3272+
}
3273+
3274+
do {
3275+
var driver = try Driver(args: ["swiftc", "-emit-library", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1"])
3276+
let plannedJobs = try driver.planBuild()
3277+
let job = plannedJobs[1]
3278+
let inputsFlag = job.commandLine.firstIndex(of: .flag("-filelist"))!
3279+
let inputFileListArgument = job.commandLine[job.commandLine.index(after: inputsFlag)]
3280+
guard case let .path(.fileList(_, inputFileList)) = inputFileListArgument else {
3281+
XCTFail("Argument wasn't a filelist")
3282+
return
3283+
}
3284+
guard case let .list(inputs) = inputFileList else {
3285+
XCTFail("FileList wasn't List")
3286+
return
3287+
}
3288+
XCTAssertEqual(inputs, [.temporary(RelativePath("a.o")), .temporary(RelativePath("b.o")), .temporary(RelativePath("c.o"))])
3289+
}
3290+
}
31393291
}
31403292

31413293
func assertString(

0 commit comments

Comments
 (0)