Skip to content

Commit fd336b6

Browse files
committed
Generalize testPrebuiltModuleGenerationJobs to also pass on AppleSilicon
1 parent 7d9e6a7 commit fd336b6

File tree

6 files changed

+54
-29
lines changed

6 files changed

+54
-29
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// swift-interface-format-version: 1.0
2+
// swift-module-flags: -module-name A
3+
import Swift
4+
public func FuncA() { }
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// swift-interface-format-version: 1.0
2+
// swift-module-flags: -module-name E
3+
import Swift
4+
public func FuncE() { }
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// swift-interface-format-version: 1.0
2+
// swift-module-flags: -module-name G
3+
import Swift
4+
import E
5+
public func FuncG() { }
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// swift-interface-format-version: 1.0
2+
// swift-module-flags: -module-name H
3+
import Swift
4+
import A
5+
import E
6+
import F
7+
import G
8+
public func FuncH() { }
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// swift-interface-format-version: 1.0
2+
// swift-module-flags: -parse-stdlib -module-name Swift

Tests/SwiftDriverTests/ExplicitModuleBuildTests.swift

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -754,12 +754,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
754754
// We only care about prebuilt modules in macOS.
755755
#if os(macOS)
756756
func testPrebuiltModuleGenerationJobs() throws {
757-
#if arch(arm64)
758-
// Disabled on Apple Silicon
759-
// rdar://76609781
760-
throw XCTSkip()
761-
#endif
762-
763757
func getInputModules(_ job: Job) -> [String] {
764758
return job.inputs.map { input in
765759
return input.file.absolutePath!.parentDirectory.basenameWithoutExt
@@ -791,7 +785,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
791785
job.outputs[0].file.basenameWithoutExt == basenameWithoutExt
792786
}
793787
}
794-
795788
let packageRootPath = URL(fileURLWithPath: #file).pathComponents
796789
.prefix(while: { $0 != "Tests" }).joined(separator: "/").dropFirst()
797790
let testInputsPath = packageRootPath + "/TestInputs"
@@ -801,12 +794,12 @@ final class ExplicitModuleBuildTests: XCTestCase {
801794
let interfaceMap = try collector.collectSwiftInterfaceMap()
802795

803796
// 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)
807800
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)
810803

811804
try withTemporaryDirectory { path in
812805
let main = path.appending(component: "testPrebuiltModuleGenerationJobs.swift")
@@ -821,7 +814,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
821814
var driver = try Driver(args: ["swiftc", main.pathString,
822815
"-sdk", mockSDKPath,
823816
])
824-
825817
let (jobs, danglingJobs) = try driver.generatePrebuitModuleGenerationJobs(with: interfaceMap,
826818
into: VirtualPath(path: "/tmp/").absolutePath!,
827819
exhaustive: true)
@@ -830,22 +822,30 @@ final class ExplicitModuleBuildTests: XCTestCase {
830822
XCTAssertTrue(danglingJobs.allSatisfy { job in
831823
job.moduleName == "MissingKit"
832824
})
833-
XCTAssertTrue(jobs.count == 13)
825+
XCTAssertTrue(jobs.count == 18)
834826
XCTAssertTrue(jobs.allSatisfy {$0.outputs.count == 1})
835827
XCTAssertTrue(jobs.allSatisfy {$0.kind == .compile})
836828
XCTAssertTrue(jobs.allSatisfy {$0.commandLine.contains(.flag("-compile-module-from-interface"))})
837829
let HJobs = jobs.filter { $0.moduleName == "H"}
838-
XCTAssertTrue(HJobs.count == 2)
839-
XCTAssertTrue(getInputModules(HJobs[0]) == ["A", "E", "F", "G", "Swift"])
830+
XCTAssertTrue(HJobs.count == 3)
831+
// arm64
832+
XCTAssertTrue(getInputModules(HJobs[0]) == ["A", "A", "E", "E", "F", "F", "G", "G", "Swift", "Swift"])
833+
// arm64e
840834
XCTAssertTrue(getInputModules(HJobs[1]) == ["A", "E", "F", "G", "Swift"])
835+
// x86_64
836+
XCTAssertTrue(getInputModules(HJobs[2]) == ["A", "E", "F", "G", "Swift"])
841837
XCTAssertTrue(getOutputName(HJobs[0]) != getOutputName(HJobs[1]))
838+
XCTAssertTrue(getOutputName(HJobs[1]) != getOutputName(HJobs[2]))
842839
checkInputOutputIntegrity(HJobs[0])
843840
checkInputOutputIntegrity(HJobs[1])
841+
checkInputOutputIntegrity(HJobs[2])
844842
let GJobs = jobs.filter { $0.moduleName == "G"}
845-
XCTAssertTrue(GJobs.count == 2)
846-
XCTAssertTrue(getInputModules(GJobs[0]) == ["E", "Swift"])
843+
XCTAssertTrue(GJobs.count == 3)
844+
XCTAssertTrue(getInputModules(GJobs[0]) == ["E", "E", "Swift", "Swift"])
847845
XCTAssertTrue(getInputModules(GJobs[1]) == ["E", "Swift"])
846+
XCTAssertTrue(getInputModules(GJobs[2]) == ["E", "Swift"])
848847
XCTAssertTrue(getOutputName(GJobs[0]) != getOutputName(GJobs[1]))
848+
XCTAssertTrue(getOutputName(GJobs[1]) != getOutputName(GJobs[2]))
849849
checkInputOutputIntegrity(GJobs[0])
850850
checkInputOutputIntegrity(GJobs[1])
851851
}
@@ -857,28 +857,33 @@ final class ExplicitModuleBuildTests: XCTestCase {
857857
var driver = try Driver(args: ["swiftc", main.pathString,
858858
"-sdk", mockSDKPath,
859859
])
860-
861860
let (jobs, danglingJobs) = try driver.generatePrebuitModuleGenerationJobs(with: interfaceMap,
862861
into: VirtualPath(path: "/tmp/").absolutePath!,
863862
exhaustive: false)
864863

865864
XCTAssertTrue(danglingJobs.isEmpty)
866-
XCTAssertTrue(jobs.count == 13)
865+
XCTAssertTrue(jobs.count == 18)
867866
XCTAssertTrue(jobs.allSatisfy {$0.outputs.count == 1})
868867
XCTAssertTrue(jobs.allSatisfy {$0.kind == .compile})
869868
XCTAssertTrue(jobs.allSatisfy {$0.commandLine.contains(.flag("-compile-module-from-interface"))})
870869
let HJobs = jobs.filter { $0.moduleName == "H"}
871-
XCTAssertTrue(HJobs.count == 2)
872-
XCTAssertTrue(getInputModules(HJobs[0]) == ["A", "E", "F", "G", "Swift"])
870+
XCTAssertTrue(HJobs.count == 3)
871+
// arm64
872+
XCTAssertTrue(getInputModules(HJobs[0]) == ["A", "A", "E", "E", "F", "F", "G", "G", "Swift", "Swift"])
873+
// arm64e
873874
XCTAssertTrue(getInputModules(HJobs[1]) == ["A", "E", "F", "G", "Swift"])
875+
// x86_64
876+
XCTAssertTrue(getInputModules(HJobs[2]) == ["A", "E", "F", "G", "Swift"])
874877
XCTAssertTrue(getOutputName(HJobs[0]) != getOutputName(HJobs[1]))
875878
checkInputOutputIntegrity(HJobs[0])
876879
checkInputOutputIntegrity(HJobs[1])
877880
let GJobs = jobs.filter { $0.moduleName == "G"}
878-
XCTAssertTrue(GJobs.count == 2)
879-
XCTAssertTrue(getInputModules(GJobs[0]) == ["E", "Swift"])
881+
XCTAssertTrue(GJobs.count == 3)
882+
XCTAssertTrue(getInputModules(GJobs[0]) == ["E", "E", "Swift", "Swift"])
880883
XCTAssertTrue(getInputModules(GJobs[1]) == ["E", "Swift"])
884+
XCTAssertTrue(getInputModules(GJobs[2]) == ["E", "Swift"])
881885
XCTAssertTrue(getOutputName(GJobs[0]) != getOutputName(GJobs[1]))
886+
XCTAssertTrue(getOutputName(GJobs[1]) != getOutputName(GJobs[2]))
882887
checkInputOutputIntegrity(GJobs[0])
883888
checkInputOutputIntegrity(GJobs[1])
884889
}
@@ -890,13 +895,12 @@ final class ExplicitModuleBuildTests: XCTestCase {
890895
var driver = try Driver(args: ["swiftc", main.pathString,
891896
"-sdk", mockSDKPath,
892897
])
893-
894898
let (jobs, danglingJobs) = try driver.generatePrebuitModuleGenerationJobs(with: interfaceMap,
895899
into: VirtualPath(path: "/tmp/").absolutePath!,
896900
exhaustive: false)
897901

898902
XCTAssertTrue(danglingJobs.isEmpty)
899-
XCTAssert(jobs.count == 2)
903+
XCTAssert(jobs.count == 3)
900904
XCTAssert(jobs.allSatisfy { $0.moduleName == "Swift" })
901905
}
902906
try withTemporaryDirectory { path in
@@ -907,13 +911,12 @@ final class ExplicitModuleBuildTests: XCTestCase {
907911
var driver = try Driver(args: ["swiftc", main.pathString,
908912
"-sdk", mockSDKPath,
909913
])
910-
911914
let (jobs, danglingJobs) = try driver.generatePrebuitModuleGenerationJobs(with: interfaceMap,
912915
into: VirtualPath(path: "/tmp/").absolutePath!,
913916
exhaustive: false)
914917

915918
XCTAssertTrue(danglingJobs.isEmpty)
916-
XCTAssertTrue(jobs.count == 7)
919+
XCTAssertTrue(jobs.count == 9)
917920
jobs.forEach({ job in
918921
// Check we don't pull in other modules than A, F and Swift
919922
XCTAssertTrue(["A", "F", "Swift"].contains(job.moduleName))
@@ -928,7 +931,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
928931
var driver = try Driver(args: ["swiftc", main.pathString,
929932
"-sdk", mockSDKPath,
930933
])
931-
932934
let (jobs, _) = try driver.generatePrebuitModuleGenerationJobs(with: interfaceMap,
933935
into: VirtualPath(path: "/tmp/").absolutePath!,
934936
exhaustive: false)

0 commit comments

Comments
 (0)