@@ -2708,56 +2708,40 @@ final class SwiftDriverTests: XCTestCase {
27082708
27092709 func testSanitizerArgs( ) throws {
27102710 let commonArgs = [
2711- " swiftc " , " foo.swift " , " bar.swift " ,
2712- " -emit-executable " , " -target " , " x86_64-apple-macosx10.9 " ,
2713- " -module-name " , " Test "
2711+ " swiftc " , " foo.swift " , " bar.swift " , " -emit-executable " , " -module-name " , " Test " , " -use-ld=lld "
27142712 ]
2715- // FIXME: This doesn't work on Linux.
2716- #if os(macOS)
2713+
2714+ #if os(macOS) || os(Windows)
27172715 do {
27182716 // address sanitizer
27192717 var driver = try Driver ( args: commonArgs + [ " -sanitize=address " ] )
2720- let plannedJobs = try driver. planBuild ( )
2721-
2722- XCTAssertEqual ( plannedJobs. count, 3 )
2723-
2724- let compileJob = plannedJobs [ 0 ]
2725- let compileCmd = compileJob. commandLine
2726- XCTAssertTrue ( compileCmd. contains ( . flag( " -sanitize=address " ) ) )
2718+ let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
27272719
2728- let linkJob = plannedJobs [ 2 ]
2729- let linkCmd = linkJob . commandLine
2730- XCTAssertTrue ( linkCmd . contains ( . flag( " -fsanitize=address " ) ) )
2720+ XCTAssertEqual ( jobs . count , 3 )
2721+ XCTAssertJobInvocationMatches ( jobs [ 0 ] , . flag ( " -sanitize=address " ) )
2722+ XCTAssertJobInvocationMatches ( jobs [ 2 ] , . flag( " -fsanitize=address " ) )
27312723 }
27322724
27332725 do {
27342726 // address sanitizer on a dylib
27352727 var driver = try Driver ( args: commonArgs + [ " -sanitize=address " , " -emit-library " ] )
2736- let plannedJobs = try driver. planBuild ( )
2737-
2738- XCTAssertEqual ( plannedJobs. count, 3 )
2739-
2740- let compileJob = plannedJobs [ 0 ]
2741- let compileCmd = compileJob. commandLine
2742- XCTAssertTrue ( compileCmd. contains ( . flag( " -sanitize=address " ) ) )
2728+ let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
27432729
2744- let linkJob = plannedJobs [ 2 ]
2745- let linkCmd = linkJob . commandLine
2746- XCTAssertTrue ( linkCmd . contains ( . flag( " -fsanitize=address " ) ) )
2730+ XCTAssertEqual ( jobs . count , 3 )
2731+ XCTAssertJobInvocationMatches ( jobs [ 0 ] , . flag ( " -sanitize=address " ) )
2732+ XCTAssertJobInvocationMatches ( jobs [ 2 ] , . flag( " -fsanitize=address " ) )
27472733 }
27482734
27492735 do {
27502736 // *no* address sanitizer on a static lib
27512737 var driver = try Driver ( args: commonArgs + [ " -sanitize=address " , " -emit-library " , " -static " ] )
2752- let plannedJobs = try driver. planBuild ( )
2753-
2754- XCTAssertEqual ( plannedJobs. count, 3 )
2738+ let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
27552739
2756- let linkJob = plannedJobs [ 2 ]
2757- let linkCmd = linkJob. commandLine
2758- XCTAssertFalse ( linkCmd. contains ( . flag( " -fsanitize=address " ) ) )
2740+ XCTAssertEqual ( jobs. count, 3 )
2741+ XCTAssertFalse ( jobs [ 2 ] . commandLine. contains ( . flag( " -fsanitize=address " ) ) )
27592742 }
27602743
2744+ #if !os(Windows)
27612745 do {
27622746 // thread sanitizer
27632747 var driver = try Driver ( args: commonArgs + [ " -sanitize=thread " ] )
@@ -2773,21 +2757,16 @@ final class SwiftDriverTests: XCTestCase {
27732757 let linkCmd = linkJob. commandLine
27742758 XCTAssertTrue ( linkCmd. contains ( . flag( " -fsanitize=thread " ) ) )
27752759 }
2760+ #endif
27762761
27772762 do {
27782763 // undefined behavior sanitizer
27792764 var driver = try Driver ( args: commonArgs + [ " -sanitize=undefined " ] )
2780- let plannedJobs = try driver. planBuild ( )
2781-
2782- XCTAssertEqual ( plannedJobs. count, 3 )
2783-
2784- let compileJob = plannedJobs [ 0 ]
2785- let compileCmd = compileJob. commandLine
2786- XCTAssertTrue ( compileCmd. contains ( . flag( " -sanitize=undefined " ) ) )
2765+ let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
27872766
2788- let linkJob = plannedJobs [ 2 ]
2789- let linkCmd = linkJob . commandLine
2790- XCTAssertTrue ( linkCmd . contains ( . flag( " -fsanitize=undefined " ) ) )
2767+ XCTAssertEqual ( jobs . count , 3 )
2768+ XCTAssertJobInvocationMatches ( jobs [ 0 ] , . flag ( " -sanitize=undefined " ) )
2769+ XCTAssertJobInvocationMatches ( jobs [ 2 ] , . flag( " -fsanitize=undefined " ) )
27912770 }
27922771
27932772 // FIXME: This test will fail when run on macOS, because the driver uses
@@ -7221,7 +7200,7 @@ final class SwiftDriverTests: XCTestCase {
72217200 }
72227201
72237202 func testSanitizerArgsForTargets( ) throws {
7224- let targets = [ " x86_64-unknown-freebsd " , " x86_64-unknown-linux " , " x86_64-apple-macosx10.9 " ]
7203+ let targets = [ " x86_64-unknown-freebsd " , " x86_64-unknown-linux " , " x86_64-apple-macosx10.9 " , " x86_64-unknown-windows-msvc " ]
72257204 try targets. forEach {
72267205 var driver = try Driver ( args: [ " swiftc " , " -emit-module " , " -target " , $0, " foo.swift " ] )
72277206 _ = try driver. planBuild ( )
0 commit comments