diff --git a/Sources/TuistGenerator/Generator/ProjectDescriptorGenerator.swift b/Sources/TuistGenerator/Generator/ProjectDescriptorGenerator.swift index daafac93ed5..128cae9fbb2 100644 --- a/Sources/TuistGenerator/Generator/ProjectDescriptorGenerator.swift +++ b/Sources/TuistGenerator/Generator/ProjectDescriptorGenerator.swift @@ -81,8 +81,6 @@ final class ProjectDescriptorGenerator: ProjectDescriptorGenerating { ) throws -> ProjectDescriptor { logger.notice("Generating project \(project.name)") - let previousXcodeProj = try? XcodeProj(pathString: project.xcodeProjPath.pathString) - let selfRef = XCWorkspaceDataFileRef(location: .current("")) let selfRefFile = XCWorkspaceDataElement.file(selfRef) let workspaceData = XCWorkspaceData(children: [selfRefFile]) @@ -144,8 +142,7 @@ final class ProjectDescriptorGenerator: ProjectDescriptorGenerating { let schemes = try schemeDescriptorsGenerator.generateProjectSchemes( project: project, generatedProject: generatedProject, - graphTraverser: graphTraverser, - previousXcodeProj: previousXcodeProj + graphTraverser: graphTraverser ) let xcodeProj = XcodeProj(workspace: workspace, pbxproj: pbxproj) diff --git a/Sources/TuistGenerator/Generator/SchemeDescriptorsGenerator.swift b/Sources/TuistGenerator/Generator/SchemeDescriptorsGenerator.swift index 77688a97d69..25ade4dd18f 100644 --- a/Sources/TuistGenerator/Generator/SchemeDescriptorsGenerator.swift +++ b/Sources/TuistGenerator/Generator/SchemeDescriptorsGenerator.swift @@ -1,5 +1,4 @@ import Foundation -import Mockable import TSCBasic import TSCUtility import TuistCore @@ -8,7 +7,6 @@ import TuistSupport import XcodeProj /// Protocol that defines the interface of the schemes generation. -@Mockable protocol SchemeDescriptorsGenerating { /// Generates the schemes for the workspace targets. /// @@ -35,8 +33,7 @@ protocol SchemeDescriptorsGenerating { func generateProjectSchemes( project: Project, generatedProject: GeneratedProject, - graphTraverser: GraphTraversing, - previousXcodeProj: XcodeProj? + graphTraverser: GraphTraversing ) throws -> [SchemeDescriptor] } @@ -87,8 +84,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating { path: workspace.xcWorkspacePath.parentDirectory, graphTraverser: graphTraverser, generatedProjects: generatedProjects, - lastUpgradeCheck: workspace.generationOptions.lastXcodeUpgradeCheck, - previousXcodeProj: nil + lastUpgradeCheck: workspace.generationOptions.lastXcodeUpgradeCheck ) } @@ -98,8 +94,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating { func generateProjectSchemes( project: Project, generatedProject: GeneratedProject, - graphTraverser: GraphTraversing, - previousXcodeProj: XcodeProj? + graphTraverser: GraphTraversing ) throws -> [SchemeDescriptor] { try project.schemes.map { scheme in try generateScheme( @@ -107,8 +102,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating { path: project.xcodeProjPath.parentDirectory, graphTraverser: graphTraverser, generatedProjects: [project.xcodeProjPath: generatedProject], - lastUpgradeCheck: project.lastUpgradeCheck, - previousXcodeProj: previousXcodeProj + lastUpgradeCheck: project.lastUpgradeCheck ) } } @@ -141,8 +135,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating { path: AbsolutePath, graphTraverser: GraphTraversing, generatedProjects: [AbsolutePath: GeneratedProject], - lastUpgradeCheck: Version?, - previousXcodeProj: XcodeProj? + lastUpgradeCheck: Version? ) throws -> SchemeDescriptor { let generatedBuildAction = try schemeBuildAction( scheme: scheme, @@ -160,8 +153,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating { scheme: scheme, graphTraverser: graphTraverser, rootPath: path, - generatedProjects: generatedProjects, - previousXcodeProj: previousXcodeProj + generatedProjects: generatedProjects ) let generatedProfileAction = try schemeProfileAction( scheme: scheme, @@ -439,16 +431,12 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating { scheme: Scheme, graphTraverser: GraphTraversing, rootPath: AbsolutePath, - generatedProjects: [AbsolutePath: GeneratedProject], - previousXcodeProj: XcodeProj? + generatedProjects: [AbsolutePath: GeneratedProject] ) throws -> XCScheme.LaunchAction? { let specifiedExecutableTarget = scheme.runAction?.executable let defaultTarget = defaultTargetReference(scheme: scheme) guard let target = specifiedExecutableTarget ?? defaultTarget else { return nil } - let previousScheme = previousXcodeProj?.sharedData?.schemes - .first(where: { $0.name == scheme.name }) - var buildableProductRunnable: XCScheme.BuildableProductRunnable? var macroExpansion: XCScheme.BuildableReference? var pathRunnable: XCScheme.PathRunnable? @@ -513,14 +501,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating { var locationScenarioReference: XCScheme.LocationScenarioReference? if let arguments = scheme.runAction?.arguments { - let launchArguments = if arguments.launchArguments.isEmpty { - previousScheme?.launchAction?.commandlineArguments?.arguments ?? [] - } else { - getCommandlineArguments(arguments.launchArguments) - } - commandlineArguments = XCScheme.CommandLineArguments( - arguments: launchArguments - ) + commandlineArguments = XCScheme.CommandLineArguments(arguments: getCommandlineArguments(arguments.launchArguments)) environments = environmentVariables(arguments.environmentVariables) } @@ -630,8 +611,6 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating { launchStyle: launchStyle, askForAppToLaunch: launchActionConstants.askForAppToLaunch, pathRunnable: pathRunnable, - customWorkingDirectory: previousScheme?.launchAction?.customWorkingDirectory, - useCustomWorkingDirectory: previousScheme?.launchAction?.useCustomWorkingDirectory ?? false, locationScenarioReference: locationScenarioReference, enableGPUFrameCaptureMode: enableGPUFrameCaptureMode, enableAddressSanitizer: enableAddressSanitizer, diff --git a/Tests/TuistGeneratorTests/Generator/Mocks/MockSchemeDescriptorsGenerator.swift b/Tests/TuistGeneratorTests/Generator/Mocks/MockSchemeDescriptorsGenerator.swift new file mode 100644 index 00000000000..d16490160e4 --- /dev/null +++ b/Tests/TuistGeneratorTests/Generator/Mocks/MockSchemeDescriptorsGenerator.swift @@ -0,0 +1,25 @@ +import Foundation +import TSCBasic +import TuistCore +import TuistCoreTesting +import TuistGraph +import TuistGraphTesting +@testable import TuistGenerator + +final class MockSchemeDescriptorsGenerator: SchemeDescriptorsGenerating { + func generateProjectSchemes( + project _: Project, + generatedProject _: GeneratedProject, + graphTraverser _: GraphTraversing + ) throws -> [SchemeDescriptor] { + [] + } + + func generateWorkspaceSchemes( + workspace _: Workspace, + generatedProjects _: [AbsolutePath: GeneratedProject], + graphTraverser _: GraphTraversing + ) throws -> [SchemeDescriptor] { + [] + } +} diff --git a/Tests/TuistGeneratorTests/Generator/SchemeDescriptorsGeneratorTests.swift b/Tests/TuistGeneratorTests/Generator/SchemeDescriptorsGeneratorTests.swift index 700671e2560..7440dca454b 100644 --- a/Tests/TuistGeneratorTests/Generator/SchemeDescriptorsGeneratorTests.swift +++ b/Tests/TuistGeneratorTests/Generator/SchemeDescriptorsGeneratorTests.swift @@ -301,8 +301,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { let schemeDescriptors = try subject.generateProjectSchemes( project: project, generatedProject: generatedProject, - graphTraverser: graphTraverser, - previousXcodeProj: nil + graphTraverser: graphTraverser ) // Then @@ -521,8 +520,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: projectPath, - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -574,8 +572,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: projectPath, - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -1126,8 +1123,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: workspacePath, - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -1204,8 +1200,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: try AbsolutePath(validating: "/somepath/Workspace"), - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -1251,8 +1246,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: projectPath, - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -1266,89 +1260,6 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { XCTAssertEqual(result.language, nil) } - func test_schemeLaunchAction_when_previousXcodeProjHasArguments() throws { - // Given - let projectPath = try AbsolutePath(validating: "/somepath/Project") - - let target = Target.test(name: "Library", platform: .iOS, product: .dynamicLibrary) - - let buildAction = BuildAction.test(targets: [TargetReference(projectPath: projectPath, name: "Library")]) - let launchAction = RunAction.test( - configurationName: "Debug", - filePath: "/usr/bin/foo", - diagnosticsOptions: SchemeDiagnosticsOptions(mainThreadCheckerEnabled: true) - ) - - let scheme = Scheme.test(name: "Library", buildAction: buildAction, runAction: launchAction) - let project = Project.test(path: projectPath, targets: [target]) - let graph = Graph.test( - projects: [project.path: project], - targets: [ - project.path: [ - target.name: target, - ], - ] - ) - let graphTraverser = GraphTraverser(graph: graph) - - // When - let got = try subject.schemeLaunchAction( - scheme: scheme, - graphTraverser: graphTraverser, - rootPath: projectPath, - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: XcodeProj( - workspace: XCWorkspace(), - pbxproj: PBXProj(), - sharedData: XCSharedData( - schemes: [ - XCScheme( - name: "Library", - lastUpgradeVersion: nil, - version: nil, - launchAction: XCScheme.LaunchAction( - runnable: XCScheme.Runnable( - buildableReference: XCScheme.BuildableReference( - referencedContainer: "", - blueprint: nil, - buildableName: "", - blueprintName: "" - ) - ), - buildConfiguration: "Debug", - customWorkingDirectory: "/custom-dir", - useCustomWorkingDirectory: true, - commandlineArguments: XCScheme.CommandLineArguments( - arguments: [ - XCScheme.CommandLineArguments.CommandLineArgument( - name: "generate", - enabled: true - ), - ] - ) - ) - ), - ] - ) - ) - ) - - // Then - let result = try XCTUnwrap(got) - XCTAssertEqual(result.buildConfiguration, "Debug") - XCTAssertEqual(result.pathRunnable?.filePath, "/usr/bin/foo") - XCTAssertEqual(result.customWorkingDirectory, "/custom-dir") - XCTAssertTrue(result.useCustomWorkingDirectory) - XCTAssertEqual(result.commandlineArguments?.arguments.count, 1) - XCTAssertEqual( - result.commandlineArguments?.arguments.first, - XCScheme.CommandLineArguments.CommandLineArgument( - name: "generate", - enabled: true - ) - ) - } - func test_schemeLaunchAction_with_path() throws { let projectPath = try AbsolutePath(validating: "/somepath/Project") @@ -1381,8 +1292,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: projectPath, - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -1447,8 +1357,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: projectPath, - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) let result = try XCTUnwrap(got) XCTAssertEqual(result.selectedDebuggerIdentifier, "Xcode.DebuggerFoundation.Debugger.LLDB") @@ -1494,8 +1403,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: try AbsolutePath(validating: "/somepath/Workspace"), - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -1530,8 +1438,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: scheme, graphTraverser: graphTraverser, rootPath: try AbsolutePath(validating: "/somepath/Workspace"), - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -1580,8 +1487,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: extensionScheme, graphTraverser: graphTraverser, rootPath: try AbsolutePath(validating: "/somepath/Workspace"), - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -1635,8 +1541,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { scheme: extensionScheme, graphTraverser: graphTraverser, rootPath: try AbsolutePath(validating: "/somepath/Workspace"), - generatedProjects: createGeneratedProjects(projects: [project]), - previousXcodeProj: nil + generatedProjects: createGeneratedProjects(projects: [project]) ) // Then @@ -2049,8 +1954,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { let result = try subject.generateProjectSchemes( project: project, generatedProject: generatedProject(targets: project.targets), - graphTraverser: graphTraverser, - previousXcodeProj: nil + graphTraverser: graphTraverser ) // Then @@ -2098,8 +2002,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { let result = try subject.generateProjectSchemes( project: project, generatedProject: generatedProject(targets: project.targets), - graphTraverser: graphTraverser, - previousXcodeProj: nil + graphTraverser: graphTraverser ) // Then @@ -2168,8 +2071,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase { let result = try subject.generateProjectSchemes( project: project, generatedProject: generatedProject(targets: project.targets), - graphTraverser: graphTraverser, - previousXcodeProj: nil + graphTraverser: graphTraverser ) XCTAssertEqual(