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