@@ -2708,39 +2708,56 @@ final class SwiftDriverTests: XCTestCase {
27082708
27092709 func testSanitizerArgs( ) throws {
27102710 let commonArgs = [
2711- " swiftc " , " foo.swift " , " bar.swift " , " -emit-executable " , " -module-name " , " Test " , " -use-ld=lld "
2711+ " swiftc " , " foo.swift " , " bar.swift " ,
2712+ " -emit-executable " , " -target " , " x86_64-apple-macosx10.9 " ,
2713+ " -module-name " , " Test "
27122714 ]
2713-
2715+ // FIXME: This doesn't work on Linux.
2716+ #if os(macOS)
27142717 do {
27152718 // address sanitizer
27162719 var driver = try Driver ( args: commonArgs + [ " -sanitize=address " ] )
2717- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2720+ let plannedJobs = try driver. planBuild ( )
27182721
2719- XCTAssertEqual ( jobs. count, 3 )
2720- XCTAssertJobInvocationMatches ( jobs [ 0 ] , . flag( " -sanitize=address " ) )
2721- XCTAssertJobInvocationMatches ( jobs [ 2 ] , . flag( " -fsanitize=address " ) )
2722+ XCTAssertEqual ( plannedJobs. count, 3 )
2723+
2724+ let compileJob = plannedJobs [ 0 ]
2725+ let compileCmd = compileJob. commandLine
2726+ XCTAssertTrue ( compileCmd. contains ( . flag( " -sanitize=address " ) ) )
2727+
2728+ let linkJob = plannedJobs [ 2 ]
2729+ let linkCmd = linkJob. commandLine
2730+ XCTAssertTrue ( linkCmd. contains ( . flag( " -fsanitize=address " ) ) )
27222731 }
27232732
27242733 do {
27252734 // address sanitizer on a dylib
27262735 var driver = try Driver ( args: commonArgs + [ " -sanitize=address " , " -emit-library " ] )
2727- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2736+ let plannedJobs = try driver. planBuild ( )
27282737
2729- XCTAssertEqual ( jobs. count, 3 )
2730- XCTAssertJobInvocationMatches ( jobs [ 0 ] , . flag( " -sanitize=address " ) )
2731- XCTAssertJobInvocationMatches ( jobs [ 2 ] , . flag( " -fsanitize=address " ) )
2738+ XCTAssertEqual ( plannedJobs. count, 3 )
2739+
2740+ let compileJob = plannedJobs [ 0 ]
2741+ let compileCmd = compileJob. commandLine
2742+ XCTAssertTrue ( compileCmd. contains ( . flag( " -sanitize=address " ) ) )
2743+
2744+ let linkJob = plannedJobs [ 2 ]
2745+ let linkCmd = linkJob. commandLine
2746+ XCTAssertTrue ( linkCmd. contains ( . flag( " -fsanitize=address " ) ) )
27322747 }
27332748
27342749 do {
27352750 // *no* address sanitizer on a static lib
27362751 var driver = try Driver ( args: commonArgs + [ " -sanitize=address " , " -emit-library " , " -static " ] )
2737- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2752+ let plannedJobs = try driver. planBuild ( )
27382753
2739- XCTAssertEqual ( jobs. count, 3 )
2740- XCTAssertFalse ( jobs [ 2 ] . commandLine. contains ( . flag( " -fsanitize=address " ) ) )
2754+ XCTAssertEqual ( plannedJobs. count, 3 )
2755+
2756+ let linkJob = plannedJobs [ 2 ]
2757+ let linkCmd = linkJob. commandLine
2758+ XCTAssertFalse ( linkCmd. contains ( . flag( " -fsanitize=address " ) ) )
27412759 }
27422760
2743- #if !os(Windows)
27442761 do {
27452762 // thread sanitizer
27462763 var driver = try Driver ( args: commonArgs + [ " -sanitize=thread " ] )
@@ -2756,17 +2773,21 @@ final class SwiftDriverTests: XCTestCase {
27562773 let linkCmd = linkJob. commandLine
27572774 XCTAssertTrue ( linkCmd. contains ( . flag( " -fsanitize=thread " ) ) )
27582775 }
2759- #endif
27602776
2761- #if os(macOS) || os(Windows)
27622777 do {
27632778 // undefined behavior sanitizer
27642779 var driver = try Driver ( args: commonArgs + [ " -sanitize=undefined " ] )
2765- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2780+ let plannedJobs = try driver. planBuild ( )
27662781
2767- XCTAssertEqual ( jobs. count, 3 )
2768- XCTAssertJobInvocationMatches ( jobs [ 0 ] , . flag( " -sanitize=undefined " ) )
2769- XCTAssertJobInvocationMatches ( jobs [ 2 ] , . flag( " -fsanitize=undefined " ) )
2782+ XCTAssertEqual ( plannedJobs. count, 3 )
2783+
2784+ let compileJob = plannedJobs [ 0 ]
2785+ let compileCmd = compileJob. commandLine
2786+ XCTAssertTrue ( compileCmd. contains ( . flag( " -sanitize=undefined " ) ) )
2787+
2788+ let linkJob = plannedJobs [ 2 ]
2789+ let linkCmd = linkJob. commandLine
2790+ XCTAssertTrue ( linkCmd. contains ( . flag( " -fsanitize=undefined " ) ) )
27702791 }
27712792
27722793 // FIXME: This test will fail when run on macOS, because the driver uses
@@ -7200,7 +7221,7 @@ final class SwiftDriverTests: XCTestCase {
72007221 }
72017222
72027223 func testSanitizerArgsForTargets( ) throws {
7203- let targets = [ " x86_64-unknown-freebsd " , " x86_64-unknown-linux " , " x86_64-apple-macosx10.9 " , " x86_64-unknown-windows-msvc " ]
7224+ let targets = [ " x86_64-unknown-freebsd " , " x86_64-unknown-linux " , " x86_64-apple-macosx10.9 " ]
72047225 try targets. forEach {
72057226 var driver = try Driver ( args: [ " swiftc " , " -emit-module " , " -target " , $0, " foo.swift " ] )
72067227 _ = try driver. planBuild ( )
0 commit comments