Skip to content

Commit 6d73a3e

Browse files
committed
[NFC] Module Aliasing Test Cleanup
- Specify the working directory on driver invocations to avoid test artifacts in the package root. - Skip running tests if frontend does not support `-module-alias` - Remove `-clang-target` on explicit module build test
1 parent 2dbc6c0 commit 6d73a3e

File tree

1 file changed

+38
-14
lines changed

1 file changed

+38
-14
lines changed

Tests/SwiftDriverTests/ExplicitModuleBuildTests.swift

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -606,16 +606,22 @@ final class ExplicitModuleBuildTests: XCTestCase {
606606

607607
// Create Bar.swiftmodule
608608
var driver = try Driver(args: ["swiftc",
609-
"-explicit-module-build",
610-
srcBar.pathString.nativePathString().escaped(),
611-
"-module-name",
612-
"Bar",
613-
"-emit-module",
614-
"-emit-module-path", moduleBarPath,
615-
"-I", stdLibPath.pathString.nativePathString().escaped(),
616-
"-I", shimsPath.pathString.nativePathString().escaped(),
617-
] + sdkArgumentsForTesting,
618-
env: ProcessEnv.vars)
609+
"-explicit-module-build",
610+
"-working-directory",
611+
path.pathString.nativePathString().escaped(),
612+
srcBar.pathString.nativePathString().escaped(),
613+
"-module-name",
614+
"Bar",
615+
"-emit-module",
616+
"-emit-module-path", moduleBarPath,
617+
"-I", stdLibPath.pathString.nativePathString().escaped(),
618+
"-I", shimsPath.pathString.nativePathString().escaped(),
619+
] + sdkArgumentsForTesting,
620+
env: ProcessEnv.vars)
621+
guard driver.isFrontendArgSupported(.moduleAlias) else {
622+
throw XCTSkip("Skipping: compiler does not support '-module-alias'")
623+
}
624+
619625
let jobs = try driver.planBuild()
620626
try driver.run(jobs: jobs)
621627
XCTAssertFalse(driver.diagnosticEngine.hasErrors)
@@ -635,6 +641,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
635641
var driverA = try Driver(args: ["swiftc",
636642
"-nonlib-dependency-scanner",
637643
"-explicit-module-build",
644+
"-working-directory",
645+
path.pathString.nativePathString().escaped(),
638646
srcFoo.pathString.nativePathString().escaped(),
639647
"-module-alias", "Car=Bar",
640648
"-I",
@@ -659,6 +667,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
659667
// Module alias with the default scanner (driver scanner)
660668
var driverB = try Driver(args: ["swiftc",
661669
"-explicit-module-build",
670+
"-working-directory",
671+
path.pathString.nativePathString().escaped(),
662672
srcFoo.pathString.nativePathString().escaped(),
663673
"-module-alias", "Car=Bar",
664674
"-I",
@@ -707,6 +717,9 @@ final class ExplicitModuleBuildTests: XCTestCase {
707717
"-I",
708718
swiftModuleInterfacesPath.nativePathString().escaped(),
709719
])
720+
guard driverA.isFrontendArgSupported(.moduleAlias) else {
721+
throw XCTSkip("Skipping: compiler does not support '-module-alias'")
722+
}
710723

711724
// Resulting graph should contain the real module name Bar
712725
let dependencyGraphA = try driverA.gatherModuleDependencies()
@@ -728,6 +741,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
728741
"-explicit-module-build",
729742
srcFoo.pathString.nativePathString().escaped(),
730743
"-module-alias", "Car=F",
744+
"-working-directory",
745+
path.pathString.nativePathString().escaped(),
731746
"-I",
732747
swiftModuleInterfacesPath.nativePathString().escaped(),
733748
])
@@ -752,6 +767,11 @@ final class ExplicitModuleBuildTests: XCTestCase {
752767
func testModuleAliasingWithImportPrescan() throws {
753768
let (_, _, toolchain, hostTriple) = try getDriverArtifactsForScanning()
754769

770+
let dummyDriver = try Driver(args: ["swiftc", "-module-name", "dummyDriverCheck", "test.swift"])
771+
guard dummyDriver.isFrontendArgSupported(.moduleAlias) else {
772+
throw XCTSkip("Skipping: compiler does not support '-module-alias'")
773+
}
774+
755775
// The dependency oracle wraps an instance of libSwiftScan and ensures thread safety across
756776
// queries.
757777
let dependencyOracle = InterModuleDependencyOracle()
@@ -805,13 +825,19 @@ final class ExplicitModuleBuildTests: XCTestCase {
805825
"-explicit-module-build",
806826
"-module-name",
807827
"Bar",
828+
"-working-directory",
829+
path.pathString.nativePathString().escaped(),
808830
"-emit-module",
809831
"-emit-module-path", moduleBarPath,
810832
srcBar.pathString.nativePathString().escaped(),
811833
"-I", stdLibPath.pathString.nativePathString().escaped(),
812834
"-I", shimsPath.pathString.nativePathString().escaped(),
813835
] + sdkArgumentsForTesting,
814836
env: ProcessEnv.vars)
837+
guard driver1.isFrontendArgSupported(.moduleAlias) else {
838+
throw XCTSkip("Skipping: compiler does not support '-module-alias'")
839+
}
840+
815841
let jobs1 = try driver1.planBuild()
816842
try driver1.run(jobs: jobs1)
817843
XCTAssertFalse(driver1.diagnosticEngine.hasErrors)
@@ -834,6 +860,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
834860
"-explicit-module-build",
835861
"-module-name",
836862
"Foo",
863+
"-working-directory",
864+
path.pathString.nativePathString().escaped(),
837865
"-emit-module",
838866
"-emit-module-path",
839867
moduleFooPath,
@@ -878,10 +906,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
878906
"-I", swiftModuleInterfacesPath.nativePathString().escaped(),
879907
"-explicit-module-build",
880908
"-working-directory", path.pathString.nativePathString().escaped(),
881-
// TODO: clang targets need to be taught
882-
// how to work with explicit modules
883-
// properly.
884-
"-disable-clang-target",
885909
main.pathString.escaped()] + sdkArgumentsForTesting,
886910
env: ProcessEnv.vars)
887911
let jobs = try driver.planBuild()

0 commit comments

Comments
 (0)