Skip to content

[Tests] Do not share underlying Oracle for caching tests #1954

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 9, 2025
Merged
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
17 changes: 13 additions & 4 deletions Tests/SwiftDriverTests/CachingBuildTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,6 @@ private func checkCachingBuildJobDependencies(job: Job,


final class CachingBuildTests: XCTestCase {
let dependencyOracle = InterModuleDependencyOracle()

override func setUpWithError() throws {
try super.setUpWithError()

Expand Down Expand Up @@ -368,6 +366,7 @@ final class CachingBuildTests: XCTestCase {
let privateSwiftInterfacePath: AbsolutePath = path.appending(component: "testModuleOnlyJob.private.swiftinterface")
let modulePath: AbsolutePath = path.appending(component: "testModuleOnlyJob.swiftmodule")
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let dependencyOracle = InterModuleDependencyOracle()
var driver = try Driver(args: ["swiftc",
"-module-name", "ModuleOnly",
"-I", cHeadersPath.nativePathString(escaped: true),
Expand Down Expand Up @@ -423,6 +422,7 @@ final class CachingBuildTests: XCTestCase {
let privateSwiftInterfacePath: AbsolutePath = path.appending(component: "testSeparateModuleJob.private.swiftinterface")
let modulePath: AbsolutePath = path.appending(component: "testSeparateModuleJob.swiftmodule")
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let dependencyOracle = InterModuleDependencyOracle()
var driver = try Driver(args: ["swiftc",
"-module-name", "SeparateModuleJob",
"-I", cHeadersPath.nativePathString(escaped: true),
Expand Down Expand Up @@ -621,6 +621,7 @@ final class CachingBuildTests: XCTestCase {
try testInputsPath.appending(component: "ExplicitModuleBuilds")
.appending(component: "Swift")
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let dependencyOracle = InterModuleDependencyOracle()
var driver = try Driver(args: ["swiftc",
"-I", cHeadersPath.nativePathString(escaped: true),
"-I", swiftModuleInterfacesPath.nativePathString(escaped: true),
Expand Down Expand Up @@ -672,6 +673,7 @@ final class CachingBuildTests: XCTestCase {
$0.send("import Foo")
}
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let dependencyOracle = InterModuleDependencyOracle()

var fooBuildDriver = try Driver(args: ["swiftc",
"-explicit-module-build",
Expand Down Expand Up @@ -745,6 +747,7 @@ final class CachingBuildTests: XCTestCase {
.appending(component: "Swift")
let casPath = path.appending(component: "cas")
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let dependencyOracle = InterModuleDependencyOracle()
var driver = try Driver(args: ["swiftc",
"-I", cHeadersPath.nativePathString(escaped: true),
"-I", swiftModuleInterfacesPath.nativePathString(escaped: true),
Expand All @@ -756,6 +759,8 @@ final class CachingBuildTests: XCTestCase {
"-disable-clang-target",
main.nativePathString(escaped: true)] + sdkArgumentsForTesting,
interModuleDependencyOracle: dependencyOracle)
// Plan a build to initialize the scanner and the CAS underneath.
_ = try driver.planBuild()
let scanLibPath = try XCTUnwrap(driver.getSwiftScanLibPath())
try dependencyOracle.verifyOrCreateScannerInstance(swiftScanLibPath: scanLibPath)
let resolver = try ArgsResolver(fileSystem: localFileSystem)
Expand Down Expand Up @@ -858,6 +863,7 @@ final class CachingBuildTests: XCTestCase {

XCTAssertEqual(scanDiagnostics.count, 1)
XCTAssertEqual(scanDiagnostics[0].severity, .error)

}
}

Expand All @@ -882,6 +888,7 @@ final class CachingBuildTests: XCTestCase {
let mockBlocklistDir = try testInputsPath.appending(components: "Dummy.xctoolchain", "usr", "bin")
var env = ProcessEnv.block
env["_SWIFT_DRIVER_MOCK_BLOCK_LIST_DIR"] = mockBlocklistDir.nativePathString(escaped: true)
let dependencyOracle = InterModuleDependencyOracle()
var driver = try Driver(args: ["swiftc",
"-I", cHeadersPath.nativePathString(escaped: true),
"-I", swiftModuleInterfacesPath.nativePathString(escaped: true),
Expand Down Expand Up @@ -962,6 +969,7 @@ final class CachingBuildTests: XCTestCase {
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let bridgingHeaderpath: AbsolutePath =
cHeadersPath.appending(component: "Bridging.h")
let dependencyOracle = InterModuleDependencyOracle()
var driver = try Driver(args: ["swiftc",
"-I", cHeadersPath.nativePathString(escaped: true),
"-I", swiftModuleInterfacesPath.nativePathString(escaped: true),
Expand Down Expand Up @@ -1016,6 +1024,7 @@ final class CachingBuildTests: XCTestCase {
let sdkArgumentsForTesting = (try? Driver.sdkArgumentsForTesting()) ?? []
let bridgingHeaderpath: AbsolutePath =
cHeadersPath.appending(component: "Bridging.h")
let dependencyOracle = InterModuleDependencyOracle()
var driver = try Driver(args: ["swiftc",
"-I", cHeadersPath.nativePathString(escaped: true),
"-I", swiftModuleInterfacesPath.nativePathString(escaped: true),
Expand Down Expand Up @@ -1072,8 +1081,7 @@ final class CachingBuildTests: XCTestCase {
"-cache-compile-job", "-cas-path", casPath.nativePathString(escaped: true),
"-import-objc-header", bridgingHeaderpath.nativePathString(escaped: true),
"-working-directory", path.nativePathString(escaped: true),
main.nativePathString(escaped: true)] + sdkArgumentsForTesting,
interModuleDependencyOracle: dependencyOracle)
main.nativePathString(escaped: true)] + sdkArgumentsForTesting)
let jobs = try driver.planBuild()
jobs.forEach { job in
guard job.kind == .compile else {
Expand All @@ -1093,6 +1101,7 @@ final class CachingBuildTests: XCTestCase {
let casPath = path.appending(component: "cas")
let driver = try Driver(args: ["swiftc"])
let scanLibPath = try XCTUnwrap(driver.getSwiftScanLibPath())
let dependencyOracle = InterModuleDependencyOracle()
try dependencyOracle.verifyOrCreateScannerInstance(swiftScanLibPath: scanLibPath)
let cas = try dependencyOracle.getOrCreateCAS(pluginPath: nil, onDiskPath: casPath, pluginOptions: [])
guard cas.supportsSizeManagement else {
Expand Down