Skip to content

Unblock package bots by making tests more resilient to environment changes. #739

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions TestInputs/ExplicitModuleBuilds/Swift/Swift.swiftinterface

This file was deleted.

This file was deleted.

30 changes: 25 additions & 5 deletions Tests/SwiftDriverTests/ExplicitModuleBuildTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -327,12 +327,13 @@ final class ExplicitModuleBuildTests: XCTestCase {
let testInputsPath = packageRootPath + "/TestInputs"
let cHeadersPath : String = testInputsPath + "/ExplicitModuleBuilds/CHeaders"
let swiftModuleInterfacesPath : String = testInputsPath + "/ExplicitModuleBuilds/Swift"
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
var driver = try Driver(args: ["swiftc",
"-target", "x86_64-apple-macosx11.0",
"-I", cHeadersPath,
"-I", swiftModuleInterfacesPath,
"-experimental-explicit-module-build",
main.pathString])
main.pathString] + sdkArgumentsForTesting)

let jobs = try driver.planBuild()
// Figure out which Triples to use.
Expand All @@ -346,8 +347,10 @@ final class ExplicitModuleBuildTests: XCTestCase {

let pcmArgsCurrent = mainModuleSwiftDetails.extraPcmArgs
var pcmArgs9 = ["-Xcc","-target","-Xcc","x86_64-apple-macosx10.9"]
var pcmArgs15 = ["-Xcc","-target","-Xcc","x86_64-apple-macosx10.15"]
if driver.targetTriple.isDarwin {
pcmArgs9.append(contentsOf: ["-Xcc", "-fapinotes-swift-version=5"])
pcmArgs15.append(contentsOf: ["-Xcc", "-fapinotes-swift-version=5"])
}
let pcmFileEncoder = { (moduleInfo: ModuleInfo, hashParts: [String]) -> VirtualPath.Handle in
try! driver.explicitDependencyBuildPlanner!.targetEncodedClangModuleFilePath(for: moduleInfo,
Expand Down Expand Up @@ -436,6 +439,11 @@ final class ExplicitModuleBuildTests: XCTestCase {
try checkExplicitModuleBuildJob(job: job, pcmArgs: pcmArgs9, moduleId: .clang("SwiftShims"),
dependencyOracle: dependencyOracle,
pcmFileEncoder: pcmFileEncoder)
case .relative(pcmArgsEncodedRelativeModulePath(for: "SwiftShims", with: pcmArgs15,
pcmModuleNameEncoder: pcmModuleNameEncoder)):
try checkExplicitModuleBuildJob(job: job, pcmArgs: pcmArgs15, moduleId: .clang("SwiftShims"),
dependencyOracle: dependencyOracle,
pcmFileEncoder: pcmFileEncoder)
case .relative(pcmArgsEncodedRelativeModulePath(for: "SwiftShims", with: pcmArgsCurrent,
pcmModuleNameEncoder: pcmModuleNameEncoder)):
try checkExplicitModuleBuildJob(job: job, pcmArgs: pcmArgsCurrent, moduleId: .clang("SwiftShims"),
Expand Down Expand Up @@ -473,12 +481,13 @@ final class ExplicitModuleBuildTests: XCTestCase {
let testInputsPath = packageRootPath + "/TestInputs"
let cHeadersPath : String = testInputsPath + "/ExplicitModuleBuilds/CHeaders"
let swiftModuleInterfacesPath : String = testInputsPath + "/ExplicitModuleBuilds/Swift"
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
var driver = try Driver(args: ["swift",
"-target", "x86_64-apple-macosx11.0",
"-I", cHeadersPath,
"-I", swiftModuleInterfacesPath,
"-experimental-explicit-module-build",
main.pathString])
main.pathString] + sdkArgumentsForTesting)

let jobs = try driver.planBuild()

Expand All @@ -501,8 +510,10 @@ final class ExplicitModuleBuildTests: XCTestCase {

let pcmArgsCurrent = mainModuleSwiftDetails.extraPcmArgs
var pcmArgs9 = ["-Xcc","-target","-Xcc","x86_64-apple-macosx10.9"]
var pcmArgs15 = ["-Xcc","-target","-Xcc","x86_64-apple-macosx10.15"]
if driver.targetTriple.isDarwin {
pcmArgs9.append(contentsOf: ["-Xcc", "-fapinotes-swift-version=5"])
pcmArgs15.append(contentsOf: ["-Xcc", "-fapinotes-swift-version=5"])
}
let pcmFileEncoder = { (moduleInfo: ModuleInfo, hashParts: [String]) -> VirtualPath.Handle in
try! driver.explicitDependencyBuildPlanner!.targetEncodedClangModuleFilePath(for: moduleInfo,
Expand Down Expand Up @@ -560,6 +571,11 @@ final class ExplicitModuleBuildTests: XCTestCase {
try checkExplicitModuleBuildJob(job: job, pcmArgs: pcmArgs9, moduleId: .clang("SwiftShims"),
dependencyOracle: dependencyOracle,
pcmFileEncoder: pcmFileEncoder)
case .relative(pcmArgsEncodedRelativeModulePath(for: "SwiftShims", with: pcmArgs15,
pcmModuleNameEncoder: pcmModuleNameEncoder)):
try checkExplicitModuleBuildJob(job: job, pcmArgs: pcmArgs15, moduleId: .clang("SwiftShims"),
dependencyOracle: dependencyOracle,
pcmFileEncoder: pcmFileEncoder)
case .relative(pcmArgsEncodedRelativeModulePath(for: "SwiftShims", with: pcmArgsCurrent,
pcmModuleNameEncoder: pcmModuleNameEncoder)):
try checkExplicitModuleBuildJob(job: job, pcmArgs: pcmArgsCurrent, moduleId: .clang("SwiftShims"),
Expand Down Expand Up @@ -693,13 +709,14 @@ final class ExplicitModuleBuildTests: XCTestCase {
let testInputsPath = packageRootPath + "/TestInputs"
let cHeadersPath : String = testInputsPath + "/ExplicitModuleBuilds/CHeaders"
let swiftModuleInterfacesPath : String = testInputsPath + "/ExplicitModuleBuilds/Swift"
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let scannerCommand = ["-scan-dependencies",
"-import-prescan",
"-I", cHeadersPath,
"-I", swiftModuleInterfacesPath,
"-I", stdLibPath.description,
"-I", shimsPath.description,
main.pathString]
main.pathString] + sdkArgumentsForTesting

let imports =
try! dependencyOracle.getImports(workingDirectory: path,
Expand Down Expand Up @@ -741,12 +758,13 @@ final class ExplicitModuleBuildTests: XCTestCase {
let testInputsPath = packageRootPath + "/TestInputs"
let cHeadersPath : String = testInputsPath + "/ExplicitModuleBuilds/CHeaders"
let swiftModuleInterfacesPath : String = testInputsPath + "/ExplicitModuleBuilds/Swift"
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let scannerCommand = ["-scan-dependencies",
"-I", cHeadersPath,
"-I", swiftModuleInterfacesPath,
"-I", stdLibPath.description,
"-I", shimsPath.description,
main.pathString]
main.pathString] + sdkArgumentsForTesting

// Here purely to dump diagnostic output in a reasonable fashion when things go wrong.
let lock = NSLock()
Expand Down Expand Up @@ -810,12 +828,14 @@ final class ExplicitModuleBuildTests: XCTestCase {
let testInputsPath = packageRootPath + "/TestInputs"
let cHeadersPath : String = testInputsPath + "/ExplicitModuleBuilds/CHeaders"
let swiftModuleInterfacesPath : String = testInputsPath + "/ExplicitModuleBuilds/Swift"
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let scannerCommand = ["-scan-dependencies",
"-disable-implicit-concurrency-module-import",
"-I", cHeadersPath,
"-I", swiftModuleInterfacesPath,
"-I", stdLibPath.description,
"-I", shimsPath.description,
main.pathString]
main.pathString] + sdkArgumentsForTesting

let scanLibPath = try Driver.getScanLibPath(of: toolchain,
hostTriple: hostTriple,
Expand Down
6 changes: 6 additions & 0 deletions Tests/SwiftDriverTests/SwiftDriverTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2468,6 +2468,9 @@ final class SwiftDriverTests: XCTestCase {
func testClangTarget() throws {
var driver = try Driver(args: ["swiftc", "-target",
"x86_64-apple-macosx10.14", "foo.swift", "bar.swift"])
guard driver.isFrontendArgSupported(.clangTarget) else {
throw XCTSkip("Skipping: compiler does not support '-clang-target'")
}
let plannedJobs = try driver.planBuild()
XCTAssertEqual(plannedJobs.count, 3)
XCTAssert(plannedJobs[0].commandLine.contains(.flag("-target")))
Expand Down Expand Up @@ -3808,6 +3811,9 @@ final class SwiftDriverTests: XCTestCase {
do {
var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name",
"foo", "-user-module-version", "12.21"])
guard driver.isFrontendArgSupported(.userModuleVersion) else {
throw XCTSkip("Skipping: compiler does not support '-user-module-version'")
}
let plannedJobs = try driver.planBuild()
XCTAssertEqual(plannedJobs.count, 2)
let compileJob = plannedJobs[0]
Expand Down