Skip to content

[NFC] Module Aliasing Test Cleanup #967

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
Jan 10, 2022
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
52 changes: 38 additions & 14 deletions Tests/SwiftDriverTests/ExplicitModuleBuildTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -606,16 +606,22 @@ final class ExplicitModuleBuildTests: XCTestCase {

// Create Bar.swiftmodule
var driver = try Driver(args: ["swiftc",
"-explicit-module-build",
srcBar.pathString.nativePathString().escaped(),
"-module-name",
"Bar",
"-emit-module",
"-emit-module-path", moduleBarPath,
"-I", stdLibPath.pathString.nativePathString().escaped(),
"-I", shimsPath.pathString.nativePathString().escaped(),
] + sdkArgumentsForTesting,
env: ProcessEnv.vars)
"-explicit-module-build",
"-working-directory",
path.pathString.nativePathString().escaped(),
srcBar.pathString.nativePathString().escaped(),
"-module-name",
"Bar",
"-emit-module",
"-emit-module-path", moduleBarPath,
"-I", stdLibPath.pathString.nativePathString().escaped(),
"-I", shimsPath.pathString.nativePathString().escaped(),
] + sdkArgumentsForTesting,
env: ProcessEnv.vars)
guard driver.isFrontendArgSupported(.moduleAlias) else {
throw XCTSkip("Skipping: compiler does not support '-module-alias'")
}

let jobs = try driver.planBuild()
try driver.run(jobs: jobs)
XCTAssertFalse(driver.diagnosticEngine.hasErrors)
Expand All @@ -635,6 +641,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
var driverA = try Driver(args: ["swiftc",
"-nonlib-dependency-scanner",
"-explicit-module-build",
"-working-directory",
path.pathString.nativePathString().escaped(),
srcFoo.pathString.nativePathString().escaped(),
"-module-alias", "Car=Bar",
"-I",
Expand All @@ -659,6 +667,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
// Module alias with the default scanner (driver scanner)
var driverB = try Driver(args: ["swiftc",
"-explicit-module-build",
"-working-directory",
path.pathString.nativePathString().escaped(),
srcFoo.pathString.nativePathString().escaped(),
"-module-alias", "Car=Bar",
"-I",
Expand Down Expand Up @@ -707,6 +717,9 @@ final class ExplicitModuleBuildTests: XCTestCase {
"-I",
swiftModuleInterfacesPath.nativePathString().escaped(),
])
guard driverA.isFrontendArgSupported(.moduleAlias) else {
throw XCTSkip("Skipping: compiler does not support '-module-alias'")
}

// Resulting graph should contain the real module name Bar
let dependencyGraphA = try driverA.gatherModuleDependencies()
Expand All @@ -728,6 +741,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
"-explicit-module-build",
srcFoo.pathString.nativePathString().escaped(),
"-module-alias", "Car=F",
"-working-directory",
path.pathString.nativePathString().escaped(),
"-I",
swiftModuleInterfacesPath.nativePathString().escaped(),
])
Expand All @@ -752,6 +767,11 @@ final class ExplicitModuleBuildTests: XCTestCase {
func testModuleAliasingWithImportPrescan() throws {
let (_, _, toolchain, hostTriple) = try getDriverArtifactsForScanning()

let dummyDriver = try Driver(args: ["swiftc", "-module-name", "dummyDriverCheck", "test.swift"])
guard dummyDriver.isFrontendArgSupported(.moduleAlias) else {
throw XCTSkip("Skipping: compiler does not support '-module-alias'")
}

// The dependency oracle wraps an instance of libSwiftScan and ensures thread safety across
// queries.
let dependencyOracle = InterModuleDependencyOracle()
Expand Down Expand Up @@ -805,13 +825,19 @@ final class ExplicitModuleBuildTests: XCTestCase {
"-explicit-module-build",
"-module-name",
"Bar",
"-working-directory",
path.pathString.nativePathString().escaped(),
"-emit-module",
"-emit-module-path", moduleBarPath,
srcBar.pathString.nativePathString().escaped(),
"-I", stdLibPath.pathString.nativePathString().escaped(),
"-I", shimsPath.pathString.nativePathString().escaped(),
] + sdkArgumentsForTesting,
env: ProcessEnv.vars)
guard driver1.isFrontendArgSupported(.moduleAlias) else {
throw XCTSkip("Skipping: compiler does not support '-module-alias'")
}

let jobs1 = try driver1.planBuild()
try driver1.run(jobs: jobs1)
XCTAssertFalse(driver1.diagnosticEngine.hasErrors)
Expand All @@ -834,6 +860,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
"-explicit-module-build",
"-module-name",
"Foo",
"-working-directory",
path.pathString.nativePathString().escaped(),
"-emit-module",
"-emit-module-path",
moduleFooPath,
Expand Down Expand Up @@ -878,10 +906,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
"-I", swiftModuleInterfacesPath.nativePathString().escaped(),
"-explicit-module-build",
"-working-directory", path.pathString.nativePathString().escaped(),
// TODO: clang targets need to be taught
// how to work with explicit modules
// properly.
"-disable-clang-target",
main.pathString.escaped()] + sdkArgumentsForTesting,
env: ProcessEnv.vars)
let jobs = try driver.planBuild()
Expand Down