@@ -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,16 +2773,21 @@ final class SwiftDriverTests: XCTestCase {
27562773 let linkCmd = linkJob. commandLine
27572774 XCTAssertTrue ( linkCmd. contains ( . flag( " -fsanitize=thread " ) ) )
27582775 }
2759- #endif
27602776
27612777 do {
27622778 // undefined behavior sanitizer
27632779 var driver = try Driver ( args: commonArgs + [ " -sanitize=undefined " ] )
2764- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2780+ let plannedJobs = try driver. planBuild ( )
27652781
2766- XCTAssertEqual ( jobs. count, 3 )
2767- XCTAssertJobInvocationMatches ( jobs [ 0 ] , . flag( " -sanitize=undefined " ) )
2768- 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 " ) ) )
27692791 }
27702792
27712793 // FIXME: This test will fail when run on macOS, because the driver uses
@@ -2816,6 +2838,7 @@ final class SwiftDriverTests: XCTestCase {
28162838 XCTAssertTrue ( linkCmd. contains ( . flag( " -fsanitize=scudo " ) ) )
28172839 }
28182840 #endif
2841+ #endif
28192842
28202843 // FIXME: This test will fail when not run on Android, because the driver uses
28212844 // the existence of the runtime support libraries to determine if
@@ -7198,7 +7221,7 @@ final class SwiftDriverTests: XCTestCase {
71987221 }
71997222
72007223 func testSanitizerArgsForTargets( ) throws {
7201- 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 " ]
72027225 try targets. forEach {
72037226 var driver = try Driver ( args: [ " swiftc " , " -emit-module " , " -target " , $0, " foo.swift " ] )
72047227 _ = try driver. planBuild ( )
0 commit comments