From 33177f7ce84e8e4163d99a45a1df1959b8ea857c Mon Sep 17 00:00:00 2001 From: Xi Ge Date: Wed, 11 Aug 2021 11:12:32 -0700 Subject: [PATCH] Put default interface verifier behind an env var Without setting this variable, we won't enable module interface verifier unless explicitly asked to. --- Sources/SwiftDriver/Jobs/Planning.swift | 6 +++++ Tests/SwiftDriverTests/SwiftDriverTests.swift | 22 ++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Sources/SwiftDriver/Jobs/Planning.swift b/Sources/SwiftDriver/Jobs/Planning.swift index 652b035c9..48b2d4a08 100644 --- a/Sources/SwiftDriver/Jobs/Planning.swift +++ b/Sources/SwiftDriver/Jobs/Planning.swift @@ -439,6 +439,12 @@ extension Driver { default: false) else { return } + // FIXME: remove this when we are confident to enable interface verification + // by default. + if env["ENABLE_DEFAULT_INTERFACE_VERIFIER"] == nil && + !parsedOptions.hasArgument(.verifyEmittedModuleInterface) { + return + } func addVerifyJob(forPrivate: Bool) throws { let isNeeded = forPrivate diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index e2c96233b..2a7b30e3c 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -3940,6 +3940,8 @@ final class SwiftDriverTests: XCTestCase { func testVerifyEmittedInterfaceJob() throws { // Evolution enabled + var envVars = ProcessEnv.vars + envVars["ENABLE_DEFAULT_INTERFACE_VERIFIER"] = "YES" do { var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name", "foo", "-emit-module-interface", @@ -3965,7 +3967,7 @@ final class SwiftDriverTests: XCTestCase { // No Evolution do { var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name", - "foo", "-emit-module-interface", "-verify-emitted-module-interface"]) + "foo", "-emit-module-interface", "-verify-emitted-module-interface"], env: envVars) let plannedJobs = try driver.planBuild() XCTAssertEqual(plannedJobs.count, 2) } @@ -3975,7 +3977,7 @@ final class SwiftDriverTests: XCTestCase { var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name", "foo", "-emit-module-interface", "-enable-library-evolution", - "-no-verify-emitted-module-interface"]) + "-no-verify-emitted-module-interface"], env: envVars) let plannedJobs = try driver.planBuild() XCTAssertEqual(plannedJobs.count, 2) } @@ -3985,18 +3987,28 @@ final class SwiftDriverTests: XCTestCase { var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name", "foo", "-emit-module-interface", "-enable-library-evolution", - "-no-emit-module-separately"]) + "-no-emit-module-separately"], env: envVars) let plannedJobs = try driver.planBuild() XCTAssertEqual(plannedJobs.count, 2) } - // Emit-module separately + // Disabled when no "ENABLE_DEFAULT_INTERFACE_VERIFIER" found in the environment do { var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name", "foo", "-emit-module-interface", "-enable-library-evolution", "-experimental-emit-module-separately"]) let plannedJobs = try driver.planBuild() + XCTAssertEqual(plannedJobs.count, 1) + } + + // Emit-module separately + do { + var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name", + "foo", "-emit-module-interface", + "-enable-library-evolution", + "-experimental-emit-module-separately"], env: envVars) + let plannedJobs = try driver.planBuild() XCTAssertEqual(plannedJobs.count, 2) let emitJob = plannedJobs[0] let verifyJob = plannedJobs[1] @@ -4015,7 +4027,7 @@ final class SwiftDriverTests: XCTestCase { var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name", "foo", "-emit-module-interface", "-enable-library-evolution", - "-whole-module-optimization"]) + "-whole-module-optimization"], env: envVars) let plannedJobs = try driver.planBuild() XCTAssertEqual(plannedJobs.count, 2) let emitJob = plannedJobs[0]