@@ -754,12 +754,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
754
754
// We only care about prebuilt modules in macOS.
755
755
#if os(macOS)
756
756
func testPrebuiltModuleGenerationJobs( ) throws {
757
- #if arch(arm64)
758
- // Disabled on Apple Silicon
759
- // rdar://76609781
760
- throw XCTSkip ( )
761
- #endif
762
-
763
757
func getInputModules( _ job: Job ) -> [ String ] {
764
758
return job. inputs. map { input in
765
759
return input. file. absolutePath!. parentDirectory. basenameWithoutExt
@@ -791,7 +785,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
791
785
job. outputs [ 0 ] . file. basenameWithoutExt == basenameWithoutExt
792
786
}
793
787
}
794
-
795
788
let packageRootPath = URL ( fileURLWithPath: #file) . pathComponents
796
789
. prefix ( while: { $0 != " Tests " } ) . joined ( separator: " / " ) . dropFirst ( )
797
790
let testInputsPath = packageRootPath + " /TestInputs "
@@ -801,12 +794,12 @@ final class ExplicitModuleBuildTests: XCTestCase {
801
794
let interfaceMap = try collector. collectSwiftInterfaceMap ( )
802
795
803
796
// Check interface map always contain everything
804
- XCTAssertTrue ( interfaceMap [ " Swift " ] !. count == 2 )
805
- XCTAssertTrue ( interfaceMap [ " A " ] !. count == 2 )
806
- XCTAssertTrue ( interfaceMap [ " E " ] !. count == 2 )
797
+ XCTAssertTrue ( interfaceMap [ " Swift " ] !. count == 3 )
798
+ XCTAssertTrue ( interfaceMap [ " A " ] !. count == 3 )
799
+ XCTAssertTrue ( interfaceMap [ " E " ] !. count == 3 )
807
800
XCTAssertTrue ( interfaceMap [ " F " ] !. count == 3 )
808
- XCTAssertTrue ( interfaceMap [ " G " ] !. count == 2 )
809
- XCTAssertTrue ( interfaceMap [ " H " ] !. count == 2 )
801
+ XCTAssertTrue ( interfaceMap [ " G " ] !. count == 3 )
802
+ XCTAssertTrue ( interfaceMap [ " H " ] !. count == 3 )
810
803
811
804
try withTemporaryDirectory { path in
812
805
let main = path. appending ( component: " testPrebuiltModuleGenerationJobs.swift " )
@@ -823,7 +816,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
823
816
" -sdk " , mockSDKPath,
824
817
" -module-cache-path " , moduleCachePath
825
818
] )
826
-
827
819
let ( jobs, danglingJobs) = try driver. generatePrebuitModuleGenerationJobs ( with: interfaceMap,
828
820
into: VirtualPath ( path: " /tmp/ " ) . absolutePath!,
829
821
exhaustive: true )
@@ -832,24 +824,32 @@ final class ExplicitModuleBuildTests: XCTestCase {
832
824
XCTAssertTrue ( danglingJobs. allSatisfy { job in
833
825
job. moduleName == " MissingKit "
834
826
} )
835
- XCTAssertTrue ( jobs. count == 13 )
827
+ XCTAssertTrue ( jobs. count == 18 )
836
828
XCTAssertTrue ( jobs. allSatisfy { $0. outputs. count == 1 } )
837
829
XCTAssertTrue ( jobs. allSatisfy { $0. kind == . compile} )
838
830
XCTAssertTrue ( jobs. allSatisfy { $0. commandLine. contains ( . flag( " -compile-module-from-interface " ) ) } )
839
831
XCTAssertTrue ( jobs. allSatisfy { $0. commandLine. contains ( . flag( " -module-cache-path " ) ) } )
840
832
XCTAssertTrue ( try jobs. allSatisfy { $0. commandLine. contains ( . path( try VirtualPath ( path: moduleCachePath) ) ) } )
841
833
let HJobs = jobs. filter { $0. moduleName == " H " }
842
- XCTAssertTrue ( HJobs . count == 2 )
843
- XCTAssertTrue ( getInputModules ( HJobs [ 0 ] ) == [ " A " , " E " , " F " , " G " , " Swift " ] )
834
+ XCTAssertTrue ( HJobs . count == 3 )
835
+ // arm64
836
+ XCTAssertTrue ( getInputModules ( HJobs [ 0 ] ) == [ " A " , " A " , " E " , " E " , " F " , " F " , " G " , " G " , " Swift " , " Swift " ] )
837
+ // arm64e
844
838
XCTAssertTrue ( getInputModules ( HJobs [ 1 ] ) == [ " A " , " E " , " F " , " G " , " Swift " ] )
839
+ // x86_64
840
+ XCTAssertTrue ( getInputModules ( HJobs [ 2 ] ) == [ " A " , " E " , " F " , " G " , " Swift " ] )
845
841
XCTAssertTrue ( getOutputName ( HJobs [ 0 ] ) != getOutputName ( HJobs [ 1 ] ) )
842
+ XCTAssertTrue ( getOutputName ( HJobs [ 1 ] ) != getOutputName ( HJobs [ 2 ] ) )
846
843
checkInputOutputIntegrity ( HJobs [ 0 ] )
847
844
checkInputOutputIntegrity ( HJobs [ 1 ] )
845
+ checkInputOutputIntegrity ( HJobs [ 2 ] )
848
846
let GJobs = jobs. filter { $0. moduleName == " G " }
849
- XCTAssertTrue ( GJobs . count == 2 )
850
- XCTAssertTrue ( getInputModules ( GJobs [ 0 ] ) == [ " E " , " Swift " ] )
847
+ XCTAssertTrue ( GJobs . count == 3 )
848
+ XCTAssertTrue ( getInputModules ( GJobs [ 0 ] ) == [ " E " , " E " , " Swift " , " Swift " ] )
851
849
XCTAssertTrue ( getInputModules ( GJobs [ 1 ] ) == [ " E " , " Swift " ] )
850
+ XCTAssertTrue ( getInputModules ( GJobs [ 2 ] ) == [ " E " , " Swift " ] )
852
851
XCTAssertTrue ( getOutputName ( GJobs [ 0 ] ) != getOutputName ( GJobs [ 1 ] ) )
852
+ XCTAssertTrue ( getOutputName ( GJobs [ 1 ] ) != getOutputName ( GJobs [ 2 ] ) )
853
853
checkInputOutputIntegrity ( GJobs [ 0 ] )
854
854
checkInputOutputIntegrity ( GJobs [ 1 ] )
855
855
}
@@ -861,28 +861,33 @@ final class ExplicitModuleBuildTests: XCTestCase {
861
861
var driver = try Driver ( args: [ " swiftc " , main. pathString,
862
862
" -sdk " , mockSDKPath,
863
863
] )
864
-
865
864
let ( jobs, danglingJobs) = try driver. generatePrebuitModuleGenerationJobs ( with: interfaceMap,
866
865
into: VirtualPath ( path: " /tmp/ " ) . absolutePath!,
867
866
exhaustive: false )
868
867
869
868
XCTAssertTrue ( danglingJobs. isEmpty)
870
- XCTAssertTrue ( jobs. count == 13 )
869
+ XCTAssertTrue ( jobs. count == 18 )
871
870
XCTAssertTrue ( jobs. allSatisfy { $0. outputs. count == 1 } )
872
871
XCTAssertTrue ( jobs. allSatisfy { $0. kind == . compile} )
873
872
XCTAssertTrue ( jobs. allSatisfy { $0. commandLine. contains ( . flag( " -compile-module-from-interface " ) ) } )
874
873
let HJobs = jobs. filter { $0. moduleName == " H " }
875
- XCTAssertTrue ( HJobs . count == 2 )
876
- XCTAssertTrue ( getInputModules ( HJobs [ 0 ] ) == [ " A " , " E " , " F " , " G " , " Swift " ] )
874
+ XCTAssertTrue ( HJobs . count == 3 )
875
+ // arm64
876
+ XCTAssertTrue ( getInputModules ( HJobs [ 0 ] ) == [ " A " , " A " , " E " , " E " , " F " , " F " , " G " , " G " , " Swift " , " Swift " ] )
877
+ // arm64e
877
878
XCTAssertTrue ( getInputModules ( HJobs [ 1 ] ) == [ " A " , " E " , " F " , " G " , " Swift " ] )
879
+ // x86_64
880
+ XCTAssertTrue ( getInputModules ( HJobs [ 2 ] ) == [ " A " , " E " , " F " , " G " , " Swift " ] )
878
881
XCTAssertTrue ( getOutputName ( HJobs [ 0 ] ) != getOutputName ( HJobs [ 1 ] ) )
879
882
checkInputOutputIntegrity ( HJobs [ 0 ] )
880
883
checkInputOutputIntegrity ( HJobs [ 1 ] )
881
884
let GJobs = jobs. filter { $0. moduleName == " G " }
882
- XCTAssertTrue ( GJobs . count == 2 )
883
- XCTAssertTrue ( getInputModules ( GJobs [ 0 ] ) == [ " E " , " Swift " ] )
885
+ XCTAssertTrue ( GJobs . count == 3 )
886
+ XCTAssertTrue ( getInputModules ( GJobs [ 0 ] ) == [ " E " , " E " , " Swift " , " Swift " ] )
884
887
XCTAssertTrue ( getInputModules ( GJobs [ 1 ] ) == [ " E " , " Swift " ] )
888
+ XCTAssertTrue ( getInputModules ( GJobs [ 2 ] ) == [ " E " , " Swift " ] )
885
889
XCTAssertTrue ( getOutputName ( GJobs [ 0 ] ) != getOutputName ( GJobs [ 1 ] ) )
890
+ XCTAssertTrue ( getOutputName ( GJobs [ 1 ] ) != getOutputName ( GJobs [ 2 ] ) )
886
891
checkInputOutputIntegrity ( GJobs [ 0 ] )
887
892
checkInputOutputIntegrity ( GJobs [ 1 ] )
888
893
}
@@ -894,13 +899,12 @@ final class ExplicitModuleBuildTests: XCTestCase {
894
899
var driver = try Driver ( args: [ " swiftc " , main. pathString,
895
900
" -sdk " , mockSDKPath,
896
901
] )
897
-
898
902
let ( jobs, danglingJobs) = try driver. generatePrebuitModuleGenerationJobs ( with: interfaceMap,
899
903
into: VirtualPath ( path: " /tmp/ " ) . absolutePath!,
900
904
exhaustive: false )
901
905
902
906
XCTAssertTrue ( danglingJobs. isEmpty)
903
- XCTAssert ( jobs. count == 2 )
907
+ XCTAssert ( jobs. count == 3 )
904
908
XCTAssert ( jobs. allSatisfy { $0. moduleName == " Swift " } )
905
909
}
906
910
try withTemporaryDirectory { path in
@@ -911,13 +915,12 @@ final class ExplicitModuleBuildTests: XCTestCase {
911
915
var driver = try Driver ( args: [ " swiftc " , main. pathString,
912
916
" -sdk " , mockSDKPath,
913
917
] )
914
-
915
918
let ( jobs, danglingJobs) = try driver. generatePrebuitModuleGenerationJobs ( with: interfaceMap,
916
919
into: VirtualPath ( path: " /tmp/ " ) . absolutePath!,
917
920
exhaustive: false )
918
921
919
922
XCTAssertTrue ( danglingJobs. isEmpty)
920
- XCTAssertTrue ( jobs. count == 7 )
923
+ XCTAssertTrue ( jobs. count == 9 )
921
924
jobs. forEach ( { job in
922
925
// Check we don't pull in other modules than A, F and Swift
923
926
XCTAssertTrue ( [ " A " , " F " , " Swift " ] . contains ( job. moduleName) )
@@ -932,7 +935,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
932
935
var driver = try Driver ( args: [ " swiftc " , main. pathString,
933
936
" -sdk " , mockSDKPath,
934
937
] )
935
-
936
938
let ( jobs, _) = try driver. generatePrebuitModuleGenerationJobs ( with: interfaceMap,
937
939
into: VirtualPath ( path: " /tmp/ " ) . absolutePath!,
938
940
exhaustive: false )
0 commit comments