@@ -2708,39 +2708,56 @@ final class SwiftDriverTests: XCTestCase {
2708
2708
2709
2709
func testSanitizerArgs( ) throws {
2710
2710
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 "
2712
2714
]
2713
-
2715
+ // FIXME: This doesn't work on Linux.
2716
+ #if os(macOS)
2714
2717
do {
2715
2718
// address sanitizer
2716
2719
var driver = try Driver ( args: commonArgs + [ " -sanitize=address " ] )
2717
- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2720
+ let plannedJobs = try driver. planBuild ( )
2718
2721
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 " ) ) )
2722
2731
}
2723
2732
2724
2733
do {
2725
2734
// address sanitizer on a dylib
2726
2735
var driver = try Driver ( args: commonArgs + [ " -sanitize=address " , " -emit-library " ] )
2727
- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2736
+ let plannedJobs = try driver. planBuild ( )
2728
2737
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 " ) ) )
2732
2747
}
2733
2748
2734
2749
do {
2735
2750
// *no* address sanitizer on a static lib
2736
2751
var driver = try Driver ( args: commonArgs + [ " -sanitize=address " , " -emit-library " , " -static " ] )
2737
- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2752
+ let plannedJobs = try driver. planBuild ( )
2738
2753
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 " ) ) )
2741
2759
}
2742
2760
2743
- #if !os(Windows)
2744
2761
do {
2745
2762
// thread sanitizer
2746
2763
var driver = try Driver ( args: commonArgs + [ " -sanitize=thread " ] )
@@ -2756,17 +2773,21 @@ final class SwiftDriverTests: XCTestCase {
2756
2773
let linkCmd = linkJob. commandLine
2757
2774
XCTAssertTrue ( linkCmd. contains ( . flag( " -fsanitize=thread " ) ) )
2758
2775
}
2759
- #endif
2760
2776
2761
- #if os(macOS) || os(Windows)
2762
2777
do {
2763
2778
// undefined behavior sanitizer
2764
2779
var driver = try Driver ( args: commonArgs + [ " -sanitize=undefined " ] )
2765
- let jobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2780
+ let plannedJobs = try driver. planBuild ( )
2766
2781
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 " ) ) )
2770
2791
}
2771
2792
2772
2793
// FIXME: This test will fail when run on macOS, because the driver uses
@@ -7200,7 +7221,7 @@ final class SwiftDriverTests: XCTestCase {
7200
7221
}
7201
7222
7202
7223
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 " ]
7204
7225
try targets. forEach {
7205
7226
var driver = try Driver ( args: [ " swiftc " , " -emit-module " , " -target " , $0, " foo.swift " ] )
7206
7227
_ = try driver. planBuild ( )
0 commit comments