@@ -211,13 +211,9 @@ final class SwiftDriverTests: XCTestCase {
211
211
212
212
XCTAssertNil ( try Driver ( args: [ " swiftc " , " -j " , " 0 " ] ) . numParallelJobs)
213
213
214
- XCTAssertEqual (
215
- try Driver (
216
- args: [ " swiftc " , " -j " , " 4 " , " -target " , " x86_64-apple-macosx10.15 " ] ,
217
- env: [ " SWIFTC_MAXIMUM_DETERMINISM " : " 1 " ]
218
- ) . numParallelJobs,
219
- 1
220
- )
214
+ var env = ProcessEnv . vars
215
+ env [ " SWIFTC_MAXIMUM_DETERMINISM " ] = " 1 "
216
+ XCTAssertEqual ( try Driver ( args: [ " swiftc " , " -j " , " 4 " ] , env: env) . numParallelJobs, 1 )
221
217
}
222
218
223
219
func testMultithreadingDiagnostics( ) throws {
@@ -234,10 +230,9 @@ final class SwiftDriverTests: XCTestCase {
234
230
$1. expect ( . error( " invalid value '0' in '-j' " ) )
235
231
}
236
232
237
- try assertDriverDiagnostics (
238
- args: " swiftc " , " -j " , " 8 " , " -target " , " x86_64-apple-macosx10.15 " ,
239
- env: [ " SWIFTC_MAXIMUM_DETERMINISM " : " 1 " ]
240
- ) {
233
+ var env = ProcessEnv . vars
234
+ env [ " SWIFTC_MAXIMUM_DETERMINISM " ] = " 1 "
235
+ try assertDriverDiagnostics ( args: " swiftc " , " -j " , " 8 " , env: env) {
241
236
$1. expect ( . remark( " SWIFTC_MAXIMUM_DETERMINISM overriding -j " ) )
242
237
}
243
238
}
@@ -323,27 +318,27 @@ final class SwiftDriverTests: XCTestCase {
323
318
}
324
319
325
320
func testStandardCompileJobs( ) throws {
326
- var driver1 = try Driver ( args: [ " swiftc " , " foo.swift " , " bar.swift " , " -module-name " , " Test " , " -target " , " x86_64-apple-macosx10.15 " ] )
321
+ var driver1 = try Driver ( args: [ " swiftc " , " foo.swift " , " bar.swift " , " -module-name " , " Test " ] )
327
322
let plannedJobs = try driver1. planBuild ( )
328
323
XCTAssertEqual ( plannedJobs. count, 3 )
329
324
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 1 )
330
325
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. first!. file, VirtualPath . temporary ( RelativePath ( " foo.o " ) ) )
331
326
XCTAssertEqual ( plannedJobs [ 1 ] . outputs. count, 1 )
332
327
XCTAssertEqual ( plannedJobs [ 1 ] . outputs. first!. file, VirtualPath . temporary ( RelativePath ( " bar.o " ) ) )
333
- XCTAssertTrue ( plannedJobs [ 2 ] . tool. name. contains ( " ld " ) )
328
+ XCTAssertTrue ( plannedJobs [ 2 ] . tool. name. contains ( driver1 . targetTriple . isDarwin ? " ld " : " clang " ) )
334
329
XCTAssertEqual ( plannedJobs [ 2 ] . outputs. count, 1 )
335
330
XCTAssertEqual ( plannedJobs [ 2 ] . outputs. first!. file, VirtualPath . relative ( RelativePath ( " Test " ) ) )
336
331
337
332
// Forwarding of arguments.
338
- var driver2 = try Driver ( args: [ " swiftc " , " -color-diagnostics " , " foo.swift " , " bar.swift " , " -working-directory " , " /tmp " , " -api-diff-data-file " , " diff.txt " , " -Xfrontend " , " -HI " , " -no-color-diagnostics " , " -target " , " powerpc-apple-macosx10.4 " , " - g" ] )
333
+ var driver2 = try Driver ( args: [ " swiftc " , " -color-diagnostics " , " foo.swift " , " bar.swift " , " -working-directory " , " /tmp " , " -api-diff-data-file " , " diff.txt " , " -Xfrontend " , " -HI " , " -no-color-diagnostics " , " -g " ] )
339
334
let plannedJobs2 = try driver2. planBuild ( )
340
335
XCTAssert ( plannedJobs2 [ 0 ] . commandLine. contains ( Job . ArgTemplate. path ( . absolute( try AbsolutePath ( validating: " /tmp/diff.txt " ) ) ) ) )
341
336
XCTAssert ( plannedJobs2 [ 0 ] . commandLine. contains ( . flag( " -HI " ) ) )
342
337
XCTAssert ( !plannedJobs2[ 0 ] . commandLine. contains ( . flag( " -Xfrontend " ) ) )
343
338
XCTAssert ( plannedJobs2 [ 0 ] . commandLine. contains ( . flag( " -no-color-diagnostics " ) ) )
344
339
XCTAssert ( !plannedJobs2[ 0 ] . commandLine. contains ( . flag( " -color-diagnostics " ) ) )
345
340
XCTAssert ( plannedJobs2 [ 0 ] . commandLine. contains ( . flag( " -target " ) ) )
346
- XCTAssert ( plannedJobs2 [ 0 ] . commandLine. contains ( . flag( " powerpc-apple-macosx10.4 " ) ) )
341
+ XCTAssert ( plannedJobs2 [ 0 ] . commandLine. contains ( . flag( driver2 . targetTriple . triple ) ) )
347
342
XCTAssert ( plannedJobs2 [ 0 ] . commandLine. contains ( . flag( " -enable-anonymous-context-mangled-names " ) ) )
348
343
349
344
var driver3 = try Driver ( args: [ " swiftc " , " foo.swift " , " bar.swift " , " -emit-library " , " -module-name " , " Test " ] )
@@ -752,7 +747,7 @@ final class SwiftDriverTests: XCTestCase {
752
747
}
753
748
754
749
func testBatchModeCompiles( ) throws {
755
- var driver1 = try Driver ( args: [ " swiftc " , " foo1.swift " , " bar1.swift " , " foo2.swift " , " bar2.swift " , " foo3.swift " , " bar3.swift " , " foo4.swift " , " bar4.swift " , " foo5.swift " , " bar5.swift " , " wibble.swift " , " -module-name " , " Test " , " -target " , " x86_64-apple-macosx10.15 " , " - enable-batch-mode" , " -driver-batch-count " , " 3 " ] )
750
+ var driver1 = try Driver ( args: [ " swiftc " , " foo1.swift " , " bar1.swift " , " foo2.swift " , " bar2.swift " , " foo3.swift " , " bar3.swift " , " foo4.swift " , " bar4.swift " , " foo5.swift " , " bar5.swift " , " wibble.swift " , " -module-name " , " Test " , " -enable-batch-mode " , " -driver-batch-count " , " 3 " ] )
756
751
let plannedJobs = try driver1. planBuild ( )
757
752
XCTAssertEqual ( plannedJobs. count, 4 )
758
753
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 4 )
@@ -761,7 +756,7 @@ final class SwiftDriverTests: XCTestCase {
761
756
XCTAssertEqual ( plannedJobs [ 1 ] . outputs. first!. file, VirtualPath . temporary ( RelativePath ( " foo3.o " ) ) )
762
757
XCTAssertEqual ( plannedJobs [ 2 ] . outputs. count, 3 )
763
758
XCTAssertEqual ( plannedJobs [ 2 ] . outputs. first!. file, VirtualPath . temporary ( RelativePath ( " foo5.o " ) ) )
764
- XCTAssertTrue ( plannedJobs [ 3 ] . tool. name. contains ( " ld " ) )
759
+ XCTAssertTrue ( plannedJobs [ 3 ] . tool. name. contains ( driver1 . targetTriple . isDarwin ? " ld " : " clang " ) )
765
760
XCTAssertEqual ( plannedJobs [ 3 ] . outputs. count, 1 )
766
761
XCTAssertEqual ( plannedJobs [ 3 ] . outputs. first!. file, VirtualPath . relative ( RelativePath ( " Test " ) ) )
767
762
}
@@ -899,12 +894,7 @@ final class SwiftDriverTests: XCTestCase {
899
894
XCTAssertTrue ( job. commandLine. contains ( . flag( " foo " ) ) )
900
895
901
896
XCTAssertFalse ( job. commandLine. contains ( . flag( " -- " ) ) )
902
-
903
- #if os(macOS)
904
- XCTAssertTrue ( job. extraEnvironment. keys. contains ( " DYLD_LIBRARY_PATH " ) )
905
- #elseif os(Linux)
906
- XCTAssertTrue ( job. extraEnvironment. keys. contains ( " LD_LIBRARY_PATH " ) )
907
- #endif
897
+ XCTAssertTrue ( job. extraEnvironment. keys. contains ( " \( driver. targetTriple. isDarwin ? " DYLD " : " LD " ) _LIBRARY_PATH " ) )
908
898
}
909
899
910
900
do {
@@ -924,7 +914,7 @@ final class SwiftDriverTests: XCTestCase {
924
914
XCTAssertTrue ( job. commandLine. contains ( . flag( " args " ) ) )
925
915
XCTAssertTrue ( job. commandLine. contains ( . flag( " -for=foo " ) ) )
926
916
}
927
- #if os(macOS)
917
+
928
918
do {
929
919
var driver = try Driver ( args: [ " swift " , " -L/path/to/lib " , " -F/path/to/framework " , " foo.swift " ] )
930
920
let plannedJobs = try driver. planBuild ( )
@@ -933,21 +923,13 @@ final class SwiftDriverTests: XCTestCase {
933
923
XCTAssertEqual ( job. inputs. count, 1 )
934
924
XCTAssertEqual ( job. inputs [ 0 ] . file, . relative( RelativePath ( " foo.swift " ) ) )
935
925
XCTAssertEqual ( job. outputs. count, 0 )
936
- XCTAssertTrue ( job. extraEnvironment. contains { $0 == " DYLD_LIBRARY_PATH " && $1. contains ( " /path/to/lib " ) } )
937
- XCTAssertTrue ( job. extraEnvironment. contains { $0 == " DYLD_FRAMEWORK_PATH " && $1. contains ( " /path/to/framework " ) } )
938
- }
939
- #elseif os(Linux)
940
- do {
941
- var driver = try Driver ( args: [ " swift " , " -L/path/to/lib " , " foo.swift " ] )
942
- let plannedJobs = try driver. planBuild ( )
943
- XCTAssertEqual ( plannedJobs. count, 1 )
944
- let job = plannedJobs [ 0 ]
945
- XCTAssertEqual ( job. inputs. count, 1 )
946
- XCTAssertEqual ( job. inputs [ 0 ] . file, . relative( RelativePath ( " foo.swift " ) ) )
947
- XCTAssertEqual ( job. outputs. count, 0 )
948
- XCTAssertTrue ( job. extraEnvironment. contains { $0 == " LD_LIBRARY_PATH " && $1. contains ( " /path/to/lib " ) } )
926
+ XCTAssertTrue ( job. extraEnvironment. contains {
927
+ $0 == " \( driver. targetTriple. isDarwin ? " DYLD " : " LD " ) _LIBRARY_PATH " && $1. contains ( " /path/to/lib " )
928
+ } )
929
+ if driver. targetTriple. isDarwin {
930
+ XCTAssertTrue ( job. extraEnvironment. contains { $0 == " DYLD_FRAMEWORK_PATH " && $1. contains ( " /path/to/framework " ) } )
931
+ }
949
932
}
950
- #endif
951
933
}
952
934
953
935
func testTargetTriple( ) throws {
@@ -974,9 +956,8 @@ final class SwiftDriverTests: XCTestCase {
974
956
975
957
func testDSYMGeneration( ) throws {
976
958
let commonArgs = [
977
- " swiftc " , " -target " , " x86_64-apple-macosx " ,
978
- " foo.swift " , " bar.swift " , " -emit-executable " ,
979
- " -module-name " , " Test "
959
+ " swiftc " , " foo.swift " , " bar.swift " ,
960
+ " -emit-executable " , " -module-name " , " Test "
980
961
]
981
962
982
963
do {
@@ -1001,29 +982,32 @@ final class SwiftDriverTests: XCTestCase {
1001
982
// dSYM generation (-g)
1002
983
var driver = try Driver ( args: commonArgs + [ " -g " ] )
1003
984
let plannedJobs = try driver. planBuild ( )
1004
-
1005
- XCTAssertEqual ( plannedJobs. count, 5 )
985
+
1006
986
let generateDSYMJob = plannedJobs. last!
1007
- XCTAssertEqual ( generateDSYMJob. kind, . generateDSYM)
1008
-
1009
- XCTAssertEqual ( generateDSYMJob. outputs. last? . file, try VirtualPath ( path: " Test.dSYM " ) )
1010
-
1011
987
let cmd = generateDSYMJob. commandLine
988
+
989
+ if generateDSYMJob. kind == . generateDSYM {
990
+ XCTAssertEqual ( plannedJobs. count, 5 )
991
+ XCTAssertEqual ( generateDSYMJob. outputs. last? . file, try VirtualPath ( path: " Test.dSYM " ) )
992
+ } else {
993
+ XCTAssertEqual ( plannedJobs. count, 4 )
994
+ }
995
+
1012
996
XCTAssertTrue ( cmd. contains ( . path( try VirtualPath ( path: " Test " ) ) ) )
1013
997
}
1014
998
}
1015
999
1016
1000
func testDOTFileEmission( ) throws {
1017
1001
var driver = try Driver ( args: [
1018
- " swiftc " , " -emit-executable " , " test.swift " , " -emit-module " ,
1019
- " -target " , " x86_64-apple-macosx "
1002
+ " swiftc " , " -emit-executable " , " test.swift " , " -emit-module "
1020
1003
] )
1021
1004
let plannedJobs = try driver. planBuild ( )
1022
1005
1023
1006
var serializer = DOTJobGraphSerializer ( jobs: plannedJobs)
1024
1007
var output = " "
1025
1008
serializer. writeDOT ( to: & output)
1026
1009
1010
+ let dynamicLinker = driver. targetTriple. isDarwin ? " ld " : " clang "
1027
1011
XCTAssertEqual ( output,
1028
1012
"""
1029
1013
digraph Jobs {
@@ -1040,26 +1024,25 @@ final class SwiftDriverTests: XCTestCase {
1040
1024
" test.swiftmodule " -> " mergeModule (swift) " [color=blue];
1041
1025
" mergeModule (swift) " -> " test.swiftmodule " [color=green];
1042
1026
" mergeModule (swift) " -> " test.swiftdoc " [color=green];
1043
- " link (ld ) " [style=bold];
1044
- " test.o " -> " link (ld ) " [color=blue];
1027
+ " link ( \( dynamicLinker ) ) " [style=bold];
1028
+ " test.o " -> " link ( \( dynamicLinker ) ) " [color=blue];
1045
1029
" test " [fontsize=12];
1046
- " link (ld ) " -> " test " [color=green];
1030
+ " link ( \( dynamicLinker ) ) " -> " test " [color=green];
1047
1031
}
1048
1032
1049
1033
""" )
1050
1034
}
1051
1035
1052
1036
func testRegressions( ) throws {
1053
- // FIXME: This doesn't work on Linux.
1054
- #if os(macOS)
1055
1037
var driverWithEmptySDK = try Driver ( args: [ " swiftc " , " -sdk " , " " , " file.swift " ] )
1056
1038
_ = try driverWithEmptySDK. planBuild ( )
1057
- #endif
1058
1039
}
1059
1040
1060
1041
func testToolchainUtilities( ) throws {
1061
- let swiftVersion = try DarwinToolchain ( env: ProcessEnv . vars) . swiftCompilerVersion ( )
1062
- assertString ( swiftVersion, contains: " Swift version " )
1042
+ let darwinSwiftVersion = try DarwinToolchain ( env: ProcessEnv . vars) . swiftCompilerVersion ( )
1043
+ let unixSwiftVersion = try GenericUnixToolchain ( env: ProcessEnv . vars) . swiftCompilerVersion ( )
1044
+ assertString ( darwinSwiftVersion, contains: " Swift version " )
1045
+ assertString ( unixSwiftVersion, contains: " Swift version " )
1063
1046
}
1064
1047
1065
1048
func testToolchainClangPath( ) {
0 commit comments