Rename ValueGraph to Graph (#3083)
This commit is contained in:
parent
30482ff513
commit
77ec006674
|
@ -12,6 +12,7 @@ Please, check out guidelines: https://keepachangelog.com/en/1.0.0/
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- Renamed `ValueGraph` to `Graph` [#3083](https://github.com/tuist/tuist/pull/3083) by [@fortmarek](https://github.com/fortmarek)
|
||||||
- Fixed a typo on the `tuist generate` command documentation for argument --skip-test-targets. [#3069](https://github.com/tuist/tuist/pull/3069) by [@mrcloud](https://github.com/mrcloud)
|
- Fixed a typo on the `tuist generate` command documentation for argument --skip-test-targets. [#3069](https://github.com/tuist/tuist/pull/3069) by [@mrcloud](https://github.com/mrcloud)
|
||||||
- **breaking** The `tuist dependencies` command requires the `Carthage` version to be at least `0.37.0`. [#3043](https://github.com/tuist/tuist/pull/3043) by [@laxmorek](https://github.com/laxmorek)
|
- **breaking** The `tuist dependencies` command requires the `Carthage` version to be at least `0.37.0`. [#3043](https://github.com/tuist/tuist/pull/3043) by [@laxmorek](https://github.com/laxmorek)
|
||||||
|
|
||||||
|
|
|
@ -20,12 +20,12 @@ public protocol BuildGraphInspecting {
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - scheme: Scheme in which to look up the target.
|
/// - scheme: Scheme in which to look up the target.
|
||||||
/// - graphTraverser: GraphTraversing traverser.
|
/// - graphTraverser: GraphTraversing traverser.
|
||||||
func buildableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget?
|
func buildableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget?
|
||||||
|
|
||||||
/// From the list of testable targets of the given scheme, it returns the first one.
|
/// From the list of testable targets of the given scheme, it returns the first one.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - scheme: Scheme in which to look up the target.
|
/// - scheme: Scheme in which to look up the target.
|
||||||
func testableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget?
|
func testableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget?
|
||||||
|
|
||||||
/// Given a graphTraverser, it returns a list of buildable schemes.
|
/// Given a graphTraverser, it returns a list of buildable schemes.
|
||||||
func buildableSchemes(graphTraverser: GraphTraversing) -> [Scheme]
|
func buildableSchemes(graphTraverser: GraphTraversing) -> [Scheme]
|
||||||
|
@ -43,7 +43,7 @@ public protocol BuildGraphInspecting {
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - scheme: Scheme in which to look up the target.
|
/// - scheme: Scheme in which to look up the target.
|
||||||
/// - graphTraverser: GraphTraversing traverser.
|
/// - graphTraverser: GraphTraversing traverser.
|
||||||
func runnableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget?
|
func runnableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget?
|
||||||
|
|
||||||
/// Given a graphTraverser, it returns a list of runnable schemes.
|
/// Given a graphTraverser, it returns a list of runnable schemes.
|
||||||
func runnableSchemes(graphTraverser: GraphTraversing) -> [Scheme]
|
func runnableSchemes(graphTraverser: GraphTraversing) -> [Scheme]
|
||||||
|
@ -85,7 +85,7 @@ public final class BuildGraphInspector: BuildGraphInspecting {
|
||||||
return arguments
|
return arguments
|
||||||
}
|
}
|
||||||
|
|
||||||
public func buildableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget? {
|
public func buildableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget? {
|
||||||
guard
|
guard
|
||||||
scheme.buildAction?.targets.isEmpty == false,
|
scheme.buildAction?.targets.isEmpty == false,
|
||||||
let buildTarget = scheme.buildAction?.targets.first
|
let buildTarget = scheme.buildAction?.targets.first
|
||||||
|
@ -99,7 +99,7 @@ public final class BuildGraphInspector: BuildGraphInspecting {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func testableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget? {
|
public func testableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget? {
|
||||||
guard let testTarget = scheme.testAction?.targets.first else { return nil }
|
guard let testTarget = scheme.testAction?.targets.first else { return nil }
|
||||||
return graphTraverser.target(path: testTarget.target.projectPath, name: testTarget.target.name)
|
return graphTraverser.target(path: testTarget.target.projectPath, name: testTarget.target.name)
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ public final class BuildGraphInspector: BuildGraphInspecting {
|
||||||
.sorted(by: { $0.name < $1.name })
|
.sorted(by: { $0.name < $1.name })
|
||||||
}
|
}
|
||||||
|
|
||||||
public func runnableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget? {
|
public func runnableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget? {
|
||||||
guard let runTarget = scheme.runAction?.executable else { return nil }
|
guard let runTarget = scheme.runAction?.executable else { return nil }
|
||||||
return graphTraverser.target(
|
return graphTraverser.target(
|
||||||
path: runTarget.projectPath,
|
path: runTarget.projectPath,
|
||||||
|
|
|
@ -15,7 +15,7 @@ public protocol TargetBuilding {
|
||||||
/// - configuration: The configuration to use while building the scheme.
|
/// - configuration: The configuration to use while building the scheme.
|
||||||
/// - buildOutputPath: An optional path to copy the build products to.
|
/// - buildOutputPath: An optional path to copy the build products to.
|
||||||
func buildTarget(
|
func buildTarget(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
workspacePath: AbsolutePath,
|
workspacePath: AbsolutePath,
|
||||||
schemeName: String,
|
schemeName: String,
|
||||||
clean: Bool,
|
clean: Bool,
|
||||||
|
@ -63,7 +63,7 @@ public final class TargetBuilder: TargetBuilding {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func buildTarget(
|
public func buildTarget(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
workspacePath: AbsolutePath,
|
workspacePath: AbsolutePath,
|
||||||
schemeName: String,
|
schemeName: String,
|
||||||
clean: Bool,
|
clean: Bool,
|
||||||
|
|
|
@ -18,7 +18,7 @@ public protocol TargetRunning {
|
||||||
/// - deviceName: The name of the simulator device to run the target on, if none provided uses a default device.
|
/// - deviceName: The name of the simulator device to run the target on, if none provided uses a default device.
|
||||||
/// - arguments: Arguments to forward to the runnable target when running.
|
/// - arguments: Arguments to forward to the runnable target when running.
|
||||||
func runTarget(
|
func runTarget(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
workspacePath: AbsolutePath,
|
workspacePath: AbsolutePath,
|
||||||
schemeName: String,
|
schemeName: String,
|
||||||
configuration: String?,
|
configuration: String?,
|
||||||
|
@ -72,7 +72,7 @@ public final class TargetRunner: TargetRunning {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func runTarget(
|
public func runTarget(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
workspacePath: AbsolutePath,
|
workspacePath: AbsolutePath,
|
||||||
schemeName: String,
|
schemeName: String,
|
||||||
configuration: String?,
|
configuration: String?,
|
||||||
|
@ -132,7 +132,7 @@ public final class TargetRunner: TargetRunning {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func runApp(
|
private func runApp(
|
||||||
target: ValueGraphTarget,
|
target: GraphTarget,
|
||||||
schemeName: String,
|
schemeName: String,
|
||||||
configuration: String,
|
configuration: String,
|
||||||
appPath: AbsolutePath,
|
appPath: AbsolutePath,
|
||||||
|
|
|
@ -13,12 +13,12 @@ public final class MockBuildGraphInspector: BuildGraphInspecting {
|
||||||
workspacePathStub?(directory) ?? nil
|
workspacePathStub?(directory) ?? nil
|
||||||
}
|
}
|
||||||
|
|
||||||
public var buildableTargetStub: ((Scheme, GraphTraversing) -> ValueGraphTarget?)?
|
public var buildableTargetStub: ((Scheme, GraphTraversing) -> GraphTarget?)?
|
||||||
public func buildableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget? {
|
public func buildableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget? {
|
||||||
if let buildableTargetStub = buildableTargetStub {
|
if let buildableTargetStub = buildableTargetStub {
|
||||||
return buildableTargetStub(scheme, graphTraverser)
|
return buildableTargetStub(scheme, graphTraverser)
|
||||||
} else {
|
} else {
|
||||||
return ValueGraphTarget.test()
|
return GraphTarget.test()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,12 +45,12 @@ public final class MockBuildGraphInspector: BuildGraphInspecting {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public var testableTargetStub: ((Scheme, GraphTraversing) -> ValueGraphTarget?)?
|
public var testableTargetStub: ((Scheme, GraphTraversing) -> GraphTarget?)?
|
||||||
public func testableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget? {
|
public func testableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget? {
|
||||||
if let testableTargetStub = testableTargetStub {
|
if let testableTargetStub = testableTargetStub {
|
||||||
return testableTargetStub(scheme, graphTraverser)
|
return testableTargetStub(scheme, graphTraverser)
|
||||||
} else {
|
} else {
|
||||||
return ValueGraphTarget.test()
|
return GraphTarget.test()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,8 +68,8 @@ public final class MockBuildGraphInspector: BuildGraphInspecting {
|
||||||
testSchemesStub?(graphTraverser) ?? []
|
testSchemesStub?(graphTraverser) ?? []
|
||||||
}
|
}
|
||||||
|
|
||||||
public var runnableTargetStub: ((Scheme, GraphTraversing) -> ValueGraphTarget?)?
|
public var runnableTargetStub: ((Scheme, GraphTraversing) -> GraphTarget?)?
|
||||||
public func runnableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> ValueGraphTarget? {
|
public func runnableTarget(scheme: Scheme, graphTraverser: GraphTraversing) -> GraphTarget? {
|
||||||
runnableTargetStub?(scheme, graphTraverser)
|
runnableTargetStub?(scheme, graphTraverser)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@ import TuistGraph
|
||||||
public final class MockTargetBuilder: TargetBuilding {
|
public final class MockTargetBuilder: TargetBuilding {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
public var buildTargetStub: ((ValueGraphTarget, AbsolutePath, String, Bool, String?, AbsolutePath?) throws -> Void)?
|
public var buildTargetStub: ((GraphTarget, AbsolutePath, String, Bool, String?, AbsolutePath?) throws -> Void)?
|
||||||
public func buildTarget(
|
public func buildTarget(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
workspacePath: AbsolutePath,
|
workspacePath: AbsolutePath,
|
||||||
schemeName: String,
|
schemeName: String,
|
||||||
clean: Bool,
|
clean: Bool,
|
||||||
|
|
|
@ -6,9 +6,9 @@ import TuistGraph
|
||||||
public final class MockTargetRunner: TargetRunning {
|
public final class MockTargetRunner: TargetRunning {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
public var runTargetStub: ((ValueGraphTarget, AbsolutePath, String, String?, Version?, Version?, String?, [String]) throws -> Void)?
|
public var runTargetStub: ((GraphTarget, AbsolutePath, String, String?, Version?, Version?, String?, [String]) throws -> Void)?
|
||||||
public func runTarget(
|
public func runTarget(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
workspacePath: AbsolutePath,
|
workspacePath: AbsolutePath,
|
||||||
schemeName: String,
|
schemeName: String,
|
||||||
configuration: String?,
|
configuration: String?,
|
||||||
|
|
|
@ -11,10 +11,10 @@ public protocol CacheGraphContentHashing {
|
||||||
/// - cacheProfile: Cache profile currently being used
|
/// - cacheProfile: Cache profile currently being used
|
||||||
/// - cacheOutputType: Output type of cache -> makes a different hash for a different output type
|
/// - cacheOutputType: Output type of cache -> makes a different hash for a different output type
|
||||||
func contentHashes(
|
func contentHashes(
|
||||||
for graph: ValueGraph,
|
for graph: Graph,
|
||||||
cacheProfile: TuistGraph.Cache.Profile,
|
cacheProfile: TuistGraph.Cache.Profile,
|
||||||
cacheOutputType: CacheOutputType
|
cacheOutputType: CacheOutputType
|
||||||
) throws -> [ValueGraphTarget: String]
|
) throws -> [GraphTarget: String]
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class CacheGraphContentHasher: CacheGraphContentHashing {
|
public final class CacheGraphContentHasher: CacheGraphContentHashing {
|
||||||
|
@ -43,11 +43,11 @@ public final class CacheGraphContentHasher: CacheGraphContentHashing {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func contentHashes(
|
public func contentHashes(
|
||||||
for graph: ValueGraph,
|
for graph: Graph,
|
||||||
cacheProfile: TuistGraph.Cache.Profile,
|
cacheProfile: TuistGraph.Cache.Profile,
|
||||||
cacheOutputType: CacheOutputType
|
cacheOutputType: CacheOutputType
|
||||||
) throws -> [ValueGraphTarget: String] {
|
) throws -> [GraphTarget: String] {
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
return try graphContentHasher.contentHashes(
|
return try graphContentHasher.contentHashes(
|
||||||
for: graph,
|
for: graph,
|
||||||
filter: { filterHashTarget($0, graphTraverser: graphTraverser) },
|
filter: { filterHashTarget($0, graphTraverser: graphTraverser) },
|
||||||
|
@ -59,7 +59,7 @@ public final class CacheGraphContentHasher: CacheGraphContentHashing {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func filterHashTarget(
|
private func filterHashTarget(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
graphTraverser: GraphTraversing
|
graphTraverser: GraphTraversing
|
||||||
) -> Bool {
|
) -> Bool {
|
||||||
let isFramework = target.target.product == .framework || target.target.product == .staticFramework
|
let isFramework = target.target.product == .framework || target.target.product == .staticFramework
|
||||||
|
|
|
@ -11,10 +11,10 @@ public protocol GraphContentHashing {
|
||||||
/// - filter: If `true`, `TargetNode` is hashed, otherwise it is skipped
|
/// - filter: If `true`, `TargetNode` is hashed, otherwise it is skipped
|
||||||
/// - additionalStrings: Additional strings to be used when hashing graph
|
/// - additionalStrings: Additional strings to be used when hashing graph
|
||||||
func contentHashes(
|
func contentHashes(
|
||||||
for graph: ValueGraph,
|
for graph: Graph,
|
||||||
filter: (ValueGraphTarget) -> Bool,
|
filter: (GraphTarget) -> Bool,
|
||||||
additionalStrings: [String]
|
additionalStrings: [String]
|
||||||
) throws -> [ValueGraphTarget: String]
|
) throws -> [GraphTarget: String]
|
||||||
}
|
}
|
||||||
|
|
||||||
public extension GraphContentHashing {
|
public extension GraphContentHashing {
|
||||||
|
@ -24,10 +24,10 @@ public extension GraphContentHashing {
|
||||||
/// - filter: If `true`, `TargetNode` is hashed, otherwise it is skipped
|
/// - filter: If `true`, `TargetNode` is hashed, otherwise it is skipped
|
||||||
/// - additionalStrings: Additional strings to be used when hashing graph
|
/// - additionalStrings: Additional strings to be used when hashing graph
|
||||||
func contentHashes(
|
func contentHashes(
|
||||||
for graph: ValueGraph,
|
for graph: Graph,
|
||||||
filter: (ValueGraphTarget) -> Bool = { _ in true },
|
filter: (GraphTarget) -> Bool = { _ in true },
|
||||||
additionalStrings: [String] = []
|
additionalStrings: [String] = []
|
||||||
) throws -> [ValueGraphTarget: String] {
|
) throws -> [GraphTarget: String] {
|
||||||
try contentHashes(
|
try contentHashes(
|
||||||
for: graph,
|
for: graph,
|
||||||
filter: filter,
|
filter: filter,
|
||||||
|
@ -56,13 +56,13 @@ public final class GraphContentHasher: GraphContentHashing {
|
||||||
// MARK: - GraphContentHashing
|
// MARK: - GraphContentHashing
|
||||||
|
|
||||||
public func contentHashes(
|
public func contentHashes(
|
||||||
for graph: ValueGraph,
|
for graph: Graph,
|
||||||
filter: (ValueGraphTarget) -> Bool,
|
filter: (GraphTarget) -> Bool,
|
||||||
additionalStrings: [String]
|
additionalStrings: [String]
|
||||||
) throws -> [ValueGraphTarget: String] {
|
) throws -> [GraphTarget: String] {
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
var visitedNodes: [ValueGraphTarget: Bool] = [:]
|
var visitedNodes: [GraphTarget: Bool] = [:]
|
||||||
let hashableTargets = graphTraverser.allTargets().compactMap { target -> ValueGraphTarget? in
|
let hashableTargets = graphTraverser.allTargets().compactMap { target -> GraphTarget? in
|
||||||
if isHashable(
|
if isHashable(
|
||||||
target,
|
target,
|
||||||
graphTraverser: graphTraverser,
|
graphTraverser: graphTraverser,
|
||||||
|
@ -86,10 +86,10 @@ public final class GraphContentHasher: GraphContentHashing {
|
||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
private func isHashable(
|
private func isHashable(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
graphTraverser: GraphTraversing,
|
graphTraverser: GraphTraversing,
|
||||||
visited: inout [ValueGraphTarget: Bool],
|
visited: inout [GraphTarget: Bool],
|
||||||
filter: (ValueGraphTarget) -> Bool
|
filter: (GraphTarget) -> Bool
|
||||||
) -> Bool {
|
) -> Bool {
|
||||||
guard filter(target) else {
|
guard filter(target) else {
|
||||||
visited[target] = false
|
visited[target] = false
|
||||||
|
|
|
@ -5,8 +5,8 @@ import TuistGraph
|
||||||
import TuistSupport
|
import TuistSupport
|
||||||
|
|
||||||
public protocol TargetContentHashing {
|
public protocol TargetContentHashing {
|
||||||
func contentHash(for target: ValueGraphTarget) throws -> String
|
func contentHash(for target: GraphTarget) throws -> String
|
||||||
func contentHash(for target: ValueGraphTarget, additionalStrings: [String]) throws -> String
|
func contentHash(for target: GraphTarget, additionalStrings: [String]) throws -> String
|
||||||
}
|
}
|
||||||
|
|
||||||
/// `TargetContentHasher`
|
/// `TargetContentHasher`
|
||||||
|
@ -70,11 +70,11 @@ public final class TargetContentHasher: TargetContentHashing {
|
||||||
|
|
||||||
// MARK: - TargetContentHashing
|
// MARK: - TargetContentHashing
|
||||||
|
|
||||||
public func contentHash(for target: ValueGraphTarget) throws -> String {
|
public func contentHash(for target: GraphTarget) throws -> String {
|
||||||
try contentHash(for: target, additionalStrings: [])
|
try contentHash(for: target, additionalStrings: [])
|
||||||
}
|
}
|
||||||
|
|
||||||
public func contentHash(for target: ValueGraphTarget, additionalStrings: [String]) throws -> String {
|
public func contentHash(for target: GraphTarget, additionalStrings: [String]) throws -> String {
|
||||||
try contentHash(for: target.target, additionalStrings: additionalStrings)
|
try contentHash(for: target.target, additionalStrings: additionalStrings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ protocol CacheGraphMutating {
|
||||||
/// - graph: Dependency graph.
|
/// - graph: Dependency graph.
|
||||||
/// - precompiledFrameworks: Dictionary that maps targets with the paths to their cached `.framework`s or `.xcframework`s.
|
/// - precompiledFrameworks: Dictionary that maps targets with the paths to their cached `.framework`s or `.xcframework`s.
|
||||||
/// - source: Contains a list of targets that won't be replaced with their pre-compiled version from the cache.
|
/// - source: Contains a list of targets that won't be replaced with their pre-compiled version from the cache.
|
||||||
func map(graph: ValueGraph, precompiledFrameworks: [ValueGraphTarget: AbsolutePath], sources: Set<String>) throws -> ValueGraph
|
func map(graph: Graph, precompiledFrameworks: [GraphTarget: AbsolutePath], sources: Set<String>) throws -> Graph
|
||||||
}
|
}
|
||||||
|
|
||||||
class CacheGraphMutator: CacheGraphMutating {
|
class CacheGraphMutator: CacheGraphMutating {
|
||||||
|
@ -47,22 +47,22 @@ class CacheGraphMutator: CacheGraphMutating {
|
||||||
/// - precompiledFrameworks: Dictionary that maps targets with the paths to their cached `.framework`s or `.xcframework`s.
|
/// - precompiledFrameworks: Dictionary that maps targets with the paths to their cached `.framework`s or `.xcframework`s.
|
||||||
/// - source: Contains a list of targets that won't be replaced with their pre-compiled version from the cache.
|
/// - source: Contains a list of targets that won't be replaced with their pre-compiled version from the cache.
|
||||||
func map(
|
func map(
|
||||||
graph: ValueGraph,
|
graph: Graph,
|
||||||
precompiledFrameworks: [ValueGraphTarget: AbsolutePath],
|
precompiledFrameworks: [GraphTarget: AbsolutePath],
|
||||||
sources: Set<String>
|
sources: Set<String>
|
||||||
) throws -> ValueGraph {
|
) throws -> Graph {
|
||||||
var graph = graph
|
var graph = graph
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
var visitedPrecompiledFrameworkPaths: [ValueGraphTarget: VisitedPrecompiledFramework?] = [:]
|
var visitedPrecompiledFrameworkPaths: [GraphTarget: VisitedPrecompiledFramework?] = [:]
|
||||||
var loadedPrecompiledDependencies: [AbsolutePath: ValueGraphDependency] = [:]
|
var loadedPrecompiledDependencies: [AbsolutePath: GraphDependency] = [:]
|
||||||
let userSpecifiedSourceTargets = graphTraverser.allTargets().filter { sources.contains($0.target.name) }
|
let userSpecifiedSourceTargets = graphTraverser.allTargets().filter { sources.contains($0.target.name) }
|
||||||
let userSpecifiedSourceTestTargets = userSpecifiedSourceTargets.flatMap {
|
let userSpecifiedSourceTestTargets = userSpecifiedSourceTargets.flatMap {
|
||||||
graphTraverser.testTargetsDependingOn(path: $0.path, name: $0.target.name)
|
graphTraverser.testTargetsDependingOn(path: $0.path, name: $0.target.name)
|
||||||
}
|
}
|
||||||
var sourceTargets: Set<ValueGraphTarget> = Set(userSpecifiedSourceTargets)
|
var sourceTargets: Set<GraphTarget> = Set(userSpecifiedSourceTargets)
|
||||||
|
|
||||||
/// New graph dependencies
|
/// New graph dependencies
|
||||||
var graphDependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [:]
|
var graphDependencies: [GraphDependency: Set<GraphDependency>] = [:]
|
||||||
try (userSpecifiedSourceTargets + userSpecifiedSourceTestTargets)
|
try (userSpecifiedSourceTargets + userSpecifiedSourceTestTargets)
|
||||||
.forEach {
|
.forEach {
|
||||||
try visit(
|
try visit(
|
||||||
|
@ -91,17 +91,17 @@ class CacheGraphMutator: CacheGraphMutating {
|
||||||
}
|
}
|
||||||
|
|
||||||
fileprivate func visit(
|
fileprivate func visit(
|
||||||
target: ValueGraphTarget,
|
target: GraphTarget,
|
||||||
graph: ValueGraph,
|
graph: Graph,
|
||||||
graphDependencies: inout [ValueGraphDependency: Set<ValueGraphDependency>],
|
graphDependencies: inout [GraphDependency: Set<GraphDependency>],
|
||||||
precompiledFrameworks: [ValueGraphTarget: AbsolutePath],
|
precompiledFrameworks: [GraphTarget: AbsolutePath],
|
||||||
sources: Set<String>,
|
sources: Set<String>,
|
||||||
sourceTargets: inout Set<ValueGraphTarget>,
|
sourceTargets: inout Set<GraphTarget>,
|
||||||
visitedPrecompiledFrameworkPaths: inout [ValueGraphTarget: VisitedPrecompiledFramework?],
|
visitedPrecompiledFrameworkPaths: inout [GraphTarget: VisitedPrecompiledFramework?],
|
||||||
loadedPrecompiledNodes: inout [AbsolutePath: ValueGraphDependency]
|
loadedPrecompiledNodes: inout [AbsolutePath: GraphDependency]
|
||||||
) throws {
|
) throws {
|
||||||
sourceTargets.formUnion([target])
|
sourceTargets.formUnion([target])
|
||||||
let targetDependency: ValueGraphDependency = .target(name: target.target.name, path: target.path)
|
let targetDependency: GraphDependency = .target(name: target.target.name, path: target.path)
|
||||||
graphDependencies[
|
graphDependencies[
|
||||||
targetDependency
|
targetDependency
|
||||||
] = try mapDependencies(
|
] = try mapDependencies(
|
||||||
|
@ -118,19 +118,19 @@ class CacheGraphMutator: CacheGraphMutating {
|
||||||
|
|
||||||
// swiftlint:disable:next function_body_length
|
// swiftlint:disable:next function_body_length
|
||||||
fileprivate func mapDependencies(
|
fileprivate func mapDependencies(
|
||||||
_ dependencies: Set<ValueGraphDependency>,
|
_ dependencies: Set<GraphDependency>,
|
||||||
graph: ValueGraph,
|
graph: Graph,
|
||||||
graphDependencies: inout [ValueGraphDependency: Set<ValueGraphDependency>],
|
graphDependencies: inout [GraphDependency: Set<GraphDependency>],
|
||||||
precompiledFrameworks: [ValueGraphTarget: AbsolutePath],
|
precompiledFrameworks: [GraphTarget: AbsolutePath],
|
||||||
sources: Set<String>,
|
sources: Set<String>,
|
||||||
sourceTargets: inout Set<ValueGraphTarget>,
|
sourceTargets: inout Set<GraphTarget>,
|
||||||
visitedPrecompiledFrameworkPaths: inout [ValueGraphTarget: VisitedPrecompiledFramework?],
|
visitedPrecompiledFrameworkPaths: inout [GraphTarget: VisitedPrecompiledFramework?],
|
||||||
loadedPrecompiledFrameworks: inout [AbsolutePath: ValueGraphDependency]
|
loadedPrecompiledFrameworks: inout [AbsolutePath: GraphDependency]
|
||||||
) throws -> Set<ValueGraphDependency> {
|
) throws -> Set<GraphDependency> {
|
||||||
var newDependencies: Set<ValueGraphDependency> = Set()
|
var newDependencies: Set<GraphDependency> = Set()
|
||||||
try dependencies.forEach { dependency in
|
try dependencies.forEach { dependency in
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let targetDependency: ValueGraphTarget
|
let targetDependency: GraphTarget
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case let .target(name: name, path: path):
|
case let .target(name: name, path: path):
|
||||||
guard
|
guard
|
||||||
|
@ -173,7 +173,7 @@ class CacheGraphMutator: CacheGraphMutating {
|
||||||
}
|
}
|
||||||
|
|
||||||
// We load the .framework (or fallback on .xcframework)
|
// We load the .framework (or fallback on .xcframework)
|
||||||
let precompiledFramework: ValueGraphDependency = try loadPrecompiledFramework(
|
let precompiledFramework: GraphDependency = try loadPrecompiledFramework(
|
||||||
path: precompiledFrameworkPath,
|
path: precompiledFrameworkPath,
|
||||||
loadedPrecompiledFrameworks: &loadedPrecompiledFrameworks
|
loadedPrecompiledFrameworks: &loadedPrecompiledFrameworks
|
||||||
)
|
)
|
||||||
|
@ -206,25 +206,25 @@ class CacheGraphMutator: CacheGraphMutating {
|
||||||
|
|
||||||
fileprivate func loadPrecompiledFramework(
|
fileprivate func loadPrecompiledFramework(
|
||||||
path: AbsolutePath,
|
path: AbsolutePath,
|
||||||
loadedPrecompiledFrameworks: inout [AbsolutePath: ValueGraphDependency]
|
loadedPrecompiledFrameworks: inout [AbsolutePath: GraphDependency]
|
||||||
) throws -> ValueGraphDependency {
|
) throws -> GraphDependency {
|
||||||
if let cachedFramework = loadedPrecompiledFrameworks[path] {
|
if let cachedFramework = loadedPrecompiledFrameworks[path] {
|
||||||
return cachedFramework
|
return cachedFramework
|
||||||
} else if let framework: ValueGraphDependency = try? frameworkLoader.load(path: path) {
|
} else if let framework: GraphDependency = try? frameworkLoader.load(path: path) {
|
||||||
loadedPrecompiledFrameworks[path] = framework
|
loadedPrecompiledFrameworks[path] = framework
|
||||||
return framework
|
return framework
|
||||||
} else {
|
} else {
|
||||||
let xcframework: ValueGraphDependency = try xcframeworkLoader.load(path: path)
|
let xcframework: GraphDependency = try xcframeworkLoader.load(path: path)
|
||||||
loadedPrecompiledFrameworks[path] = xcframework
|
loadedPrecompiledFrameworks[path] = xcframework
|
||||||
return xcframework
|
return xcframework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fileprivate func precompiledFrameworkPath(
|
fileprivate func precompiledFrameworkPath(
|
||||||
target: ValueGraphTarget,
|
target: GraphTarget,
|
||||||
graphTraverser: GraphTraversing,
|
graphTraverser: GraphTraversing,
|
||||||
precompiledFrameworks: [ValueGraphTarget: AbsolutePath],
|
precompiledFrameworks: [GraphTarget: AbsolutePath],
|
||||||
visitedPrecompiledFrameworkPaths: inout [ValueGraphTarget: VisitedPrecompiledFramework?]
|
visitedPrecompiledFrameworkPaths: inout [GraphTarget: VisitedPrecompiledFramework?]
|
||||||
) -> AbsolutePath? {
|
) -> AbsolutePath? {
|
||||||
// Already visited
|
// Already visited
|
||||||
if let visited = visitedPrecompiledFrameworkPaths[target] { return visited?.path }
|
if let visited = visitedPrecompiledFrameworkPaths[target] { return visited?.path }
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class CacheMapper: GraphMapping {
|
||||||
|
|
||||||
// MARK: - GraphMapping
|
// MARK: - GraphMapping
|
||||||
|
|
||||||
public func map(graph: ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor]) {
|
public func map(graph: Graph) throws -> (Graph, [SideEffectDescriptor]) {
|
||||||
let single = hashes(graph: graph).flatMap { self.map(graph: graph, hashes: $0, sources: self.sources) }
|
let single = hashes(graph: graph).flatMap { self.map(graph: graph, hashes: $0, sources: self.sources) }
|
||||||
return try (single.toBlocking().single(), [])
|
return try (single.toBlocking().single(), [])
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ public class CacheMapper: GraphMapping {
|
||||||
return DispatchQueue(label: "io.tuist.generator-cache-mapper.\(qos)", qos: qos, attributes: [], target: nil)
|
return DispatchQueue(label: "io.tuist.generator-cache-mapper.\(qos)", qos: qos, attributes: [], target: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func hashes(graph: ValueGraph) -> Single<[ValueGraphTarget: String]> {
|
private func hashes(graph: Graph) -> Single<[GraphTarget: String]> {
|
||||||
Single.create { (observer) -> Disposable in
|
Single.create { (observer) -> Disposable in
|
||||||
do {
|
do {
|
||||||
let hashes = try self.cacheGraphContentHasher.contentHashes(
|
let hashes = try self.cacheGraphContentHasher.contentHashes(
|
||||||
|
@ -101,7 +101,7 @@ public class CacheMapper: GraphMapping {
|
||||||
.subscribeOn(ConcurrentDispatchQueueScheduler(queue: queue))
|
.subscribeOn(ConcurrentDispatchQueueScheduler(queue: queue))
|
||||||
}
|
}
|
||||||
|
|
||||||
private func map(graph: ValueGraph, hashes: [ValueGraphTarget: String], sources: Set<String>) -> Single<ValueGraph> {
|
private func map(graph: Graph, hashes: [GraphTarget: String], sources: Set<String>) -> Single<Graph> {
|
||||||
fetch(hashes: hashes).map { xcframeworkPaths in
|
fetch(hashes: hashes).map { xcframeworkPaths in
|
||||||
try self.cacheGraphMutator.map(
|
try self.cacheGraphMutator.map(
|
||||||
graph: graph,
|
graph: graph,
|
||||||
|
@ -111,16 +111,16 @@ public class CacheMapper: GraphMapping {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func fetch(hashes: [ValueGraphTarget: String]) -> Single<[ValueGraphTarget: AbsolutePath]> {
|
private func fetch(hashes: [GraphTarget: String]) -> Single<[GraphTarget: AbsolutePath]> {
|
||||||
Single.zip(hashes.map { target, hash in
|
Single.zip(hashes.map { target, hash in
|
||||||
self.cache.exists(hash: hash)
|
self.cache.exists(hash: hash)
|
||||||
.flatMap { (exists) -> Single<(target: ValueGraphTarget, path: AbsolutePath?)> in
|
.flatMap { (exists) -> Single<(target: GraphTarget, path: AbsolutePath?)> in
|
||||||
guard exists else { return Single.just((target: target, path: nil)) }
|
guard exists else { return Single.just((target: target, path: nil)) }
|
||||||
return self.cache.fetch(hash: hash).map { (target: target, path: $0) }
|
return self.cache.fetch(hash: hash).map { (target: target, path: $0) }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.map { result in
|
.map { result in
|
||||||
result.reduce(into: [ValueGraphTarget: AbsolutePath]()) { acc, next in
|
result.reduce(into: [GraphTarget: AbsolutePath]()) { acc, next in
|
||||||
guard let path = next.path else { return }
|
guard let path = next.path else { return }
|
||||||
acc[next.target] = path
|
acc[next.target] = path
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import TuistGraph
|
||||||
public final class CacheTreeShakingGraphMapper: GraphMapping {
|
public final class CacheTreeShakingGraphMapper: GraphMapping {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
public func map(graph: ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor]) {
|
public func map(graph: Graph) throws -> (Graph, [SideEffectDescriptor]) {
|
||||||
let sourceTargets: Set<TargetReference> = Set(graph.targets.flatMap { (projectPath, targets) -> [TargetReference] in
|
let sourceTargets: Set<TargetReference> = Set(graph.targets.flatMap { (projectPath, targets) -> [TargetReference] in
|
||||||
guard graph.projects[projectPath] != nil else { return [] }
|
guard graph.projects[projectPath] != nil else { return [] }
|
||||||
return targets.compactMap { (_, target) -> TargetReference? in
|
return targets.compactMap { (_, target) -> TargetReference? in
|
||||||
|
@ -64,7 +64,7 @@ public final class CacheTreeShakingGraphMapper: GraphMapping {
|
||||||
return workspace
|
return workspace
|
||||||
}
|
}
|
||||||
|
|
||||||
fileprivate func treeShake(targets: [Target], path: AbsolutePath, graph: ValueGraph, sourceTargets: Set<TargetReference>) -> [Target] {
|
fileprivate func treeShake(targets: [Target], path: AbsolutePath, graph: Graph, sourceTargets: Set<TargetReference>) -> [Target] {
|
||||||
targets.compactMap { (target) -> Target? in
|
targets.compactMap { (target) -> Target? in
|
||||||
guard let target = graph.targets[path, default: [:]][target.name] else { return nil }
|
guard let target = graph.targets[path, default: [:]][target.name] else { return nil }
|
||||||
let targetReference = TargetReference(projectPath: path, name: target.name)
|
let targetReference = TargetReference(projectPath: path, name: target.name)
|
||||||
|
|
|
@ -40,15 +40,15 @@ public final class TestsCacheGraphMapper: GraphMapping {
|
||||||
self.cacheDirectoryProviderFactory = cacheDirectoryProviderFactory
|
self.cacheDirectoryProviderFactory = cacheDirectoryProviderFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
public func map(graph: ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor]) {
|
public func map(graph: Graph) throws -> (Graph, [SideEffectDescriptor]) {
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let hashableTargets = self.hashableTargets(graphTraverser: graphTraverser)
|
let hashableTargets = self.hashableTargets(graphTraverser: graphTraverser)
|
||||||
let hashes = try graphContentHasher.contentHashes(for: graph, filter: hashableTargets.contains)
|
let hashes = try graphContentHasher.contentHashes(for: graph, filter: hashableTargets.contains)
|
||||||
let testsCacheDirectory = try cacheDirectoryProviderFactory.cacheDirectories(config: config).testsCacheDirectory
|
let testsCacheDirectory = try cacheDirectoryProviderFactory.cacheDirectories(config: config).testsCacheDirectory
|
||||||
var visitedNodes: [ValueGraphTarget: Bool] = [:]
|
var visitedNodes: [GraphTarget: Bool] = [:]
|
||||||
var workspace = graph.workspace
|
var workspace = graph.workspace
|
||||||
let mappedSchemes = try workspace.schemes
|
let mappedSchemes = try workspace.schemes
|
||||||
.map { scheme -> (Scheme, [ValueGraphTarget]) in
|
.map { scheme -> (Scheme, [GraphTarget]) in
|
||||||
try map(
|
try map(
|
||||||
scheme: scheme,
|
scheme: scheme,
|
||||||
graphTraverser: graphTraverser,
|
graphTraverser: graphTraverser,
|
||||||
|
@ -79,15 +79,15 @@ public final class TestsCacheGraphMapper: GraphMapping {
|
||||||
|
|
||||||
// MARK: - Helpers
|
// MARK: - Helpers
|
||||||
|
|
||||||
private func hashableTargets(graphTraverser: GraphTraversing) -> Set<ValueGraphTarget> {
|
private func hashableTargets(graphTraverser: GraphTraversing) -> Set<GraphTarget> {
|
||||||
var visitedTargets: [ValueGraphTarget: Bool] = [:]
|
var visitedTargets: [GraphTarget: Bool] = [:]
|
||||||
return Set(
|
return Set(
|
||||||
graphTraverser.allTargets()
|
graphTraverser.allTargets()
|
||||||
// UI tests depend on the device they are run on
|
// UI tests depend on the device they are run on
|
||||||
// This can be done in the future if we hash the ID of the device
|
// This can be done in the future if we hash the ID of the device
|
||||||
// But currently, we consider for hashing only unit tests and its dependencies
|
// But currently, we consider for hashing only unit tests and its dependencies
|
||||||
.filter { $0.target.product == .unitTests }
|
.filter { $0.target.product == .unitTests }
|
||||||
.flatMap { target -> [ValueGraphTarget] in
|
.flatMap { target -> [GraphTarget] in
|
||||||
targetDependencies(
|
targetDependencies(
|
||||||
target,
|
target,
|
||||||
graphTraverser: graphTraverser,
|
graphTraverser: graphTraverser,
|
||||||
|
@ -98,10 +98,10 @@ public final class TestsCacheGraphMapper: GraphMapping {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func targetDependencies(
|
private func targetDependencies(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
graphTraverser: GraphTraversing,
|
graphTraverser: GraphTraversing,
|
||||||
visited: inout [ValueGraphTarget: Bool]
|
visited: inout [GraphTarget: Bool]
|
||||||
) -> [ValueGraphTarget] {
|
) -> [GraphTarget] {
|
||||||
if visited[target] == true { return [] }
|
if visited[target] == true { return [] }
|
||||||
let targetDependencies = graphTraverser.directTargetDependencies(
|
let targetDependencies = graphTraverser.directTargetDependencies(
|
||||||
path: target.path,
|
path: target.path,
|
||||||
|
@ -118,7 +118,7 @@ public final class TestsCacheGraphMapper: GraphMapping {
|
||||||
return targetDependencies + [target]
|
return targetDependencies + [target]
|
||||||
}
|
}
|
||||||
|
|
||||||
private func testableTargets(scheme: Scheme, graphTraverser: GraphTraversing) -> [ValueGraphTarget] {
|
private func testableTargets(scheme: Scheme, graphTraverser: GraphTraversing) -> [GraphTarget] {
|
||||||
scheme.testAction
|
scheme.testAction
|
||||||
.map(\.targets)
|
.map(\.targets)
|
||||||
.map { testTargets in
|
.map { testTargets in
|
||||||
|
@ -127,7 +127,7 @@ public final class TestsCacheGraphMapper: GraphMapping {
|
||||||
let target = graphTraverser.targets[testTarget.target.projectPath]?[testTarget.target.name],
|
let target = graphTraverser.targets[testTarget.target.projectPath]?[testTarget.target.name],
|
||||||
let project = graphTraverser.projects[testTarget.target.projectPath]
|
let project = graphTraverser.projects[testTarget.target.projectPath]
|
||||||
else { return nil }
|
else { return nil }
|
||||||
return ValueGraphTarget(
|
return GraphTarget(
|
||||||
path: testTarget.target.projectPath,
|
path: testTarget.target.projectPath,
|
||||||
target: target,
|
target: target,
|
||||||
project: project
|
project: project
|
||||||
|
@ -140,10 +140,10 @@ public final class TestsCacheGraphMapper: GraphMapping {
|
||||||
private func map(
|
private func map(
|
||||||
scheme: Scheme,
|
scheme: Scheme,
|
||||||
graphTraverser: GraphTraversing,
|
graphTraverser: GraphTraversing,
|
||||||
hashes: [ValueGraphTarget: String],
|
hashes: [GraphTarget: String],
|
||||||
visited: inout [ValueGraphTarget: Bool],
|
visited: inout [GraphTarget: Bool],
|
||||||
testsCacheDirectory: AbsolutePath
|
testsCacheDirectory: AbsolutePath
|
||||||
) throws -> (Scheme, [ValueGraphTarget]) {
|
) throws -> (Scheme, [GraphTarget]) {
|
||||||
var scheme = scheme
|
var scheme = scheme
|
||||||
guard let testAction = scheme.testAction else { return (scheme, []) }
|
guard let testAction = scheme.testAction else { return (scheme, []) }
|
||||||
let cachedTestableTargets = testableTargets(
|
let cachedTestableTargets = testableTargets(
|
||||||
|
@ -174,10 +174,10 @@ public final class TestsCacheGraphMapper: GraphMapping {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func isCached(
|
private func isCached(
|
||||||
_ target: ValueGraphTarget,
|
_ target: GraphTarget,
|
||||||
graphTraverser: GraphTraversing,
|
graphTraverser: GraphTraversing,
|
||||||
hashes: [ValueGraphTarget: String],
|
hashes: [GraphTarget: String],
|
||||||
visited: inout [ValueGraphTarget: Bool],
|
visited: inout [GraphTarget: Bool],
|
||||||
testsCacheDirectory: AbsolutePath
|
testsCacheDirectory: AbsolutePath
|
||||||
) -> Bool {
|
) -> Bool {
|
||||||
if let visitedValue = visited[target] { return visitedValue }
|
if let visitedValue = visited[target] { return visitedValue }
|
||||||
|
|
|
@ -8,14 +8,14 @@ import TuistSupport
|
||||||
public protocol CacheGraphLinting {
|
public protocol CacheGraphLinting {
|
||||||
/// Lint a given graph.
|
/// Lint a given graph.
|
||||||
/// - Parameter graph: Graph to be linted.
|
/// - Parameter graph: Graph to be linted.
|
||||||
func lint(graph: ValueGraph)
|
func lint(graph: Graph)
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class CacheGraphLinter: CacheGraphLinting {
|
public final class CacheGraphLinter: CacheGraphLinting {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
public func lint(graph: ValueGraph) {
|
public func lint(graph: Graph) {
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let targets = graphTraverser.allTargets()
|
let targets = graphTraverser.allTargets()
|
||||||
let targetsWithActions = targets.filter { $0.target.actions.count != 0 }
|
let targetsWithActions = targets.filter { $0.target.actions.count != 0 }
|
||||||
if !targetsWithActions.isEmpty {
|
if !targetsWithActions.isEmpty {
|
||||||
|
|
|
@ -6,12 +6,12 @@ import TuistGraph
|
||||||
public final class MockCacheGraphContentHasher: CacheGraphContentHashing {
|
public final class MockCacheGraphContentHasher: CacheGraphContentHashing {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
public var contentHashesStub: ((ValueGraph, TuistGraph.Cache.Profile, CacheOutputType) throws -> [ValueGraphTarget: String])?
|
public var contentHashesStub: ((Graph, TuistGraph.Cache.Profile, CacheOutputType) throws -> [GraphTarget: String])?
|
||||||
public func contentHashes(
|
public func contentHashes(
|
||||||
for graph: ValueGraph,
|
for graph: Graph,
|
||||||
cacheProfile: TuistGraph.Cache.Profile,
|
cacheProfile: TuistGraph.Cache.Profile,
|
||||||
cacheOutputType: CacheOutputType
|
cacheOutputType: CacheOutputType
|
||||||
) throws -> [ValueGraphTarget: String] {
|
) throws -> [GraphTarget: String] {
|
||||||
try contentHashesStub?(graph, cacheProfile, cacheOutputType) ?? [:]
|
try contentHashesStub?(graph, cacheProfile, cacheOutputType) ?? [:]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,12 @@ import TuistGraph
|
||||||
public final class MockGraphContentHasher: GraphContentHashing {
|
public final class MockGraphContentHasher: GraphContentHashing {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
public var contentHashesStub: ((ValueGraph, (ValueGraphTarget) -> Bool, [String]) throws -> [ValueGraphTarget: String])?
|
public var contentHashesStub: ((Graph, (GraphTarget) -> Bool, [String]) throws -> [GraphTarget: String])?
|
||||||
public func contentHashes(
|
public func contentHashes(
|
||||||
for graph: ValueGraph,
|
for graph: Graph,
|
||||||
filter: (ValueGraphTarget) -> Bool,
|
filter: (GraphTarget) -> Bool,
|
||||||
additionalStrings: [String]
|
additionalStrings: [String]
|
||||||
) throws -> [ValueGraphTarget: String] {
|
) throws -> [GraphTarget: String] {
|
||||||
try contentHashesStub?(graph, filter, additionalStrings) ?? [:]
|
try contentHashesStub?(graph, filter, additionalStrings) ?? [:]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,12 @@ import TuistGraph
|
||||||
public final class MockCacheGraphLinter: CacheGraphLinting {
|
public final class MockCacheGraphLinter: CacheGraphLinting {
|
||||||
public var invokedLint = false
|
public var invokedLint = false
|
||||||
public var invokedLintCount = 0
|
public var invokedLintCount = 0
|
||||||
public var invokedLintParameters: (graph: ValueGraph, Void)?
|
public var invokedLintParameters: (graph: Graph, Void)?
|
||||||
public var invokedLintParametersList = [(graph: ValueGraph, Void)]()
|
public var invokedLintParametersList = [(graph: Graph, Void)]()
|
||||||
|
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
public func lint(graph: ValueGraph) {
|
public func lint(graph: Graph) {
|
||||||
invokedLint = true
|
invokedLint = true
|
||||||
invokedLintCount += 1
|
invokedLintCount += 1
|
||||||
invokedLintParameters = (graph, ())
|
invokedLintParameters = (graph, ())
|
||||||
|
|
|
@ -28,7 +28,7 @@ public enum GraphDependencyReference: Equatable, Comparable, Hashable {
|
||||||
case product(target: String, productName: String)
|
case product(target: String, productName: String)
|
||||||
case sdk(path: AbsolutePath, status: SDKStatus, source: SDKSource)
|
case sdk(path: AbsolutePath, status: SDKStatus, source: SDKSource)
|
||||||
|
|
||||||
init(_ dependency: ValueGraphDependency) {
|
init(_ dependency: GraphDependency) {
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case let .framework(path, binaryPath, dsymPath, bcsymbolmapPaths, linking, architectures, isCarthage):
|
case let .framework(path, binaryPath, dsymPath, bcsymbolmapPaths, linking, architectures, isCarthage):
|
||||||
self = .framework(
|
self = .framework(
|
||||||
|
|
|
@ -2,15 +2,15 @@ import Foundation
|
||||||
import TSCBasic
|
import TSCBasic
|
||||||
import TuistGraph
|
import TuistGraph
|
||||||
|
|
||||||
public protocol ValueGraphLoading {
|
public protocol GraphLoading {
|
||||||
func loadWorkspace(workspace: Workspace, projects: [Project]) throws -> ValueGraph
|
func loadWorkspace(workspace: Workspace, projects: [Project]) throws -> Graph
|
||||||
func loadProject(at path: AbsolutePath, projects: [Project]) throws -> (Project, ValueGraph)
|
func loadProject(at path: AbsolutePath, projects: [Project]) throws -> (Project, Graph)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - ValueGraphLoader
|
// MARK: - GraphLoader
|
||||||
|
|
||||||
// swiftlint:disable:next type_body_length
|
// swiftlint:disable:next type_body_length
|
||||||
public final class ValueGraphLoader: ValueGraphLoading {
|
public final class GraphLoader: GraphLoading {
|
||||||
private let frameworkMetadataProvider: FrameworkMetadataProviding
|
private let frameworkMetadataProvider: FrameworkMetadataProviding
|
||||||
private let libraryMetadataProvider: LibraryMetadataProviding
|
private let libraryMetadataProvider: LibraryMetadataProviding
|
||||||
private let xcframeworkMetadataProvider: XCFrameworkMetadataProviding
|
private let xcframeworkMetadataProvider: XCFrameworkMetadataProviding
|
||||||
|
@ -37,9 +37,9 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
self.systemFrameworkMetadataProvider = systemFrameworkMetadataProvider
|
self.systemFrameworkMetadataProvider = systemFrameworkMetadataProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - ValueGraphLoading
|
// MARK: - GraphLoading
|
||||||
|
|
||||||
public func loadWorkspace(workspace: Workspace, projects: [Project]) throws -> ValueGraph {
|
public func loadWorkspace(workspace: Workspace, projects: [Project]) throws -> Graph {
|
||||||
let cache = Cache(projects: projects)
|
let cache = Cache(projects: projects)
|
||||||
let cycleDetector = GraphCircularDetector()
|
let cycleDetector = GraphCircularDetector()
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
}
|
}
|
||||||
|
|
||||||
let updatedWorkspace = workspace.replacing(projects: cache.loadedProjects.keys.sorted())
|
let updatedWorkspace = workspace.replacing(projects: cache.loadedProjects.keys.sorted())
|
||||||
let graph = ValueGraph(
|
let graph = Graph(
|
||||||
name: updatedWorkspace.name,
|
name: updatedWorkspace.name,
|
||||||
path: updatedWorkspace.path,
|
path: updatedWorkspace.path,
|
||||||
workspace: updatedWorkspace,
|
workspace: updatedWorkspace,
|
||||||
|
@ -64,7 +64,7 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
return graph
|
return graph
|
||||||
}
|
}
|
||||||
|
|
||||||
public func loadProject(at path: AbsolutePath, projects: [Project]) throws -> (Project, ValueGraph) {
|
public func loadProject(at path: AbsolutePath, projects: [Project]) throws -> (Project, Graph) {
|
||||||
let cache = Cache(projects: projects)
|
let cache = Cache(projects: projects)
|
||||||
guard let rootProject = cache.allProjects[path] else {
|
guard let rootProject = cache.allProjects[path] else {
|
||||||
throw GraphLoadingError.missingProject(path)
|
throw GraphLoadingError.missingProject(path)
|
||||||
|
@ -78,7 +78,7 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
name: rootProject.name,
|
name: rootProject.name,
|
||||||
projects: cache.loadedProjects.keys.sorted()
|
projects: cache.loadedProjects.keys.sorted()
|
||||||
)
|
)
|
||||||
let graph = ValueGraph(
|
let graph = Graph(
|
||||||
name: rootProject.name,
|
name: rootProject.name,
|
||||||
path: path,
|
path: path,
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
|
@ -159,7 +159,7 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
dependency: TargetDependency,
|
dependency: TargetDependency,
|
||||||
cache: Cache,
|
cache: Cache,
|
||||||
cycleDetector: GraphCircularDetector
|
cycleDetector: GraphCircularDetector
|
||||||
) throws -> ValueGraphDependency {
|
) throws -> GraphDependency {
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case let .target(toTarget):
|
case let .target(toTarget):
|
||||||
// A target within the same project.
|
// A target within the same project.
|
||||||
|
@ -216,13 +216,13 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func loadFramework(path: AbsolutePath, cache: Cache) throws -> ValueGraphDependency {
|
private func loadFramework(path: AbsolutePath, cache: Cache) throws -> GraphDependency {
|
||||||
if let loaded = cache.frameworks[path] {
|
if let loaded = cache.frameworks[path] {
|
||||||
return loaded
|
return loaded
|
||||||
}
|
}
|
||||||
|
|
||||||
let metadata = try frameworkMetadataProvider.loadMetadata(at: path)
|
let metadata = try frameworkMetadataProvider.loadMetadata(at: path)
|
||||||
let framework: ValueGraphDependency = .framework(
|
let framework: GraphDependency = .framework(
|
||||||
path: metadata.path,
|
path: metadata.path,
|
||||||
binaryPath: metadata.binaryPath,
|
binaryPath: metadata.binaryPath,
|
||||||
dsymPath: metadata.dsymPath,
|
dsymPath: metadata.dsymPath,
|
||||||
|
@ -240,7 +240,7 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
publicHeaders: AbsolutePath,
|
publicHeaders: AbsolutePath,
|
||||||
swiftModuleMap: AbsolutePath?,
|
swiftModuleMap: AbsolutePath?,
|
||||||
cache: Cache
|
cache: Cache
|
||||||
) throws -> ValueGraphDependency {
|
) throws -> GraphDependency {
|
||||||
if let loaded = cache.libraries[path] {
|
if let loaded = cache.libraries[path] {
|
||||||
return loaded
|
return loaded
|
||||||
}
|
}
|
||||||
|
@ -250,7 +250,7 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
publicHeaders: publicHeaders,
|
publicHeaders: publicHeaders,
|
||||||
swiftModuleMap: swiftModuleMap
|
swiftModuleMap: swiftModuleMap
|
||||||
)
|
)
|
||||||
let library: ValueGraphDependency = .library(
|
let library: GraphDependency = .library(
|
||||||
path: metadata.path,
|
path: metadata.path,
|
||||||
publicHeaders: metadata.publicHeaders,
|
publicHeaders: metadata.publicHeaders,
|
||||||
linking: metadata.linking,
|
linking: metadata.linking,
|
||||||
|
@ -261,13 +261,13 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
return library
|
return library
|
||||||
}
|
}
|
||||||
|
|
||||||
private func loadXCFramework(path: AbsolutePath, cache: Cache) throws -> ValueGraphDependency {
|
private func loadXCFramework(path: AbsolutePath, cache: Cache) throws -> GraphDependency {
|
||||||
if let loaded = cache.xcframeworks[path] {
|
if let loaded = cache.xcframeworks[path] {
|
||||||
return loaded
|
return loaded
|
||||||
}
|
}
|
||||||
|
|
||||||
let metadata = try xcframeworkMetadataProvider.loadMetadata(at: path)
|
let metadata = try xcframeworkMetadataProvider.loadMetadata(at: path)
|
||||||
let xcframework: ValueGraphDependency = .xcframework(
|
let xcframework: GraphDependency = .xcframework(
|
||||||
path: metadata.path,
|
path: metadata.path,
|
||||||
infoPlist: metadata.infoPlist,
|
infoPlist: metadata.infoPlist,
|
||||||
primaryBinaryPath: metadata.primaryBinaryPath,
|
primaryBinaryPath: metadata.primaryBinaryPath,
|
||||||
|
@ -280,18 +280,18 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
private func loadSDK(name: String,
|
private func loadSDK(name: String,
|
||||||
platform: Platform,
|
platform: Platform,
|
||||||
status: SDKStatus,
|
status: SDKStatus,
|
||||||
source: SDKSource) throws -> ValueGraphDependency
|
source: SDKSource) throws -> GraphDependency
|
||||||
{
|
{
|
||||||
let metadata = try systemFrameworkMetadataProvider.loadMetadata(sdkName: name, status: status, platform: platform, source: source)
|
let metadata = try systemFrameworkMetadataProvider.loadMetadata(sdkName: name, status: status, platform: platform, source: source)
|
||||||
return .sdk(name: metadata.name, path: metadata.path, status: metadata.status, source: metadata.source)
|
return .sdk(name: metadata.name, path: metadata.path, status: metadata.status, source: metadata.source)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func loadXCTestSDK(platform: Platform) throws -> ValueGraphDependency {
|
private func loadXCTestSDK(platform: Platform) throws -> GraphDependency {
|
||||||
let metadata = try systemFrameworkMetadataProvider.loadXCTestMetadata(platform: platform)
|
let metadata = try systemFrameworkMetadataProvider.loadXCTestMetadata(platform: platform)
|
||||||
return .sdk(name: metadata.name, path: metadata.path, status: metadata.status, source: metadata.source)
|
return .sdk(name: metadata.name, path: metadata.path, status: metadata.status, source: metadata.source)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func loadPackage(fromPath: AbsolutePath, productName: String) throws -> ValueGraphDependency {
|
private func loadPackage(fromPath: AbsolutePath, productName: String) throws -> GraphDependency {
|
||||||
// TODO: `fromPath` isn't quite correct as it reflects the path where the dependency was declared
|
// TODO: `fromPath` isn't quite correct as it reflects the path where the dependency was declared
|
||||||
// and doesn't uniquely identify it. It's been copied from the previous implementation to maintain
|
// and doesn't uniquely identify it. It's been copied from the previous implementation to maintain
|
||||||
// existing behaviour and should be fixed separately
|
// existing behaviour and should be fixed separately
|
||||||
|
@ -307,10 +307,10 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
|
|
||||||
var loadedProjects: [AbsolutePath: Project] = [:]
|
var loadedProjects: [AbsolutePath: Project] = [:]
|
||||||
var loadedTargets: [AbsolutePath: [String: Target]] = [:]
|
var loadedTargets: [AbsolutePath: [String: Target]] = [:]
|
||||||
var dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [:]
|
var dependencies: [GraphDependency: Set<GraphDependency>] = [:]
|
||||||
var frameworks: [AbsolutePath: ValueGraphDependency] = [:]
|
var frameworks: [AbsolutePath: GraphDependency] = [:]
|
||||||
var libraries: [AbsolutePath: ValueGraphDependency] = [:]
|
var libraries: [AbsolutePath: GraphDependency] = [:]
|
||||||
var xcframeworks: [AbsolutePath: ValueGraphDependency] = [:]
|
var xcframeworks: [AbsolutePath: GraphDependency] = [:]
|
||||||
var packages: [AbsolutePath: [String: Package]] = [:]
|
var packages: [AbsolutePath: [String: Package]] = [:]
|
||||||
|
|
||||||
init(projects: [Project]) {
|
init(projects: [Project]) {
|
||||||
|
@ -333,15 +333,15 @@ public final class ValueGraphLoader: ValueGraphLoading {
|
||||||
loadedTargets[path, default: [:]][target.name] = target
|
loadedTargets[path, default: [:]][target.name] = target
|
||||||
}
|
}
|
||||||
|
|
||||||
func add(framework: ValueGraphDependency, at path: AbsolutePath) {
|
func add(framework: GraphDependency, at path: AbsolutePath) {
|
||||||
frameworks[path] = framework
|
frameworks[path] = framework
|
||||||
}
|
}
|
||||||
|
|
||||||
func add(xcframework: ValueGraphDependency, at path: AbsolutePath) {
|
func add(xcframework: GraphDependency, at path: AbsolutePath) {
|
||||||
xcframeworks[path] = xcframework
|
xcframeworks[path] = xcframework
|
||||||
}
|
}
|
||||||
|
|
||||||
func add(library: ValueGraphDependency, at path: AbsolutePath) {
|
func add(library: GraphDependency, at path: AbsolutePath) {
|
||||||
libraries[path] = library
|
libraries[path] = library
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,19 +4,19 @@ import TuistGraph
|
||||||
import TuistSupport
|
import TuistSupport
|
||||||
|
|
||||||
// swiftlint:disable type_body_length
|
// swiftlint:disable type_body_length
|
||||||
public class ValueGraphTraverser: GraphTraversing {
|
public class GraphTraverser: GraphTraversing {
|
||||||
public var name: String { graph.name }
|
public var name: String { graph.name }
|
||||||
public var hasPackages: Bool { !graph.packages.flatMap(\.value).isEmpty }
|
public var hasPackages: Bool { !graph.packages.flatMap(\.value).isEmpty }
|
||||||
public var path: AbsolutePath { graph.path }
|
public var path: AbsolutePath { graph.path }
|
||||||
public var workspace: Workspace { graph.workspace }
|
public var workspace: Workspace { graph.workspace }
|
||||||
public var projects: [AbsolutePath: Project] { graph.projects }
|
public var projects: [AbsolutePath: Project] { graph.projects }
|
||||||
public var targets: [AbsolutePath: [String: Target]] { graph.targets }
|
public var targets: [AbsolutePath: [String: Target]] { graph.targets }
|
||||||
public var dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] { graph.dependencies }
|
public var dependencies: [GraphDependency: Set<GraphDependency>] { graph.dependencies }
|
||||||
|
|
||||||
private let graph: ValueGraph
|
private let graph: Graph
|
||||||
private let systemFrameworkMetadataProvider: SystemFrameworkMetadataProviding = SystemFrameworkMetadataProvider()
|
private let systemFrameworkMetadataProvider: SystemFrameworkMetadataProviding = SystemFrameworkMetadataProvider()
|
||||||
|
|
||||||
public required init(graph: ValueGraph) {
|
public required init(graph: Graph) {
|
||||||
self.graph = graph
|
self.graph = graph
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,17 +29,17 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
}) != nil
|
}) != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
public func rootTargets() -> Set<ValueGraphTarget> {
|
public func rootTargets() -> Set<GraphTarget> {
|
||||||
Set(graph.workspace.projects.reduce(into: Set()) { result, path in
|
Set(graph.workspace.projects.reduce(into: Set()) { result, path in
|
||||||
result.formUnion(targets(at: path))
|
result.formUnion(targets(at: path))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
public func allTargets() -> Set<ValueGraphTarget> {
|
public func allTargets() -> Set<GraphTarget> {
|
||||||
Set(projects.flatMap { (projectPath, project) -> [ValueGraphTarget] in
|
Set(projects.flatMap { (projectPath, project) -> [GraphTarget] in
|
||||||
let targets = graph.targets[projectPath, default: [:]]
|
let targets = graph.targets[projectPath, default: [:]]
|
||||||
return targets.values.map { target in
|
return targets.values.map { target in
|
||||||
ValueGraphTarget(path: projectPath, target: target, project: project)
|
GraphTarget(path: projectPath, target: target, project: project)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -58,11 +58,11 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
dependencies.reduce(into: Set<AbsolutePath>()) { acc, next in
|
dependencies.reduce(into: Set<AbsolutePath>()) { acc, next in
|
||||||
let fromDependency = next.key
|
let fromDependency = next.key
|
||||||
let toDependencies = next.value
|
let toDependencies = next.value
|
||||||
if case let ValueGraphDependency.cocoapods(path) = fromDependency {
|
if case let GraphDependency.cocoapods(path) = fromDependency {
|
||||||
acc.insert(path)
|
acc.insert(path)
|
||||||
}
|
}
|
||||||
toDependencies.forEach { toDependency in
|
toDependencies.forEach { toDependency in
|
||||||
if case let ValueGraphDependency.cocoapods(path) = toDependency {
|
if case let GraphDependency.cocoapods(path) = toDependency {
|
||||||
acc.insert(path)
|
acc.insert(path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,40 +70,40 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func precompiledFrameworksPaths() -> Set<AbsolutePath> {
|
public func precompiledFrameworksPaths() -> Set<AbsolutePath> {
|
||||||
let dependencies = graph.dependencies.reduce(into: Set<ValueGraphDependency>()) { acc, next in
|
let dependencies = graph.dependencies.reduce(into: Set<GraphDependency>()) { acc, next in
|
||||||
acc.formUnion([next.key])
|
acc.formUnion([next.key])
|
||||||
acc.formUnion(next.value)
|
acc.formUnion(next.value)
|
||||||
}
|
}
|
||||||
return Set(dependencies.compactMap { dependency -> AbsolutePath? in
|
return Set(dependencies.compactMap { dependency -> AbsolutePath? in
|
||||||
guard case let ValueGraphDependency.framework(path, _, _, _, _, _, _) = dependency else { return nil }
|
guard case let GraphDependency.framework(path, _, _, _, _, _, _) = dependency else { return nil }
|
||||||
return path
|
return path
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
public func targets(product: Product) -> Set<ValueGraphTarget> {
|
public func targets(product: Product) -> Set<GraphTarget> {
|
||||||
var filteredTargets: Set<ValueGraphTarget> = Set()
|
var filteredTargets: Set<GraphTarget> = Set()
|
||||||
targets.forEach { path, projectTargets in
|
targets.forEach { path, projectTargets in
|
||||||
projectTargets.values.forEach { target in
|
projectTargets.values.forEach { target in
|
||||||
guard target.product == product else { return }
|
guard target.product == product else { return }
|
||||||
guard let project = projects[path] else { return }
|
guard let project = projects[path] else { return }
|
||||||
filteredTargets.formUnion([ValueGraphTarget(path: path, target: target, project: project)])
|
filteredTargets.formUnion([GraphTarget(path: path, target: target, project: project)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return filteredTargets
|
return filteredTargets
|
||||||
}
|
}
|
||||||
|
|
||||||
public func target(path: AbsolutePath, name: String) -> ValueGraphTarget? {
|
public func target(path: AbsolutePath, name: String) -> GraphTarget? {
|
||||||
guard let project = graph.projects[path], let target = graph.targets[path]?[name] else { return nil }
|
guard let project = graph.projects[path], let target = graph.targets[path]?[name] else { return nil }
|
||||||
return ValueGraphTarget(path: path, target: target, project: project)
|
return GraphTarget(path: path, target: target, project: project)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func targets(at path: AbsolutePath) -> Set<ValueGraphTarget> {
|
public func targets(at path: AbsolutePath) -> Set<GraphTarget> {
|
||||||
guard let project = graph.projects[path] else { return Set() }
|
guard let project = graph.projects[path] else { return Set() }
|
||||||
guard let targets = graph.targets[path] else { return [] }
|
guard let targets = graph.targets[path] else { return [] }
|
||||||
return Set(targets.values.map { ValueGraphTarget(path: path, target: $0, project: project) })
|
return Set(targets.values.map { GraphTarget(path: path, target: $0, project: project) })
|
||||||
}
|
}
|
||||||
|
|
||||||
public func directTargetDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
public func directTargetDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
guard
|
guard
|
||||||
let dependencies = graph.dependencies[.target(name: name, path: path)]
|
let dependencies = graph.dependencies[.target(name: name, path: path)]
|
||||||
else { return [] }
|
else { return [] }
|
||||||
|
@ -111,7 +111,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
let targetDependencies = dependencies
|
let targetDependencies = dependencies
|
||||||
.compactMap(\.targetDependency)
|
.compactMap(\.targetDependency)
|
||||||
|
|
||||||
return Set(targetDependencies.flatMap { (dependencyName, dependencyPath) -> [ValueGraphTarget] in
|
return Set(targetDependencies.flatMap { (dependencyName, dependencyPath) -> [GraphTarget] in
|
||||||
guard
|
guard
|
||||||
let projectDependencies = graph.targets[dependencyPath],
|
let projectDependencies = graph.targets[dependencyPath],
|
||||||
let dependencyTarget = projectDependencies[dependencyName],
|
let dependencyTarget = projectDependencies[dependencyName],
|
||||||
|
@ -119,36 +119,36 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
else {
|
else {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
return [ValueGraphTarget(path: dependencyPath, target: dependencyTarget, project: dependencyProject)]
|
return [GraphTarget(path: dependencyPath, target: dependencyTarget, project: dependencyProject)]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
public func directLocalTargetDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
public func directLocalTargetDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
guard let dependencies = graph.dependencies[.target(name: name, path: path)] else { return [] }
|
guard let dependencies = graph.dependencies[.target(name: name, path: path)] else { return [] }
|
||||||
guard let project = graph.projects[path] else { return Set() }
|
guard let project = graph.projects[path] else { return Set() }
|
||||||
|
|
||||||
let localTargetDependencies = dependencies
|
let localTargetDependencies = dependencies
|
||||||
.compactMap(\.targetDependency)
|
.compactMap(\.targetDependency)
|
||||||
.filter { $0.path == path }
|
.filter { $0.path == path }
|
||||||
return Set(localTargetDependencies.flatMap { (dependencyName, dependencyPath) -> [ValueGraphTarget] in
|
return Set(localTargetDependencies.flatMap { (dependencyName, dependencyPath) -> [GraphTarget] in
|
||||||
guard let projectDependencies = graph.targets[dependencyPath],
|
guard let projectDependencies = graph.targets[dependencyPath],
|
||||||
let dependencyTarget = projectDependencies[dependencyName]
|
let dependencyTarget = projectDependencies[dependencyName]
|
||||||
else {
|
else {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
return [ValueGraphTarget(path: path, target: dependencyTarget, project: project)]
|
return [GraphTarget(path: path, target: dependencyTarget, project: project)]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
public func resourceBundleDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
public func resourceBundleDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
guard let target = graph.targets[path]?[name] else { return [] }
|
guard let target = graph.targets[path]?[name] else { return [] }
|
||||||
guard target.supportsResources else { return [] }
|
guard target.supportsResources else { return [] }
|
||||||
|
|
||||||
let canHostResources: (ValueGraphDependency) -> Bool = {
|
let canHostResources: (GraphDependency) -> Bool = {
|
||||||
self.target(from: $0)?.target.supportsResources == true
|
self.target(from: $0)?.target.supportsResources == true
|
||||||
}
|
}
|
||||||
|
|
||||||
let isBundle: (ValueGraphDependency) -> Bool = {
|
let isBundle: (GraphDependency) -> Bool = {
|
||||||
self.target(from: $0)?.target.product == .bundle
|
self.target(from: $0)?.target.product == .bundle
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,25 +162,25 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
return Set(bundleTargets)
|
return Set(bundleTargets)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func testTargetsDependingOn(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
public func testTargetsDependingOn(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
guard let project = graph.projects[path] else { return Set() }
|
guard let project = graph.projects[path] else { return Set() }
|
||||||
|
|
||||||
return Set(graph.targets[path]?.values
|
return Set(graph.targets[path]?.values
|
||||||
.filter { $0.product.testsBundle }
|
.filter { $0.product.testsBundle }
|
||||||
.filter { graph.dependencies[.target(name: $0.name, path: path)]?.contains(.target(name: name, path: path)) == true }
|
.filter { graph.dependencies[.target(name: $0.name, path: path)]?.contains(.target(name: name, path: path)) == true }
|
||||||
.map { ValueGraphTarget(path: path, target: $0, project: project) } ?? [])
|
.map { GraphTarget(path: path, target: $0, project: project) } ?? [])
|
||||||
}
|
}
|
||||||
|
|
||||||
public func target(from dependency: ValueGraphDependency) -> ValueGraphTarget? {
|
public func target(from dependency: GraphDependency) -> GraphTarget? {
|
||||||
guard case let ValueGraphDependency.target(name, path) = dependency else {
|
guard case let GraphDependency.target(name, path) = dependency else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
guard let target = graph.targets[path]?[name] else { return nil }
|
guard let target = graph.targets[path]?[name] else { return nil }
|
||||||
guard let project = graph.projects[path] else { return nil }
|
guard let project = graph.projects[path] else { return nil }
|
||||||
return ValueGraphTarget(path: path, target: target, project: project)
|
return GraphTarget(path: path, target: target, project: project)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func appExtensionDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
public func appExtensionDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
let validProducts: [Product] = [
|
let validProducts: [Product] = [
|
||||||
.appExtension, .stickerPackExtension, .watch2Extension, .tvTopShelfExtension, .messagesExtension,
|
.appExtension, .stickerPackExtension, .watch2Extension, .tvTopShelfExtension, .messagesExtension,
|
||||||
]
|
]
|
||||||
|
@ -188,15 +188,15 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
.filter { validProducts.contains($0.target.product) })
|
.filter { validProducts.contains($0.target.product) })
|
||||||
}
|
}
|
||||||
|
|
||||||
public func appClipDependencies(path: AbsolutePath, name: String) -> ValueGraphTarget? {
|
public func appClipDependencies(path: AbsolutePath, name: String) -> GraphTarget? {
|
||||||
directLocalTargetDependencies(path: path, name: name)
|
directLocalTargetDependencies(path: path, name: name)
|
||||||
.first { $0.target.product == .appClip }
|
.first { $0.target.product == .appClip }
|
||||||
}
|
}
|
||||||
|
|
||||||
public func directStaticDependencies(path: AbsolutePath, name: String) -> Set<GraphDependencyReference> {
|
public func directStaticDependencies(path: AbsolutePath, name: String) -> Set<GraphDependencyReference> {
|
||||||
Set(graph.dependencies[.target(name: name, path: path)]?
|
Set(graph.dependencies[.target(name: name, path: path)]?
|
||||||
.compactMap { (dependency: ValueGraphDependency) -> (path: AbsolutePath, name: String)? in
|
.compactMap { (dependency: GraphDependency) -> (path: AbsolutePath, name: String)? in
|
||||||
guard case let ValueGraphDependency.target(name, path) = dependency else {
|
guard case let GraphDependency.target(name, path) = dependency else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return (path, name)
|
return (path, name)
|
||||||
|
@ -255,7 +255,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
.flatMap { (dependency) -> [GraphDependencyReference] in
|
.flatMap { (dependency) -> [GraphDependencyReference] in
|
||||||
let dependencies = self.graph.dependencies[dependency, default: []]
|
let dependencies = self.graph.dependencies[dependency, default: []]
|
||||||
return dependencies.compactMap { dependencyDependency -> GraphDependencyReference? in
|
return dependencies.compactMap { dependencyDependency -> GraphDependencyReference? in
|
||||||
guard case let ValueGraphDependency.sdk(_, path, status, source) = dependencyDependency else { return nil }
|
guard case let GraphDependency.sdk(_, path, status, source) = dependencyDependency else { return nil }
|
||||||
return .sdk(path: path, status: status, source: source)
|
return .sdk(path: path, status: status, source: source)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -281,7 +281,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
// Direct system libraries and frameworks
|
// Direct system libraries and frameworks
|
||||||
let directSystemLibrariesAndFrameworks = graph.dependencies[.target(name: name, path: path), default: []]
|
let directSystemLibrariesAndFrameworks = graph.dependencies[.target(name: name, path: path), default: []]
|
||||||
.compactMap { dependency -> GraphDependencyReference? in
|
.compactMap { dependency -> GraphDependencyReference? in
|
||||||
guard case let ValueGraphDependency.sdk(_, path, status, source) = dependency else { return nil }
|
guard case let GraphDependency.sdk(_, path, status, source) = dependency else { return nil }
|
||||||
return .sdk(path: path, status: status, source: source)
|
return .sdk(path: path, status: status, source: source)
|
||||||
}
|
}
|
||||||
references.formUnion(directSystemLibrariesAndFrameworks)
|
references.formUnion(directSystemLibrariesAndFrameworks)
|
||||||
|
@ -365,7 +365,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
public func librariesPublicHeadersFolders(path: AbsolutePath, name: String) -> Set<AbsolutePath> {
|
public func librariesPublicHeadersFolders(path: AbsolutePath, name: String) -> Set<AbsolutePath> {
|
||||||
let dependencies = graph.dependencies[.target(name: name, path: path), default: []]
|
let dependencies = graph.dependencies[.target(name: name, path: path), default: []]
|
||||||
let libraryPublicHeaders = dependencies.compactMap { dependency -> AbsolutePath? in
|
let libraryPublicHeaders = dependencies.compactMap { dependency -> AbsolutePath? in
|
||||||
guard case let ValueGraphDependency.library(_, publicHeaders, _, _, _) = dependency else { return nil }
|
guard case let GraphDependency.library(_, publicHeaders, _, _, _) = dependency else { return nil }
|
||||||
return publicHeaders
|
return publicHeaders
|
||||||
}
|
}
|
||||||
return Set(libraryPublicHeaders)
|
return Set(libraryPublicHeaders)
|
||||||
|
@ -374,7 +374,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
public func librariesSearchPaths(path: AbsolutePath, name: String) -> Set<AbsolutePath> {
|
public func librariesSearchPaths(path: AbsolutePath, name: String) -> Set<AbsolutePath> {
|
||||||
let dependencies = graph.dependencies[.target(name: name, path: path), default: []]
|
let dependencies = graph.dependencies[.target(name: name, path: path), default: []]
|
||||||
let libraryPaths = dependencies.compactMap { dependency -> AbsolutePath? in
|
let libraryPaths = dependencies.compactMap { dependency -> AbsolutePath? in
|
||||||
guard case let ValueGraphDependency.library(path, _, _, _, _) = dependency else { return nil }
|
guard case let GraphDependency.library(path, _, _, _, _) = dependency else { return nil }
|
||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
return Set(libraryPaths.compactMap { $0.removingLastComponent() })
|
return Set(libraryPaths.compactMap { $0.removingLastComponent() })
|
||||||
|
@ -383,7 +383,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
public func librariesSwiftIncludePaths(path: AbsolutePath, name: String) -> Set<AbsolutePath> {
|
public func librariesSwiftIncludePaths(path: AbsolutePath, name: String) -> Set<AbsolutePath> {
|
||||||
let dependencies = graph.dependencies[.target(name: name, path: path), default: []]
|
let dependencies = graph.dependencies[.target(name: name, path: path), default: []]
|
||||||
let librarySwiftModuleMapPaths = dependencies.compactMap { dependency -> AbsolutePath? in
|
let librarySwiftModuleMapPaths = dependencies.compactMap { dependency -> AbsolutePath? in
|
||||||
guard case let ValueGraphDependency.library(_, _, _, _, swiftModuleMapPath) = dependency else { return nil }
|
guard case let GraphDependency.library(_, _, _, _, swiftModuleMapPath) = dependency else { return nil }
|
||||||
return swiftModuleMapPath
|
return swiftModuleMapPath
|
||||||
}
|
}
|
||||||
return Set(librarySwiftModuleMapPaths.compactMap { $0.removingLastComponent() })
|
return Set(librarySwiftModuleMapPaths.compactMap { $0.removingLastComponent() })
|
||||||
|
@ -400,14 +400,14 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
|
|
||||||
var references: Set<AbsolutePath> = Set([])
|
var references: Set<AbsolutePath> = Set([])
|
||||||
|
|
||||||
let from = ValueGraphDependency.target(name: name, path: path)
|
let from = GraphDependency.target(name: name, path: path)
|
||||||
let precompiledFramewoksPaths = filterDependencies(
|
let precompiledFramewoksPaths = filterDependencies(
|
||||||
from: from,
|
from: from,
|
||||||
test: isDependencyPrecompiledDynamicAndLinkable,
|
test: isDependencyPrecompiledDynamicAndLinkable,
|
||||||
skip: canDependencyEmbedProducts
|
skip: canDependencyEmbedProducts
|
||||||
)
|
)
|
||||||
.lazy
|
.lazy
|
||||||
.compactMap { (dependency: ValueGraphDependency) -> AbsolutePath? in
|
.compactMap { (dependency: GraphDependency) -> AbsolutePath? in
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case let .xcframework(path, _, _, _): return path
|
case let .xcframework(path, _, _, _): return path
|
||||||
case let .framework(path, _, _, _, _, _, _): return path
|
case let .framework(path, _, _, _, _, _, _): return path
|
||||||
|
@ -424,19 +424,19 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
return references
|
return references
|
||||||
}
|
}
|
||||||
|
|
||||||
public func hostTargetFor(path: AbsolutePath, name: String) -> ValueGraphTarget? {
|
public func hostTargetFor(path: AbsolutePath, name: String) -> GraphTarget? {
|
||||||
guard let targets = graph.targets[path] else { return nil }
|
guard let targets = graph.targets[path] else { return nil }
|
||||||
guard let project = graph.projects[path] else { return nil }
|
guard let project = graph.projects[path] else { return nil }
|
||||||
|
|
||||||
return targets.values.compactMap { (target) -> ValueGraphTarget? in
|
return targets.values.compactMap { (target) -> GraphTarget? in
|
||||||
let dependencies = self.graph.dependencies[.target(name: target.name, path: path), default: Set()]
|
let dependencies = self.graph.dependencies[.target(name: target.name, path: path), default: Set()]
|
||||||
let dependsOnTarget = dependencies.contains(where: { dependency in
|
let dependsOnTarget = dependencies.contains(where: { dependency in
|
||||||
// swiftlint:disable:next identifier_name
|
// swiftlint:disable:next identifier_name
|
||||||
guard case let ValueGraphDependency.target(_name, _path) = dependency else { return false }
|
guard case let GraphDependency.target(_name, _path) = dependency else { return false }
|
||||||
return _name == name && _path == path
|
return _name == name && _path == path
|
||||||
})
|
})
|
||||||
let valueGraphTarget = ValueGraphTarget(path: path, target: target, project: project)
|
let graphTarget = GraphTarget(path: path, target: target, project: project)
|
||||||
return dependsOnTarget ? valueGraphTarget : nil
|
return dependsOnTarget ? graphTarget : nil
|
||||||
}.first
|
}.first
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -482,16 +482,16 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
/// - from: Dependency from which the traverse is done.
|
/// - from: Dependency from which the traverse is done.
|
||||||
/// - test: If the closure returns true, the dependency is included.
|
/// - test: If the closure returns true, the dependency is included.
|
||||||
/// - skip: If the closure returns false, the traversing logic doesn't traverse the dependencies from that dependency.
|
/// - skip: If the closure returns false, the traversing logic doesn't traverse the dependencies from that dependency.
|
||||||
func filterDependencies(from rootDependency: ValueGraphDependency,
|
func filterDependencies(from rootDependency: GraphDependency,
|
||||||
test: (ValueGraphDependency) -> Bool = { _ in true },
|
test: (GraphDependency) -> Bool = { _ in true },
|
||||||
skip: (ValueGraphDependency) -> Bool = { _ in false }) -> Set<ValueGraphDependency>
|
skip: (GraphDependency) -> Bool = { _ in false }) -> Set<GraphDependency>
|
||||||
{
|
{
|
||||||
var stack = Stack<ValueGraphDependency>()
|
var stack = Stack<GraphDependency>()
|
||||||
|
|
||||||
stack.push(rootDependency)
|
stack.push(rootDependency)
|
||||||
|
|
||||||
var visited: Set<ValueGraphDependency> = .init()
|
var visited: Set<GraphDependency> = .init()
|
||||||
var references = Set<ValueGraphDependency>()
|
var references = Set<GraphDependency>()
|
||||||
|
|
||||||
while !stack.isEmpty {
|
while !stack.isEmpty {
|
||||||
guard let node = stack.pop() else {
|
guard let node = stack.pop() else {
|
||||||
|
@ -522,7 +522,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
return references
|
return references
|
||||||
}
|
}
|
||||||
|
|
||||||
func transitiveStaticTargets(from dependency: ValueGraphDependency) -> Set<ValueGraphDependency> {
|
func transitiveStaticTargets(from dependency: GraphDependency) -> Set<GraphDependency> {
|
||||||
filterDependencies(
|
filterDependencies(
|
||||||
from: dependency,
|
from: dependency,
|
||||||
test: isDependencyStaticTarget,
|
test: isDependencyStaticTarget,
|
||||||
|
@ -530,11 +530,11 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func targetProductReference(target: ValueGraphTarget) -> GraphDependencyReference {
|
func targetProductReference(target: GraphTarget) -> GraphDependencyReference {
|
||||||
.product(target: target.target.name, productName: target.target.productNameWithExtension)
|
.product(target: target.target.name, productName: target.target.productNameWithExtension)
|
||||||
}
|
}
|
||||||
|
|
||||||
func isDependencyPrecompiledLibrary(dependency: ValueGraphDependency) -> Bool {
|
func isDependencyPrecompiledLibrary(dependency: GraphDependency) -> Bool {
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case .xcframework: return true
|
case .xcframework: return true
|
||||||
case .framework: return true
|
case .framework: return true
|
||||||
|
@ -546,7 +546,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func isDependencyPrecompiledFramework(dependency: ValueGraphDependency) -> Bool {
|
func isDependencyPrecompiledFramework(dependency: GraphDependency) -> Bool {
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case .xcframework: return true
|
case .xcframework: return true
|
||||||
case .framework: return true
|
case .framework: return true
|
||||||
|
@ -558,25 +558,25 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func isDependencyStaticTarget(dependency: ValueGraphDependency) -> Bool {
|
func isDependencyStaticTarget(dependency: GraphDependency) -> Bool {
|
||||||
guard case let ValueGraphDependency.target(name, path) = dependency,
|
guard case let GraphDependency.target(name, path) = dependency,
|
||||||
let target = self.target(path: path, name: name) else { return false }
|
let target = self.target(path: path, name: name) else { return false }
|
||||||
return target.target.product.isStatic
|
return target.target.product.isStatic
|
||||||
}
|
}
|
||||||
|
|
||||||
func isDependencyDynamicLibrary(dependency: ValueGraphDependency) -> Bool {
|
func isDependencyDynamicLibrary(dependency: GraphDependency) -> Bool {
|
||||||
guard case let ValueGraphDependency.target(name, path) = dependency,
|
guard case let GraphDependency.target(name, path) = dependency,
|
||||||
let target = self.target(path: path, name: name) else { return false }
|
let target = self.target(path: path, name: name) else { return false }
|
||||||
return target.target.product == .dynamicLibrary
|
return target.target.product == .dynamicLibrary
|
||||||
}
|
}
|
||||||
|
|
||||||
func isDependencyFramework(dependency: ValueGraphDependency) -> Bool {
|
func isDependencyFramework(dependency: GraphDependency) -> Bool {
|
||||||
guard case let ValueGraphDependency.target(name, path) = dependency,
|
guard case let GraphDependency.target(name, path) = dependency,
|
||||||
let target = self.target(path: path, name: name) else { return false }
|
let target = self.target(path: path, name: name) else { return false }
|
||||||
return target.target.product == .framework
|
return target.target.product == .framework
|
||||||
}
|
}
|
||||||
|
|
||||||
func isDependencyDynamicTarget(dependency: ValueGraphDependency) -> Bool {
|
func isDependencyDynamicTarget(dependency: GraphDependency) -> Bool {
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case .xcframework: return false
|
case .xcframework: return false
|
||||||
case .framework: return false
|
case .framework: return false
|
||||||
|
@ -590,7 +590,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func isDependencyPrecompiledDynamicAndLinkable(dependency: ValueGraphDependency) -> Bool {
|
func isDependencyPrecompiledDynamicAndLinkable(dependency: GraphDependency) -> Bool {
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case let .xcframework(_, _, _, linking): return linking == .dynamic
|
case let .xcframework(_, _, _, linking): return linking == .dynamic
|
||||||
case let .framework(_, _, _, _, linking, _, _): return linking == .dynamic
|
case let .framework(_, _, _, _, linking, _, _): return linking == .dynamic
|
||||||
|
@ -602,19 +602,19 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func canDependencyEmbedProducts(dependency: ValueGraphDependency) -> Bool {
|
func canDependencyEmbedProducts(dependency: GraphDependency) -> Bool {
|
||||||
guard case let ValueGraphDependency.target(name, path) = dependency,
|
guard case let GraphDependency.target(name, path) = dependency,
|
||||||
let target = self.target(path: path, name: name) else { return false }
|
let target = self.target(path: path, name: name) else { return false }
|
||||||
return canEmbedProducts(target: target.target)
|
return canEmbedProducts(target: target.target)
|
||||||
}
|
}
|
||||||
|
|
||||||
func canDependencyLinkStaticProducts(dependency: ValueGraphDependency) -> Bool {
|
func canDependencyLinkStaticProducts(dependency: GraphDependency) -> Bool {
|
||||||
guard case let ValueGraphDependency.target(name, path) = dependency,
|
guard case let GraphDependency.target(name, path) = dependency,
|
||||||
let target = self.target(path: path, name: name) else { return false }
|
let target = self.target(path: path, name: name) else { return false }
|
||||||
return target.target.canLinkStaticProducts()
|
return target.target.canLinkStaticProducts()
|
||||||
}
|
}
|
||||||
|
|
||||||
func hostApplication(path: AbsolutePath, name: String) -> ValueGraphTarget? {
|
func hostApplication(path: AbsolutePath, name: String) -> GraphTarget? {
|
||||||
directLocalTargetDependencies(path: path, name: name)
|
directLocalTargetDependencies(path: path, name: name)
|
||||||
.first(where: { $0.target.product == .app })
|
.first(where: { $0.target.product == .app })
|
||||||
}
|
}
|
||||||
|
@ -629,7 +629,7 @@ public class ValueGraphTraverser: GraphTraversing {
|
||||||
return validProducts.contains(target.product)
|
return validProducts.contains(target.product)
|
||||||
}
|
}
|
||||||
|
|
||||||
func dependencyReference(dependency: ValueGraphDependency) -> GraphDependencyReference? {
|
func dependencyReference(dependency: GraphDependency) -> GraphDependencyReference? {
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case .cocoapods:
|
case .cocoapods:
|
||||||
return nil
|
return nil
|
|
@ -6,21 +6,21 @@ import TuistGraph
|
||||||
public protocol GraphMapping {
|
public protocol GraphMapping {
|
||||||
/// Given a value graph, it maps it into another value graph.
|
/// Given a value graph, it maps it into another value graph.
|
||||||
/// - Parameter graph: Graph to be mapped.
|
/// - Parameter graph: Graph to be mapped.
|
||||||
func map(graph: ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor])
|
func map(graph: Graph) throws -> (Graph, [SideEffectDescriptor])
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A mapper that is initialized with a mapping function.
|
/// A mapper that is initialized with a mapping function.
|
||||||
public final class AnyGraphMapper: GraphMapping {
|
public final class AnyGraphMapper: GraphMapping {
|
||||||
/// A function to map the graph.
|
/// A function to map the graph.
|
||||||
let mapper: (ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor])
|
let mapper: (Graph) throws -> (Graph, [SideEffectDescriptor])
|
||||||
|
|
||||||
/// Default initializer
|
/// Default initializer
|
||||||
/// - Parameter mapper: Function to map the graph.
|
/// - Parameter mapper: Function to map the graph.
|
||||||
public init(mapper: @escaping (ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor])) {
|
public init(mapper: @escaping (Graph) throws -> (Graph, [SideEffectDescriptor])) {
|
||||||
self.mapper = mapper
|
self.mapper = mapper
|
||||||
}
|
}
|
||||||
|
|
||||||
public func map(graph: ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor]) {
|
public func map(graph: Graph) throws -> (Graph, [SideEffectDescriptor]) {
|
||||||
try mapper(graph)
|
try mapper(graph)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public final class SequentialGraphMapper: GraphMapping {
|
||||||
self.mappers = mappers
|
self.mappers = mappers
|
||||||
}
|
}
|
||||||
|
|
||||||
public func map(graph: ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor]) {
|
public func map(graph: Graph) throws -> (Graph, [SideEffectDescriptor]) {
|
||||||
try mappers.reduce((graph, [SideEffectDescriptor]())) { input, mapper in
|
try mappers.reduce((graph, [SideEffectDescriptor]())) { input, mapper in
|
||||||
let graph = input.0
|
let graph = input.0
|
||||||
var sideEffects = input.1
|
var sideEffects = input.1
|
||||||
|
|
|
@ -7,7 +7,7 @@ extension Project {
|
||||||
///
|
///
|
||||||
/// - Parameter graph: Dependencies graph.
|
/// - Parameter graph: Dependencies graph.
|
||||||
/// - Returns: Sorted targets.
|
/// - Returns: Sorted targets.
|
||||||
public func sortedTargetsForProjectScheme(graph: ValueGraph) -> [Target] {
|
public func sortedTargetsForProjectScheme(graph: Graph) -> [Target] {
|
||||||
targets.sorted { (first, second) -> Bool in
|
targets.sorted { (first, second) -> Bool in
|
||||||
// First criteria: Test bundles at the end
|
// First criteria: Test bundles at the end
|
||||||
if first.product.testsBundle, !second.product.testsBundle {
|
if first.product.testsBundle, !second.product.testsBundle {
|
||||||
|
@ -17,7 +17,7 @@ extension Project {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Second criteria: Most dependent targets first.
|
// Second criteria: Most dependent targets first.
|
||||||
let secondDependencies = graphTraverser.directTargetDependencies(path: self.path, name: second.name)
|
let secondDependencies = graphTraverser.directTargetDependencies(path: self.path, name: second.name)
|
|
@ -25,19 +25,19 @@ public protocol GraphTraversing {
|
||||||
var targets: [AbsolutePath: [String: Target]] { get }
|
var targets: [AbsolutePath: [String: Target]] { get }
|
||||||
|
|
||||||
/// Dependencies.
|
/// Dependencies.
|
||||||
var dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] { get }
|
var dependencies: [GraphDependency: Set<GraphDependency>] { get }
|
||||||
|
|
||||||
/// Returns all the apps from the graph.
|
/// Returns all the apps from the graph.
|
||||||
func apps() -> Set<ValueGraphTarget>
|
func apps() -> Set<GraphTarget>
|
||||||
|
|
||||||
/// - Returns: All the schemes of the graph
|
/// - Returns: All the schemes of the graph
|
||||||
func schemes() -> [Scheme]
|
func schemes() -> [Scheme]
|
||||||
|
|
||||||
/// Returns the targets from the project that lives in the directory from which the graph has been loaded.
|
/// Returns the targets from the project that lives in the directory from which the graph has been loaded.
|
||||||
func rootTargets() -> Set<ValueGraphTarget>
|
func rootTargets() -> Set<GraphTarget>
|
||||||
|
|
||||||
/// Returns all the targets of the project.
|
/// Returns all the targets of the project.
|
||||||
func allTargets() -> Set<ValueGraphTarget>
|
func allTargets() -> Set<GraphTarget>
|
||||||
|
|
||||||
/// Returns the paths to directories containing a Podfile
|
/// Returns the paths to directories containing a Podfile
|
||||||
func cocoapodsPaths() -> Set<AbsolutePath>
|
func cocoapodsPaths() -> Set<AbsolutePath>
|
||||||
|
@ -50,49 +50,49 @@ public protocol GraphTraversing {
|
||||||
|
|
||||||
/// Returns all the targets of a given product.
|
/// Returns all the targets of a given product.
|
||||||
/// - Parameter product: Product.
|
/// - Parameter product: Product.
|
||||||
func targets(product: Product) -> Set<ValueGraphTarget>
|
func targets(product: Product) -> Set<GraphTarget>
|
||||||
|
|
||||||
/// It returns the target with the given name in the project that is defined in the given directory path.
|
/// It returns the target with the given name in the project that is defined in the given directory path.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - path: Path to the directory that contains the definition of the project with the target is defined.
|
/// - path: Path to the directory that contains the definition of the project with the target is defined.
|
||||||
/// - name: Name of the target.
|
/// - name: Name of the target.
|
||||||
func target(path: AbsolutePath, name: String) -> ValueGraphTarget?
|
func target(path: AbsolutePath, name: String) -> GraphTarget?
|
||||||
|
|
||||||
/// It returns the targets of the project defined in the directory at the given path.
|
/// It returns the targets of the project defined in the directory at the given path.
|
||||||
/// - Parameter path: Path to the directory that contains the definition of the project.
|
/// - Parameter path: Path to the directory that contains the definition of the project.
|
||||||
func targets(at path: AbsolutePath) -> Set<ValueGraphTarget>
|
func targets(at path: AbsolutePath) -> Set<GraphTarget>
|
||||||
|
|
||||||
/// Given a project directory and target name, it returns **all**l its direct target dependencies present in the same project.
|
/// Given a project directory and target name, it returns **all**l its direct target dependencies present in the same project.
|
||||||
/// If you want only direct target dependencies present in the same project as the target, use `directLocalTargetDependencies` instead
|
/// If you want only direct target dependencies present in the same project as the target, use `directLocalTargetDependencies` instead
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - path: Path to the directory that contains the target's project.
|
/// - path: Path to the directory that contains the target's project.
|
||||||
/// - name: Target name.
|
/// - name: Target name.
|
||||||
func directTargetDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget>
|
func directTargetDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget>
|
||||||
|
|
||||||
/// Given a project directory and target name, it returns all its direct target dependencies present in the same project.
|
/// Given a project directory and target name, it returns all its direct target dependencies present in the same project.
|
||||||
/// To get **all** direct target dependencies use the method `directTargetDependencies` instead
|
/// To get **all** direct target dependencies use the method `directTargetDependencies` instead
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - path: Path to the directory that contains the project.
|
/// - path: Path to the directory that contains the project.
|
||||||
/// - name: Target name.
|
/// - name: Target name.
|
||||||
func directLocalTargetDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget>
|
func directLocalTargetDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget>
|
||||||
|
|
||||||
/// Given a project directory and a target name, it returns all the dependencies that are extensions.
|
/// Given a project directory and a target name, it returns all the dependencies that are extensions.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - path: Path to the directory that contains the project.
|
/// - path: Path to the directory that contains the project.
|
||||||
/// - name: Target name.
|
/// - name: Target name.
|
||||||
func appExtensionDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget>
|
func appExtensionDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget>
|
||||||
|
|
||||||
/// Returns the transitive resource bundle dependencies for the given target.
|
/// Returns the transitive resource bundle dependencies for the given target.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - path: Path to the directory where the project that defines the target is located.
|
/// - path: Path to the directory where the project that defines the target is located.
|
||||||
/// - name: Name of the target.
|
/// - name: Name of the target.
|
||||||
func resourceBundleDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget>
|
func resourceBundleDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget>
|
||||||
|
|
||||||
/// Returns the list of test targets that depend on the one with the given name at the given path.
|
/// Returns the list of test targets that depend on the one with the given name at the given path.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - path: Path to the directory that contains the project definition.
|
/// - path: Path to the directory that contains the project definition.
|
||||||
/// - name: Name of the target whose dependant test targets will be returned.
|
/// - name: Name of the target whose dependant test targets will be returned.
|
||||||
func testTargetsDependingOn(path: AbsolutePath, name: String) -> Set<ValueGraphTarget>
|
func testTargetsDependingOn(path: AbsolutePath, name: String) -> Set<GraphTarget>
|
||||||
|
|
||||||
/// Returns all non-transitive target static dependencies for the given target.
|
/// Returns all non-transitive target static dependencies for the given target.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
|
@ -104,7 +104,7 @@ public protocol GraphTraversing {
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - path: Path to the directory that contains the project.
|
/// - path: Path to the directory that contains the project.
|
||||||
/// - name: Target name.
|
/// - name: Target name.
|
||||||
func appClipDependencies(path: AbsolutePath, name: String) -> ValueGraphTarget?
|
func appClipDependencies(path: AbsolutePath, name: String) -> GraphTarget?
|
||||||
|
|
||||||
/// Given a project directory and a target name, it returns the list of dependencies that need to be embedded into the target product.
|
/// Given a project directory and a target name, it returns the list of dependencies that need to be embedded into the target product.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
|
@ -154,7 +154,7 @@ public protocol GraphTraversing {
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - path; Path to the directory where the project that defines the target
|
/// - path; Path to the directory where the project that defines the target
|
||||||
/// - name: Name of the target
|
/// - name: Name of the target
|
||||||
func hostTargetFor(path: AbsolutePath, name: String) -> ValueGraphTarget?
|
func hostTargetFor(path: AbsolutePath, name: String) -> GraphTarget?
|
||||||
|
|
||||||
/// For the project at the given path, it returns all the dependencies that should
|
/// For the project at the given path, it returns all the dependencies that should
|
||||||
/// be referenced from the project. This method is intended to be used when generating
|
/// be referenced from the project. This method is intended to be used when generating
|
||||||
|
@ -170,7 +170,7 @@ public protocol GraphTraversing {
|
||||||
}
|
}
|
||||||
|
|
||||||
public extension GraphTraversing {
|
public extension GraphTraversing {
|
||||||
func apps() -> Set<ValueGraphTarget> {
|
func apps() -> Set<GraphTarget> {
|
||||||
targets(product: .app)
|
targets(product: .app)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,9 @@ enum FrameworkLoaderError: FatalError, Equatable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public protocol FrameworkLoading {
|
public protocol FrameworkLoading {
|
||||||
/// Reads an existing framework and returns its in-memory representation, `ValueGraphDependency.framework`.
|
/// Reads an existing framework and returns its in-memory representation, `GraphDependency.framework`.
|
||||||
/// - Parameter path: Path to the .framework.
|
/// - Parameter path: Path to the .framework.
|
||||||
func load(path: AbsolutePath) throws -> ValueGraphDependency
|
func load(path: AbsolutePath) throws -> GraphDependency
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class FrameworkLoader: FrameworkLoading {
|
public final class FrameworkLoader: FrameworkLoading {
|
||||||
|
@ -39,7 +39,7 @@ public final class FrameworkLoader: FrameworkLoading {
|
||||||
self.frameworkMetadataProvider = frameworkMetadataProvider
|
self.frameworkMetadataProvider = frameworkMetadataProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
public func load(path: AbsolutePath) throws -> ValueGraphDependency {
|
public func load(path: AbsolutePath) throws -> GraphDependency {
|
||||||
guard FileHandler.shared.exists(path) else {
|
guard FileHandler.shared.exists(path) else {
|
||||||
throw FrameworkLoaderError.frameworkNotFound(path)
|
throw FrameworkLoaderError.frameworkNotFound(path)
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,9 @@ enum XCFrameworkLoaderError: FatalError, Equatable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public protocol XCFrameworkLoading {
|
public protocol XCFrameworkLoading {
|
||||||
/// Reads an existing xcframework and returns its in-memory representation, `ValueGraphDependency.xcframework`.
|
/// Reads an existing xcframework and returns its in-memory representation, `GraphDependency.xcframework`.
|
||||||
/// - Parameter path: Path to the .xcframework.
|
/// - Parameter path: Path to the .xcframework.
|
||||||
func load(path: AbsolutePath) throws -> ValueGraphDependency
|
func load(path: AbsolutePath) throws -> GraphDependency
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class XCFrameworkLoader: XCFrameworkLoading {
|
public final class XCFrameworkLoader: XCFrameworkLoading {
|
||||||
|
@ -43,7 +43,7 @@ public final class XCFrameworkLoader: XCFrameworkLoading {
|
||||||
self.xcframeworkMetadataProvider = xcframeworkMetadataProvider
|
self.xcframeworkMetadataProvider = xcframeworkMetadataProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
public func load(path: AbsolutePath) throws -> ValueGraphDependency {
|
public func load(path: AbsolutePath) throws -> GraphDependency {
|
||||||
guard FileHandler.shared.exists(path) else {
|
guard FileHandler.shared.exists(path) else {
|
||||||
throw XCFrameworkLoaderError.xcframeworkNotFound(path)
|
throw XCFrameworkLoaderError.xcframeworkNotFound(path)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,16 +4,16 @@ import TuistCore
|
||||||
import TuistGraph
|
import TuistGraph
|
||||||
@testable import TuistGraphTesting
|
@testable import TuistGraphTesting
|
||||||
|
|
||||||
public final class MockValueGraphLoader: ValueGraphLoading {
|
public final class MockGraphLoader: GraphLoading {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
public var loadProjectStub: ((AbsolutePath, [Project]) throws -> (Project, ValueGraph))?
|
public var loadProjectStub: ((AbsolutePath, [Project]) throws -> (Project, Graph))?
|
||||||
public func loadProject(at path: AbsolutePath, projects: [Project]) throws -> (Project, ValueGraph) {
|
public func loadProject(at path: AbsolutePath, projects: [Project]) throws -> (Project, Graph) {
|
||||||
return try loadProjectStub?(path, projects) ?? (Project.test(), ValueGraph.test())
|
return try loadProjectStub?(path, projects) ?? (Project.test(), Graph.test())
|
||||||
}
|
}
|
||||||
|
|
||||||
public var loadWorkspaceStub: ((Workspace, [Project]) throws -> (ValueGraph))?
|
public var loadWorkspaceStub: ((Workspace, [Project]) throws -> (Graph))?
|
||||||
public func loadWorkspace(workspace: Workspace, projects: [Project]) throws -> ValueGraph {
|
public func loadWorkspace(workspace: Workspace, projects: [Project]) throws -> Graph {
|
||||||
return try loadWorkspaceStub?(workspace, projects) ?? ValueGraph.test()
|
return try loadWorkspaceStub?(workspace, projects) ?? Graph.test()
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -77,9 +77,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
|
|
||||||
var invokedDependenciesGetter = false
|
var invokedDependenciesGetter = false
|
||||||
var invokedDependenciesGetterCount = 0
|
var invokedDependenciesGetterCount = 0
|
||||||
var stubbedDependencies: [ValueGraphDependency: Set<ValueGraphDependency>]! = [:]
|
var stubbedDependencies: [GraphDependency: Set<GraphDependency>]! = [:]
|
||||||
|
|
||||||
var dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] {
|
var dependencies: [GraphDependency: Set<GraphDependency>] {
|
||||||
invokedDependenciesGetter = true
|
invokedDependenciesGetter = true
|
||||||
invokedDependenciesGetterCount += 1
|
invokedDependenciesGetterCount += 1
|
||||||
return stubbedDependencies
|
return stubbedDependencies
|
||||||
|
@ -87,9 +87,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
|
|
||||||
var invokedApps = false
|
var invokedApps = false
|
||||||
var invokedAppsCount = 0
|
var invokedAppsCount = 0
|
||||||
var stubbedAppsResult: Set<ValueGraphTarget>! = []
|
var stubbedAppsResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func apps() -> Set<ValueGraphTarget> {
|
func apps() -> Set<GraphTarget> {
|
||||||
invokedApps = true
|
invokedApps = true
|
||||||
invokedAppsCount += 1
|
invokedAppsCount += 1
|
||||||
return stubbedAppsResult
|
return stubbedAppsResult
|
||||||
|
@ -97,9 +97,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
|
|
||||||
var invokedRootTargets = false
|
var invokedRootTargets = false
|
||||||
var invokedRootTargetsCount = 0
|
var invokedRootTargetsCount = 0
|
||||||
var stubbedRootTargetsResult: Set<ValueGraphTarget>! = []
|
var stubbedRootTargetsResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func rootTargets() -> Set<ValueGraphTarget> {
|
func rootTargets() -> Set<GraphTarget> {
|
||||||
invokedRootTargets = true
|
invokedRootTargets = true
|
||||||
invokedRootTargetsCount += 1
|
invokedRootTargetsCount += 1
|
||||||
return stubbedRootTargetsResult
|
return stubbedRootTargetsResult
|
||||||
|
@ -127,9 +127,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
|
|
||||||
var invokedAllTargets = false
|
var invokedAllTargets = false
|
||||||
var invokedAllTargetsCount = 0
|
var invokedAllTargetsCount = 0
|
||||||
var stubbedAllTargetsResult: Set<ValueGraphTarget>! = []
|
var stubbedAllTargetsResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func allTargets() -> Set<ValueGraphTarget> {
|
func allTargets() -> Set<GraphTarget> {
|
||||||
invokedAllTargets = true
|
invokedAllTargets = true
|
||||||
invokedAllTargetsCount += 1
|
invokedAllTargetsCount += 1
|
||||||
return stubbedAllTargetsResult
|
return stubbedAllTargetsResult
|
||||||
|
@ -149,9 +149,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedTargetsProductCount = 0
|
var invokedTargetsProductCount = 0
|
||||||
var invokedTargetsProductParameters: (product: Product, Void)?
|
var invokedTargetsProductParameters: (product: Product, Void)?
|
||||||
var invokedTargetsProductParametersList = [(product: Product, Void)]()
|
var invokedTargetsProductParametersList = [(product: Product, Void)]()
|
||||||
var stubbedTargetsProductResult: Set<ValueGraphTarget>! = []
|
var stubbedTargetsProductResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func targets(product: Product) -> Set<ValueGraphTarget> {
|
func targets(product: Product) -> Set<GraphTarget> {
|
||||||
invokedTargetsProduct = true
|
invokedTargetsProduct = true
|
||||||
invokedTargetsProductCount += 1
|
invokedTargetsProductCount += 1
|
||||||
invokedTargetsProductParameters = (product, ())
|
invokedTargetsProductParameters = (product, ())
|
||||||
|
@ -163,9 +163,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedTargetCount = 0
|
var invokedTargetCount = 0
|
||||||
var invokedTargetParameters: (path: AbsolutePath, name: String)?
|
var invokedTargetParameters: (path: AbsolutePath, name: String)?
|
||||||
var invokedTargetParametersList = [(path: AbsolutePath, name: String)]()
|
var invokedTargetParametersList = [(path: AbsolutePath, name: String)]()
|
||||||
var stubbedTargetResult: ValueGraphTarget!
|
var stubbedTargetResult: GraphTarget!
|
||||||
|
|
||||||
func target(path: AbsolutePath, name: String) -> ValueGraphTarget? {
|
func target(path: AbsolutePath, name: String) -> GraphTarget? {
|
||||||
invokedTarget = true
|
invokedTarget = true
|
||||||
invokedTargetCount += 1
|
invokedTargetCount += 1
|
||||||
invokedTargetParameters = (path, name)
|
invokedTargetParameters = (path, name)
|
||||||
|
@ -177,9 +177,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedTargetsAtCount = 0
|
var invokedTargetsAtCount = 0
|
||||||
var invokedTargetsAtParameters: (path: AbsolutePath, Void)?
|
var invokedTargetsAtParameters: (path: AbsolutePath, Void)?
|
||||||
var invokedTargetsAtParametersList = [(path: AbsolutePath, Void)]()
|
var invokedTargetsAtParametersList = [(path: AbsolutePath, Void)]()
|
||||||
var stubbedTargetsAtResult: Set<ValueGraphTarget>! = []
|
var stubbedTargetsAtResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func targets(at path: AbsolutePath) -> Set<ValueGraphTarget> {
|
func targets(at path: AbsolutePath) -> Set<GraphTarget> {
|
||||||
invokedTargetsAt = true
|
invokedTargetsAt = true
|
||||||
invokedTargetsAtCount += 1
|
invokedTargetsAtCount += 1
|
||||||
invokedTargetsAtParameters = (path, ())
|
invokedTargetsAtParameters = (path, ())
|
||||||
|
@ -192,9 +192,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedDirectLocalTargetDependenciesCount = 0 // swiftlint:disable:this identifier_name
|
var invokedDirectLocalTargetDependenciesCount = 0 // swiftlint:disable:this identifier_name
|
||||||
var invokedDirectLocalTargetDependenciesParameters: (path: AbsolutePath, name: String)? // swiftlint:disable:this identifier_name
|
var invokedDirectLocalTargetDependenciesParameters: (path: AbsolutePath, name: String)? // swiftlint:disable:this identifier_name
|
||||||
var invokedDirectLocalTargetDependenciesParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
var invokedDirectLocalTargetDependenciesParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
||||||
var stubbedDirectLocalTargetDependenciesResult: Set<ValueGraphTarget>! = [] // swiftlint:disable:this identifier_name
|
var stubbedDirectLocalTargetDependenciesResult: Set<GraphTarget>! = [] // swiftlint:disable:this identifier_name
|
||||||
|
|
||||||
func directLocalTargetDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
func directLocalTargetDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
invokedDirectLocalTargetDependencies = true
|
invokedDirectLocalTargetDependencies = true
|
||||||
invokedDirectLocalTargetDependenciesCount += 1
|
invokedDirectLocalTargetDependenciesCount += 1
|
||||||
invokedDirectLocalTargetDependenciesParameters = (path, name)
|
invokedDirectLocalTargetDependenciesParameters = (path, name)
|
||||||
|
@ -206,9 +206,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedDirectTargetDependenciesCount = 0
|
var invokedDirectTargetDependenciesCount = 0
|
||||||
var invokedDirectTargetDependenciesParameters: (path: AbsolutePath, name: String)? // swiftlint:disable:this identifier_name
|
var invokedDirectTargetDependenciesParameters: (path: AbsolutePath, name: String)? // swiftlint:disable:this identifier_name
|
||||||
var invokedDirectTargetDependenciesParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
var invokedDirectTargetDependenciesParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
||||||
var stubbedDirectTargetDependenciesResult: Set<ValueGraphTarget>! = []
|
var stubbedDirectTargetDependenciesResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func directTargetDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
func directTargetDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
invokedDirectTargetDependencies = true
|
invokedDirectTargetDependencies = true
|
||||||
invokedDirectTargetDependenciesCount += 1
|
invokedDirectTargetDependenciesCount += 1
|
||||||
invokedDirectTargetDependenciesParameters = (path, name)
|
invokedDirectTargetDependenciesParameters = (path, name)
|
||||||
|
@ -220,9 +220,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedAppExtensionDependenciesCount = 0
|
var invokedAppExtensionDependenciesCount = 0
|
||||||
var invokedAppExtensionDependenciesParameters: (path: AbsolutePath, name: String)? // swiftlint:disable:this identifier_name
|
var invokedAppExtensionDependenciesParameters: (path: AbsolutePath, name: String)? // swiftlint:disable:this identifier_name
|
||||||
var invokedAppExtensionDependenciesParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
var invokedAppExtensionDependenciesParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
||||||
var stubbedAppExtensionDependenciesResult: Set<ValueGraphTarget>! = []
|
var stubbedAppExtensionDependenciesResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func appExtensionDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
func appExtensionDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
invokedAppExtensionDependencies = true
|
invokedAppExtensionDependencies = true
|
||||||
invokedAppExtensionDependenciesCount += 1
|
invokedAppExtensionDependenciesCount += 1
|
||||||
invokedAppExtensionDependenciesParameters = (path, name)
|
invokedAppExtensionDependenciesParameters = (path, name)
|
||||||
|
@ -234,9 +234,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedResourceBundleDependenciesCount = 0
|
var invokedResourceBundleDependenciesCount = 0
|
||||||
var invokedResourceBundleDependenciesParameters: (path: AbsolutePath, name: String)? // swiftlint:disable:this identifier_name
|
var invokedResourceBundleDependenciesParameters: (path: AbsolutePath, name: String)? // swiftlint:disable:this identifier_name
|
||||||
var invokedResourceBundleDependenciesParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
var invokedResourceBundleDependenciesParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
||||||
var stubbedResourceBundleDependenciesResult: Set<ValueGraphTarget>! = []
|
var stubbedResourceBundleDependenciesResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func resourceBundleDependencies(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
func resourceBundleDependencies(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
invokedResourceBundleDependencies = true
|
invokedResourceBundleDependencies = true
|
||||||
invokedResourceBundleDependenciesCount += 1
|
invokedResourceBundleDependenciesCount += 1
|
||||||
invokedResourceBundleDependenciesParameters = (path, name)
|
invokedResourceBundleDependenciesParameters = (path, name)
|
||||||
|
@ -248,9 +248,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedTestTargetsDependingOnCount = 0
|
var invokedTestTargetsDependingOnCount = 0
|
||||||
var invokedTestTargetsDependingOnParameters: (path: AbsolutePath, name: String)?
|
var invokedTestTargetsDependingOnParameters: (path: AbsolutePath, name: String)?
|
||||||
var invokedTestTargetsDependingOnParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
var invokedTestTargetsDependingOnParametersList = [(path: AbsolutePath, name: String)]() // swiftlint:disable:this identifier_name
|
||||||
var stubbedTestTargetsDependingOnResult: Set<ValueGraphTarget>! = []
|
var stubbedTestTargetsDependingOnResult: Set<GraphTarget>! = []
|
||||||
|
|
||||||
func testTargetsDependingOn(path: AbsolutePath, name: String) -> Set<ValueGraphTarget> {
|
func testTargetsDependingOn(path: AbsolutePath, name: String) -> Set<GraphTarget> {
|
||||||
invokedTestTargetsDependingOn = true
|
invokedTestTargetsDependingOn = true
|
||||||
invokedTestTargetsDependingOnCount += 1
|
invokedTestTargetsDependingOnCount += 1
|
||||||
invokedTestTargetsDependingOnParameters = (path, name)
|
invokedTestTargetsDependingOnParameters = (path, name)
|
||||||
|
@ -276,9 +276,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedAppClipDependenciesCount = 0
|
var invokedAppClipDependenciesCount = 0
|
||||||
var invokedAppClipDependenciesParameters: (path: AbsolutePath, name: String)?
|
var invokedAppClipDependenciesParameters: (path: AbsolutePath, name: String)?
|
||||||
var invokedAppClipDependenciesParametersList = [(path: AbsolutePath, name: String)]()
|
var invokedAppClipDependenciesParametersList = [(path: AbsolutePath, name: String)]()
|
||||||
var stubbedAppClipDependenciesResult: ValueGraphTarget!
|
var stubbedAppClipDependenciesResult: GraphTarget!
|
||||||
|
|
||||||
func appClipDependencies(path: AbsolutePath, name: String) -> ValueGraphTarget? {
|
func appClipDependencies(path: AbsolutePath, name: String) -> GraphTarget? {
|
||||||
invokedAppClipDependencies = true
|
invokedAppClipDependencies = true
|
||||||
invokedAppClipDependenciesCount += 1
|
invokedAppClipDependenciesCount += 1
|
||||||
invokedAppClipDependenciesParameters = (path, name)
|
invokedAppClipDependenciesParameters = (path, name)
|
||||||
|
@ -392,9 +392,9 @@ final class MockGraphTraverser: GraphTraversing {
|
||||||
var invokedHostTargetForCount = 0
|
var invokedHostTargetForCount = 0
|
||||||
var invokedHostTargetForParameters: (path: AbsolutePath, name: String)?
|
var invokedHostTargetForParameters: (path: AbsolutePath, name: String)?
|
||||||
var invokedHostTargetForParametersList = [(path: AbsolutePath, name: String)]()
|
var invokedHostTargetForParametersList = [(path: AbsolutePath, name: String)]()
|
||||||
var stubbedHostTargetForResult: ValueGraphTarget!
|
var stubbedHostTargetForResult: GraphTarget!
|
||||||
|
|
||||||
func hostTargetFor(path: AbsolutePath, name: String) -> ValueGraphTarget? {
|
func hostTargetFor(path: AbsolutePath, name: String) -> GraphTarget? {
|
||||||
invokedHostTargetFor = true
|
invokedHostTargetFor = true
|
||||||
invokedHostTargetForCount += 1
|
invokedHostTargetForCount += 1
|
||||||
invokedHostTargetForParameters = (path, name)
|
invokedHostTargetForParameters = (path, name)
|
||||||
|
|
|
@ -6,12 +6,12 @@ import TuistGraph
|
||||||
public final class MockFrameworkLoader: FrameworkLoading {
|
public final class MockFrameworkLoader: FrameworkLoading {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
var loadStub: ((AbsolutePath) throws -> ValueGraphDependency)?
|
var loadStub: ((AbsolutePath) throws -> GraphDependency)?
|
||||||
public func load(path: AbsolutePath) throws -> ValueGraphDependency {
|
public func load(path: AbsolutePath) throws -> GraphDependency {
|
||||||
if let loadStub = loadStub {
|
if let loadStub = loadStub {
|
||||||
return try loadStub(path)
|
return try loadStub(path)
|
||||||
} else {
|
} else {
|
||||||
return ValueGraphDependency.testFramework(path: path)
|
return GraphDependency.testFramework(path: path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,8 @@ import TuistGraph
|
||||||
public final class MockXCFrameworkLoader: XCFrameworkLoading {
|
public final class MockXCFrameworkLoader: XCFrameworkLoading {
|
||||||
public init() {}
|
public init() {}
|
||||||
|
|
||||||
var loadStub: ((AbsolutePath) throws -> ValueGraphDependency)?
|
var loadStub: ((AbsolutePath) throws -> GraphDependency)?
|
||||||
public func load(path: AbsolutePath) throws -> ValueGraphDependency {
|
public func load(path: AbsolutePath) throws -> GraphDependency {
|
||||||
if let loadStub = loadStub {
|
if let loadStub = loadStub {
|
||||||
return try loadStub(path)
|
return try loadStub(path)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -634,7 +634,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating {
|
||||||
|
|
||||||
// MARK: - Helpers
|
// MARK: - Helpers
|
||||||
|
|
||||||
private func resolveRelativeProjectPath(graphTarget: ValueGraphTarget,
|
private func resolveRelativeProjectPath(graphTarget: GraphTarget,
|
||||||
generatedProject _: GeneratedProject,
|
generatedProject _: GeneratedProject,
|
||||||
rootPath: AbsolutePath) -> RelativePath
|
rootPath: AbsolutePath) -> RelativePath
|
||||||
{
|
{
|
||||||
|
@ -649,7 +649,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating {
|
||||||
/// - graph: Tuist graph.
|
/// - graph: Tuist graph.
|
||||||
/// - rootPath: Path to the project or workspace.
|
/// - rootPath: Path to the project or workspace.
|
||||||
/// - generatedProjects: Project paths mapped to generated projects.
|
/// - generatedProjects: Project paths mapped to generated projects.
|
||||||
private func createBuildableReference(graphTarget: ValueGraphTarget,
|
private func createBuildableReference(graphTarget: GraphTarget,
|
||||||
graphTraverser: GraphTraversing,
|
graphTraverser: GraphTraversing,
|
||||||
rootPath: AbsolutePath,
|
rootPath: AbsolutePath,
|
||||||
generatedProjects: [AbsolutePath: GeneratedProject]) throws -> XCScheme.BuildableReference?
|
generatedProjects: [AbsolutePath: GeneratedProject]) throws -> XCScheme.BuildableReference?
|
||||||
|
@ -680,7 +680,7 @@ final class SchemeDescriptorsGenerator: SchemeDescriptorsGenerating {
|
||||||
/// - generatedProjects: Generated Xcode projects.
|
/// - generatedProjects: Generated Xcode projects.
|
||||||
/// - rootPath: Root path to workspace or project.
|
/// - rootPath: Root path to workspace or project.
|
||||||
/// - Returns: Array of buildable references.
|
/// - Returns: Array of buildable references.
|
||||||
private func testCoverageTargetReferences(graphTarget: ValueGraphTarget,
|
private func testCoverageTargetReferences(graphTarget: GraphTarget,
|
||||||
graphTraverser: GraphTraversing,
|
graphTraverser: GraphTraversing,
|
||||||
generatedProjects: [AbsolutePath: GeneratedProject],
|
generatedProjects: [AbsolutePath: GeneratedProject],
|
||||||
rootPath: AbsolutePath) throws -> XCScheme.BuildableReference?
|
rootPath: AbsolutePath) throws -> XCScheme.BuildableReference?
|
||||||
|
|
|
@ -8,9 +8,9 @@ import TuistGraph
|
||||||
public protocol GraphToGraphVizMapping {
|
public protocol GraphToGraphVizMapping {
|
||||||
/// Maps the project graph into a dot graph representation.
|
/// Maps the project graph into a dot graph representation.
|
||||||
///
|
///
|
||||||
/// - Parameter graph: ValueGraph to be converted into a GraphViz.Graph.
|
/// - Parameter graph: Graph to be converted into a GraphViz.Graph.
|
||||||
/// - Returns: The GraphViz.Graph representation.
|
/// - Returns: The GraphViz.Graph representation.
|
||||||
func map(graph: ValueGraph, skipTestTargets: Bool, skipExternalDependencies: Bool, targetsToFilter: [String]) -> GraphViz.Graph
|
func map(graph: TuistGraph.Graph, skipTestTargets: Bool, skipExternalDependencies: Bool, targetsToFilter: [String]) -> GraphViz.Graph
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class GraphToGraphVizMapper: GraphToGraphVizMapping {
|
public final class GraphToGraphVizMapper: GraphToGraphVizMapping {
|
||||||
|
@ -18,16 +18,16 @@ public final class GraphToGraphVizMapper: GraphToGraphVizMapping {
|
||||||
|
|
||||||
/// Maps the project graph into a GraphViz graph representation.
|
/// Maps the project graph into a GraphViz graph representation.
|
||||||
///
|
///
|
||||||
/// - Parameter graph: ValueGraph to be converted into a GraphViz.Graph.
|
/// - Parameter graph: Graph to be converted into a GraphViz.Graph.
|
||||||
/// - Returns: The GraphViz.Graph representation.
|
/// - Returns: The GraphViz.Graph representation.
|
||||||
public func map(graph: ValueGraph, skipTestTargets: Bool, skipExternalDependencies: Bool, targetsToFilter: [String]) -> GraphViz.Graph {
|
public func map(graph: TuistGraph.Graph, skipTestTargets: Bool, skipExternalDependencies: Bool, targetsToFilter: [String]) -> GraphViz.Graph {
|
||||||
var nodes: [GraphViz.Node] = []
|
var nodes: [GraphViz.Node] = []
|
||||||
var dependencies: [GraphViz.Edge] = []
|
var dependencies: [GraphViz.Edge] = []
|
||||||
var graphVizGraph = GraphViz.Graph(directed: true)
|
var graphVizGraph = GraphViz.Graph(directed: true)
|
||||||
|
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
let filteredTargets: Set<ValueGraphTarget> = graphTraverser.allTargets().filter { target in
|
let filteredTargets: Set<GraphTarget> = graphTraverser.allTargets().filter { target in
|
||||||
if skipTestTargets, graphTraverser.dependsOnXCTest(path: target.path, name: target.target.name) {
|
if skipTestTargets, graphTraverser.dependsOnXCTest(path: target.path, name: target.target.name) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ public final class GraphToGraphVizMapper: GraphToGraphVizMapping {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
let filteredTargetsAndDependencies: Set<ValueGraphTarget> = filteredTargets.union(
|
let filteredTargetsAndDependencies: Set<GraphTarget> = filteredTargets.union(
|
||||||
transitiveClosure(Array(filteredTargets)) { target in
|
transitiveClosure(Array(filteredTargets)) { target in
|
||||||
Array(graphTraverser.directTargetDependencies(path: target.path, name: target.target.name))
|
Array(graphTraverser.directTargetDependencies(path: target.path, name: target.target.name))
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ public final class GraphToGraphVizMapper: GraphToGraphVizMapping {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private extension ValueGraphDependency {
|
private extension GraphDependency {
|
||||||
var isExternal: Bool {
|
var isExternal: Bool {
|
||||||
switch self {
|
switch self {
|
||||||
case .target:
|
case .target:
|
||||||
|
|
|
@ -33,7 +33,7 @@ struct NodeStyleAttributes {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension ValueGraphTarget {
|
extension GraphTarget {
|
||||||
var styleAttributes: NodeStyleAttributes {
|
var styleAttributes: NodeStyleAttributes {
|
||||||
switch target.product {
|
switch target.product {
|
||||||
case .app, .watch2App, .commandLineTool, .appClip:
|
case .app, .watch2App, .commandLineTool, .appClip:
|
||||||
|
@ -58,7 +58,7 @@ extension ValueGraphTarget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension ValueGraphDependency {
|
extension GraphDependency {
|
||||||
func styleAttributes(
|
func styleAttributes(
|
||||||
graphTraverser: GraphTraversing
|
graphTraverser: GraphTraversing
|
||||||
) -> NodeStyleAttributes? {
|
) -> NodeStyleAttributes? {
|
||||||
|
|
|
@ -54,8 +54,8 @@ public class GraphLinter: GraphLinting {
|
||||||
var issues: [LintingIssue] = []
|
var issues: [LintingIssue] = []
|
||||||
let dependencyIssues = graphTraverser.dependencies.flatMap { (fromDependency, toDependencies) -> [LintingIssue] in
|
let dependencyIssues = graphTraverser.dependencies.flatMap { (fromDependency, toDependencies) -> [LintingIssue] in
|
||||||
toDependencies.flatMap { (toDependency) -> [LintingIssue] in
|
toDependencies.flatMap { (toDependency) -> [LintingIssue] in
|
||||||
guard case let ValueGraphDependency.target(fromTargetName, fromTargetPath) = fromDependency else { return [] }
|
guard case let GraphDependency.target(fromTargetName, fromTargetPath) = fromDependency else { return [] }
|
||||||
guard case let ValueGraphDependency.target(toTargetName, toTargetPath) = toDependency else { return [] }
|
guard case let GraphDependency.target(toTargetName, toTargetPath) = toDependency else { return [] }
|
||||||
guard let fromTarget = graphTraverser.target(path: fromTargetPath, name: fromTargetName) else { return [] }
|
guard let fromTarget = graphTraverser.target(path: fromTargetPath, name: fromTargetName) else { return [] }
|
||||||
guard let toTarget = graphTraverser.target(path: toTargetPath, name: toTargetName) else { return [] }
|
guard let toTarget = graphTraverser.target(path: toTargetPath, name: toTargetName) else { return [] }
|
||||||
return lintDependency(from: fromTarget, to: toTarget)
|
return lintDependency(from: fromTarget, to: toTarget)
|
||||||
|
@ -71,7 +71,7 @@ public class GraphLinter: GraphLinting {
|
||||||
return issues
|
return issues
|
||||||
}
|
}
|
||||||
|
|
||||||
private func lintDependency(from: ValueGraphTarget, to: ValueGraphTarget) -> [LintingIssue] {
|
private func lintDependency(from: GraphTarget, to: GraphTarget) -> [LintingIssue] {
|
||||||
var issues: [LintingIssue] = []
|
var issues: [LintingIssue] = []
|
||||||
|
|
||||||
let fromTarget = LintableTarget(
|
let fromTarget = LintableTarget(
|
||||||
|
@ -201,7 +201,7 @@ public class GraphLinter: GraphLinting {
|
||||||
return issues
|
return issues
|
||||||
}
|
}
|
||||||
|
|
||||||
private func lint(watchApp: ValueGraphTarget, parentApp: ValueGraphTarget) -> [LintingIssue] {
|
private func lint(watchApp: GraphTarget, parentApp: GraphTarget) -> [LintingIssue] {
|
||||||
guard watchApp.target.bundleId.hasPrefix(parentApp.target.bundleId) else {
|
guard watchApp.target.bundleId.hasPrefix(parentApp.target.bundleId) else {
|
||||||
return [
|
return [
|
||||||
LintingIssue(reason: """
|
LintingIssue(reason: """
|
||||||
|
@ -212,7 +212,7 @@ public class GraphLinter: GraphLinting {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
private func lint(watchExtension: ValueGraphTarget, parentWatchApp: ValueGraphTarget) -> [LintingIssue] {
|
private func lint(watchExtension: GraphTarget, parentWatchApp: GraphTarget) -> [LintingIssue] {
|
||||||
guard watchExtension.target.bundleId.hasPrefix(parentWatchApp.target.bundleId) else {
|
guard watchExtension.target.bundleId.hasPrefix(parentWatchApp.target.bundleId) else {
|
||||||
return [
|
return [
|
||||||
LintingIssue(reason: """
|
LintingIssue(reason: """
|
||||||
|
@ -223,7 +223,7 @@ public class GraphLinter: GraphLinting {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
private func lint(appClip: ValueGraphTarget, parentApp: ValueGraphTarget) -> [LintingIssue] {
|
private func lint(appClip: GraphTarget, parentApp: GraphTarget) -> [LintingIssue] {
|
||||||
var foundIssues = [LintingIssue]()
|
var foundIssues = [LintingIssue]()
|
||||||
|
|
||||||
if !appClip.target.bundleId.hasPrefix(parentApp.target.bundleId) {
|
if !appClip.target.bundleId.hasPrefix(parentApp.target.bundleId) {
|
||||||
|
|
|
@ -19,7 +19,7 @@ class StaticProductsGraphLinter: StaticProductsGraphLinting {
|
||||||
.map(lintIssue)
|
.map(lintIssue)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func warnings(in dependencies: [ValueGraphDependency], graphTraverser: GraphTraversing) -> Set<StaticDependencyWarning> {
|
private func warnings(in dependencies: [GraphDependency], graphTraverser: GraphTraversing) -> Set<StaticDependencyWarning> {
|
||||||
var warnings = Set<StaticDependencyWarning>()
|
var warnings = Set<StaticDependencyWarning>()
|
||||||
let cache = Cache()
|
let cache = Cache()
|
||||||
dependencies.forEach { dependency in
|
dependencies.forEach { dependency in
|
||||||
|
@ -58,7 +58,7 @@ class StaticProductsGraphLinter: StaticProductsGraphLinting {
|
||||||
/// - In the event a node is a node capable of linking static products, it removes all the nodes
|
/// - In the event a node is a node capable of linking static products, it removes all the nodes
|
||||||
/// from the unlinked bucket and places them in the linked bucket in format of _staticNode > [linkingNode]_.
|
/// from the unlinked bucket and places them in the linked bucket in format of _staticNode > [linkingNode]_.
|
||||||
///
|
///
|
||||||
private func buildStaticProductsMap(visiting dependency: ValueGraphDependency,
|
private func buildStaticProductsMap(visiting dependency: GraphDependency,
|
||||||
graphTraverser: GraphTraversing,
|
graphTraverser: GraphTraversing,
|
||||||
cache: Cache) -> StaticProducts
|
cache: Cache) -> StaticProducts
|
||||||
{
|
{
|
||||||
|
@ -79,7 +79,7 @@ class StaticProductsGraphLinter: StaticProductsGraphLinting {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Linking node case
|
// Linking node case
|
||||||
guard case let ValueGraphDependency.target(targetName, targetPath) = dependency,
|
guard case let GraphDependency.target(targetName, targetPath) = dependency,
|
||||||
let dependencyTarget = graphTraverser.target(path: targetPath, name: targetName),
|
let dependencyTarget = graphTraverser.target(path: targetPath, name: targetName),
|
||||||
dependencyTarget.target.canLinkStaticProducts()
|
dependencyTarget.target.canLinkStaticProducts()
|
||||||
else {
|
else {
|
||||||
|
@ -98,21 +98,21 @@ class StaticProductsGraphLinter: StaticProductsGraphLinting {
|
||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
|
|
||||||
private func staticDependencyWarning(staticProduct: ValueGraphDependency,
|
private func staticDependencyWarning(staticProduct: GraphDependency,
|
||||||
linkedBy: Set<ValueGraphDependency>,
|
linkedBy: Set<GraphDependency>,
|
||||||
graphTraverser: GraphTraversing) -> [StaticDependencyWarning]
|
graphTraverser: GraphTraversing) -> [StaticDependencyWarning]
|
||||||
{
|
{
|
||||||
// Common dependencies between test bundles and their host apps are automatically omitted
|
// Common dependencies between test bundles and their host apps are automatically omitted
|
||||||
// during generation - as such those shouldn't be flagged
|
// during generation - as such those shouldn't be flagged
|
||||||
//
|
//
|
||||||
// reference: https://github.com/tuist/tuist/pull/664
|
// reference: https://github.com/tuist/tuist/pull/664
|
||||||
let apps: Set<ValueGraphDependency> = linkedBy.filter { (dependency) -> Bool in
|
let apps: Set<GraphDependency> = linkedBy.filter { (dependency) -> Bool in
|
||||||
guard case let ValueGraphDependency.target(targetName, targetPath) = dependency else { return false }
|
guard case let GraphDependency.target(targetName, targetPath) = dependency else { return false }
|
||||||
guard let target = graphTraverser.target(path: targetPath, name: targetName) else { return false }
|
guard let target = graphTraverser.target(path: targetPath, name: targetName) else { return false }
|
||||||
return target.target.product == .app
|
return target.target.product == .app
|
||||||
}
|
}
|
||||||
let hostedTestBundles = linkedBy.filter { (dependency) -> Bool in
|
let hostedTestBundles = linkedBy.filter { (dependency) -> Bool in
|
||||||
guard case let ValueGraphDependency.target(targetName, targetPath) = dependency else { return false }
|
guard case let GraphDependency.target(targetName, targetPath) = dependency else { return false }
|
||||||
guard let target = graphTraverser.target(path: targetPath, name: targetName) else { return false }
|
guard let target = graphTraverser.target(path: targetPath, name: targetName) else { return false }
|
||||||
|
|
||||||
let isTestsBundle = target.target.product.testsBundle
|
let isTestsBundle = target.target.product.testsBundle
|
||||||
|
@ -134,7 +134,7 @@ class StaticProductsGraphLinter: StaticProductsGraphLinting {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
private func isStaticProduct(_ dependency: ValueGraphDependency, graphTraverser: GraphTraversing) -> Bool {
|
private func isStaticProduct(_ dependency: GraphDependency, graphTraverser: GraphTraversing) -> Bool {
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case let .xcframework(_, _, _, linking):
|
case let .xcframework(_, _, _, linking):
|
||||||
return linking == .static
|
return linking == .static
|
||||||
|
@ -155,14 +155,14 @@ class StaticProductsGraphLinter: StaticProductsGraphLinting {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func dependencies(for dependency: ValueGraphDependency, graphTraverser: GraphTraversing) -> [ValueGraphDependency] {
|
private func dependencies(for dependency: GraphDependency, graphTraverser: GraphTraversing) -> [GraphDependency] {
|
||||||
Array(graphTraverser.dependencies[dependency, default: Set()])
|
Array(graphTraverser.dependencies[dependency, default: Set()])
|
||||||
.filter { canVisit(dependency: $0, from: dependency, graphTraverser: graphTraverser) }
|
.filter { canVisit(dependency: $0, from: dependency, graphTraverser: graphTraverser) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private func canVisit(dependency: ValueGraphDependency, from: ValueGraphDependency, graphTraverser: GraphTraversing) -> Bool {
|
private func canVisit(dependency: GraphDependency, from: GraphDependency, graphTraverser: GraphTraversing) -> Bool {
|
||||||
guard case let ValueGraphDependency.target(fromTargetName, fromTargetPath) = from else { return true }
|
guard case let GraphDependency.target(fromTargetName, fromTargetPath) = from else { return true }
|
||||||
guard case let ValueGraphDependency.target(toTargetName, toTargetPath) = dependency else { return true }
|
guard case let GraphDependency.target(toTargetName, toTargetPath) = dependency else { return true }
|
||||||
|
|
||||||
guard let fromTarget = graphTraverser.target(path: fromTargetPath, name: fromTargetName) else { return false }
|
guard let fromTarget = graphTraverser.target(path: fromTargetPath, name: fromTargetName) else { return false }
|
||||||
guard let toTarget = graphTraverser.target(path: toTargetPath, name: toTargetName) else { return false }
|
guard let toTarget = graphTraverser.target(path: toTargetPath, name: toTargetName) else { return false }
|
||||||
|
@ -208,8 +208,8 @@ class StaticProductsGraphLinter: StaticProductsGraphLinting {
|
||||||
|
|
||||||
extension StaticProductsGraphLinter {
|
extension StaticProductsGraphLinter {
|
||||||
private struct StaticDependencyWarning: Hashable, Comparable {
|
private struct StaticDependencyWarning: Hashable, Comparable {
|
||||||
var staticProduct: ValueGraphDependency
|
var staticProduct: GraphDependency
|
||||||
var linkingDependencies: [ValueGraphDependency]
|
var linkingDependencies: [GraphDependency]
|
||||||
|
|
||||||
var debugDescription: String {
|
var debugDescription: String {
|
||||||
stringDescription
|
stringDescription
|
||||||
|
@ -228,13 +228,13 @@ extension StaticProductsGraphLinter {
|
||||||
|
|
||||||
private struct StaticProducts {
|
private struct StaticProducts {
|
||||||
// Unlinked static products
|
// Unlinked static products
|
||||||
var unlinked: Set<ValueGraphDependency> = Set()
|
var unlinked: Set<GraphDependency> = Set()
|
||||||
|
|
||||||
// Map of Static product to nodes that link it
|
// Map of Static product to nodes that link it
|
||||||
// e.g.
|
// e.g.
|
||||||
// - MyStaticFrameworkA > [MyDynamicFrameworkA, MyTestsTarget]
|
// - MyStaticFrameworkA > [MyDynamicFrameworkA, MyTestsTarget]
|
||||||
// - MyStaticFrameworkB > [MyDynamicFrameworkA, MyTestsTarget]
|
// - MyStaticFrameworkB > [MyDynamicFrameworkA, MyTestsTarget]
|
||||||
var linked: [ValueGraphDependency: Set<ValueGraphDependency>] = [:]
|
var linked: [GraphDependency: Set<GraphDependency>] = [:]
|
||||||
|
|
||||||
func merged(with other: StaticProducts) -> StaticProducts {
|
func merged(with other: StaticProducts) -> StaticProducts {
|
||||||
StaticProducts(
|
StaticProducts(
|
||||||
|
@ -245,14 +245,14 @@ extension StaticProductsGraphLinter {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Cache {
|
private class Cache {
|
||||||
private var cachedResults: [ValueGraphDependency: StaticProducts] = [:]
|
private var cachedResults: [GraphDependency: StaticProducts] = [:]
|
||||||
|
|
||||||
func results(for dependency: ValueGraphDependency) -> StaticProducts? {
|
func results(for dependency: GraphDependency) -> StaticProducts? {
|
||||||
cachedResults[dependency]
|
cachedResults[dependency]
|
||||||
}
|
}
|
||||||
|
|
||||||
func cache(results: StaticProducts,
|
func cache(results: StaticProducts,
|
||||||
for dependency: ValueGraphDependency)
|
for dependency: GraphDependency)
|
||||||
{
|
{
|
||||||
cachedResults[dependency] = results
|
cachedResults[dependency] = results
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ import Foundation
|
||||||
import TSCBasic
|
import TSCBasic
|
||||||
|
|
||||||
/// A directed acyclic graph (DAG) that Tuist uses to represent the dependency tree.
|
/// A directed acyclic graph (DAG) that Tuist uses to represent the dependency tree.
|
||||||
public struct ValueGraph: Equatable, Codable {
|
public struct Graph: Equatable, Codable {
|
||||||
/// The name of the graph
|
/// The name of the graph
|
||||||
public var name: String
|
public var name: String
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ public struct ValueGraph: Equatable, Codable {
|
||||||
public var targets: [AbsolutePath: [String: Target]]
|
public var targets: [AbsolutePath: [String: Target]]
|
||||||
|
|
||||||
/// A dictionary that contains the one-to-many dependencies that represent the graph.
|
/// A dictionary that contains the one-to-many dependencies that represent the graph.
|
||||||
public var dependencies: [ValueGraphDependency: Set<ValueGraphDependency>]
|
public var dependencies: [GraphDependency: Set<GraphDependency>]
|
||||||
|
|
||||||
public init(name: String,
|
public init(name: String,
|
||||||
path: AbsolutePath,
|
path: AbsolutePath,
|
||||||
|
@ -33,7 +33,7 @@ public struct ValueGraph: Equatable, Codable {
|
||||||
projects: [AbsolutePath: Project],
|
projects: [AbsolutePath: Project],
|
||||||
packages: [AbsolutePath: [String: Package]],
|
packages: [AbsolutePath: [String: Package]],
|
||||||
targets: [AbsolutePath: [String: Target]],
|
targets: [AbsolutePath: [String: Target]],
|
||||||
dependencies: [ValueGraphDependency: Set<ValueGraphDependency>])
|
dependencies: [GraphDependency: Set<GraphDependency>])
|
||||||
{
|
{
|
||||||
self.name = name
|
self.name = name
|
||||||
self.path = path
|
self.path = path
|
|
@ -2,7 +2,7 @@ import Foundation
|
||||||
import TSCBasic
|
import TSCBasic
|
||||||
|
|
||||||
// swiftlint:disable:next type_body_length
|
// swiftlint:disable:next type_body_length
|
||||||
public enum ValueGraphDependency: Hashable, CustomStringConvertible, Comparable, Codable {
|
public enum GraphDependency: Hashable, CustomStringConvertible, Comparable, Codable {
|
||||||
/// A dependency that represents a pre-compiled .xcframework.
|
/// A dependency that represents a pre-compiled .xcframework.
|
||||||
case xcframework(
|
case xcframework(
|
||||||
path: AbsolutePath,
|
path: AbsolutePath,
|
||||||
|
@ -132,7 +132,7 @@ public enum ValueGraphDependency: Hashable, CustomStringConvertible, Comparable,
|
||||||
|
|
||||||
// MARK: - Comparable
|
// MARK: - Comparable
|
||||||
|
|
||||||
public static func < (lhs: ValueGraphDependency, rhs: ValueGraphDependency) -> Bool {
|
public static func < (lhs: GraphDependency, rhs: GraphDependency) -> Bool {
|
||||||
lhs.description < rhs.description
|
lhs.description < rhs.description
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import TSCBasic
|
import TSCBasic
|
||||||
|
|
||||||
public struct ValueGraphTarget: Equatable, Hashable, Comparable, CustomDebugStringConvertible, CustomStringConvertible, Codable {
|
public struct GraphTarget: Equatable, Hashable, Comparable, CustomDebugStringConvertible, CustomStringConvertible, Codable {
|
||||||
/// Path to the directory that contains the project where the target is defined.
|
/// Path to the directory that contains the project where the target is defined.
|
||||||
public let path: AbsolutePath
|
public let path: AbsolutePath
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ public struct ValueGraphTarget: Equatable, Hashable, Comparable, CustomDebugStri
|
||||||
self.project = project
|
self.project = project
|
||||||
}
|
}
|
||||||
|
|
||||||
public static func < (lhs: ValueGraphTarget, rhs: ValueGraphTarget) -> Bool {
|
public static func < (lhs: GraphTarget, rhs: GraphTarget) -> Bool {
|
||||||
(lhs.path, lhs.target) < (rhs.path, rhs.target)
|
(lhs.path, lhs.target) < (rhs.path, rhs.target)
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,16 +2,16 @@ import Foundation
|
||||||
import TSCBasic
|
import TSCBasic
|
||||||
import TuistGraph
|
import TuistGraph
|
||||||
|
|
||||||
public extension ValueGraph {
|
public extension Graph {
|
||||||
static func test(name: String = "graph",
|
static func test(name: String = "graph",
|
||||||
path: AbsolutePath = .root,
|
path: AbsolutePath = .root,
|
||||||
workspace: Workspace = .test(),
|
workspace: Workspace = .test(),
|
||||||
projects: [AbsolutePath: Project] = [:],
|
projects: [AbsolutePath: Project] = [:],
|
||||||
packages: [AbsolutePath: [String: Package]] = [:],
|
packages: [AbsolutePath: [String: Package]] = [:],
|
||||||
targets: [AbsolutePath: [String: Target]] = [:],
|
targets: [AbsolutePath: [String: Target]] = [:],
|
||||||
dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [:]) -> ValueGraph
|
dependencies: [GraphDependency: Set<GraphDependency>] = [:]) -> Graph
|
||||||
{
|
{
|
||||||
ValueGraph(
|
Graph(
|
||||||
name: name,
|
name: name,
|
||||||
path: path,
|
path: path,
|
||||||
workspace: workspace,
|
workspace: workspace,
|
|
@ -3,9 +3,9 @@ import TSCBasic
|
||||||
|
|
||||||
@testable import TuistGraph
|
@testable import TuistGraph
|
||||||
|
|
||||||
public extension ValueGraphDependency {
|
public extension GraphDependency {
|
||||||
static func testCocoapods(path: AbsolutePath = .root) -> ValueGraphDependency {
|
static func testCocoapods(path: AbsolutePath = .root) -> GraphDependency {
|
||||||
ValueGraphDependency.cocoapods(path: path)
|
GraphDependency.cocoapods(path: path)
|
||||||
}
|
}
|
||||||
|
|
||||||
static func testFramework(path: AbsolutePath = AbsolutePath.root.appending(component: "Test.framework"),
|
static func testFramework(path: AbsolutePath = AbsolutePath.root.appending(component: "Test.framework"),
|
||||||
|
@ -14,9 +14,9 @@ public extension ValueGraphDependency {
|
||||||
bcsymbolmapPaths: [AbsolutePath] = [],
|
bcsymbolmapPaths: [AbsolutePath] = [],
|
||||||
linking: BinaryLinking = .dynamic,
|
linking: BinaryLinking = .dynamic,
|
||||||
architectures: [BinaryArchitecture] = [.armv7],
|
architectures: [BinaryArchitecture] = [.armv7],
|
||||||
isCarthage: Bool = false) -> ValueGraphDependency
|
isCarthage: Bool = false) -> GraphDependency
|
||||||
{
|
{
|
||||||
ValueGraphDependency.framework(
|
GraphDependency.framework(
|
||||||
path: path,
|
path: path,
|
||||||
binaryPath: binaryPath,
|
binaryPath: binaryPath,
|
||||||
dsymPath: dsymPath,
|
dsymPath: dsymPath,
|
||||||
|
@ -30,7 +30,7 @@ public extension ValueGraphDependency {
|
||||||
static func testXCFramework(path: AbsolutePath = AbsolutePath.root.appending(RelativePath("Test.xcframework")),
|
static func testXCFramework(path: AbsolutePath = AbsolutePath.root.appending(RelativePath("Test.xcframework")),
|
||||||
infoPlist: XCFrameworkInfoPlist = .test(),
|
infoPlist: XCFrameworkInfoPlist = .test(),
|
||||||
primaryBinaryPath: AbsolutePath = AbsolutePath.root.appending(RelativePath("Test.xcframework/Test")),
|
primaryBinaryPath: AbsolutePath = AbsolutePath.root.appending(RelativePath("Test.xcframework/Test")),
|
||||||
linking: BinaryLinking = .dynamic) -> ValueGraphDependency
|
linking: BinaryLinking = .dynamic) -> GraphDependency
|
||||||
{
|
{
|
||||||
.xcframework(
|
.xcframework(
|
||||||
path: path,
|
path: path,
|
||||||
|
@ -41,7 +41,7 @@ public extension ValueGraphDependency {
|
||||||
}
|
}
|
||||||
|
|
||||||
static func testTarget(name: String = "Test",
|
static func testTarget(name: String = "Test",
|
||||||
path: AbsolutePath = .root) -> ValueGraphDependency
|
path: AbsolutePath = .root) -> GraphDependency
|
||||||
{
|
{
|
||||||
.target(
|
.target(
|
||||||
name: name,
|
name: name,
|
||||||
|
@ -52,7 +52,7 @@ public extension ValueGraphDependency {
|
||||||
static func testSDK(name: String = "XCTest",
|
static func testSDK(name: String = "XCTest",
|
||||||
path: AbsolutePath = AbsolutePath.root.appending(RelativePath("XCTest.framework")),
|
path: AbsolutePath = AbsolutePath.root.appending(RelativePath("XCTest.framework")),
|
||||||
status: SDKStatus = .required,
|
status: SDKStatus = .required,
|
||||||
source: SDKSource = .system) -> ValueGraphDependency
|
source: SDKSource = .system) -> GraphDependency
|
||||||
{
|
{
|
||||||
.sdk(
|
.sdk(
|
||||||
name: name,
|
name: name,
|
||||||
|
@ -66,7 +66,7 @@ public extension ValueGraphDependency {
|
||||||
publicHeaders: AbsolutePath = AbsolutePath.root.appending(RelativePath("headers")),
|
publicHeaders: AbsolutePath = AbsolutePath.root.appending(RelativePath("headers")),
|
||||||
linking: BinaryLinking = .dynamic,
|
linking: BinaryLinking = .dynamic,
|
||||||
architectures: [BinaryArchitecture] = [.armv7],
|
architectures: [BinaryArchitecture] = [.armv7],
|
||||||
swiftModuleMap: AbsolutePath? = nil) -> ValueGraphDependency
|
swiftModuleMap: AbsolutePath? = nil) -> GraphDependency
|
||||||
{
|
{
|
||||||
.library(
|
.library(
|
||||||
path: path,
|
path: path,
|
||||||
|
@ -78,7 +78,7 @@ public extension ValueGraphDependency {
|
||||||
}
|
}
|
||||||
|
|
||||||
static func testPackageProduct(path: AbsolutePath = .root,
|
static func testPackageProduct(path: AbsolutePath = .root,
|
||||||
product: String = "Tuist") -> ValueGraphDependency
|
product: String = "Tuist") -> GraphDependency
|
||||||
{
|
{
|
||||||
.packageProduct(
|
.packageProduct(
|
||||||
path: path,
|
path: path,
|
|
@ -3,12 +3,12 @@ import TSCBasic
|
||||||
|
|
||||||
@testable import TuistGraph
|
@testable import TuistGraph
|
||||||
|
|
||||||
public extension ValueGraphTarget {
|
public extension GraphTarget {
|
||||||
static func test(path: AbsolutePath = .root,
|
static func test(path: AbsolutePath = .root,
|
||||||
target: Target = .test(),
|
target: Target = .test(),
|
||||||
project: Project = .test()) -> ValueGraphTarget
|
project: Project = .test()) -> GraphTarget
|
||||||
{
|
{
|
||||||
ValueGraphTarget(
|
GraphTarget(
|
||||||
path: path,
|
path: path,
|
||||||
target: target,
|
target: target,
|
||||||
project: project
|
project: project
|
|
@ -120,7 +120,7 @@ final class CacheController: CacheControlling {
|
||||||
cacheOutputType: artifactBuilder.cacheOutputType
|
cacheOutputType: artifactBuilder.cacheOutputType
|
||||||
)
|
)
|
||||||
|
|
||||||
let filteredTargets: [ValueGraphTarget]
|
let filteredTargets: [GraphTarget]
|
||||||
if targetsToFilter.isEmpty {
|
if targetsToFilter.isEmpty {
|
||||||
filteredTargets = Array(hashesByCacheableTarget.keys)
|
filteredTargets = Array(hashesByCacheableTarget.keys)
|
||||||
} else {
|
} else {
|
||||||
|
@ -129,7 +129,7 @@ final class CacheController: CacheControlling {
|
||||||
|
|
||||||
logger.notice("Building cacheable targets")
|
logger.notice("Building cacheable targets")
|
||||||
|
|
||||||
let graphTraveser = ValueGraphTraverser(graph: graph)
|
let graphTraveser = GraphTraverser(graph: graph)
|
||||||
let sortedCacheableTargets = try topologicalSort(
|
let sortedCacheableTargets = try topologicalSort(
|
||||||
filteredTargets,
|
filteredTargets,
|
||||||
successors: {
|
successors: {
|
||||||
|
@ -161,7 +161,7 @@ final class CacheController: CacheControlling {
|
||||||
/// - configuration: The configuration.
|
/// - configuration: The configuration.
|
||||||
/// - hash: Hash of the target.
|
/// - hash: Hash of the target.
|
||||||
fileprivate func buildAndCacheFramework(path: AbsolutePath,
|
fileprivate func buildAndCacheFramework(path: AbsolutePath,
|
||||||
target: ValueGraphTarget,
|
target: GraphTarget,
|
||||||
configuration: String,
|
configuration: String,
|
||||||
hash: String) throws
|
hash: String) throws
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,11 +10,11 @@ import TuistSupport
|
||||||
|
|
||||||
protocol Generating {
|
protocol Generating {
|
||||||
@discardableResult
|
@discardableResult
|
||||||
func load(path: AbsolutePath) throws -> ValueGraph
|
func load(path: AbsolutePath) throws -> Graph
|
||||||
func loadProject(path: AbsolutePath) throws -> (Project, ValueGraph, [SideEffectDescriptor]) // swiftlint:disable:this large_tuple
|
func loadProject(path: AbsolutePath) throws -> (Project, Graph, [SideEffectDescriptor]) // swiftlint:disable:this large_tuple
|
||||||
func generate(path: AbsolutePath, projectOnly: Bool) throws -> AbsolutePath
|
func generate(path: AbsolutePath, projectOnly: Bool) throws -> AbsolutePath
|
||||||
func generateWithGraph(path: AbsolutePath, projectOnly: Bool) throws -> (AbsolutePath, ValueGraph)
|
func generateWithGraph(path: AbsolutePath, projectOnly: Bool) throws -> (AbsolutePath, Graph)
|
||||||
func generateProjectWorkspace(path: AbsolutePath) throws -> (AbsolutePath, ValueGraph)
|
func generateProjectWorkspace(path: AbsolutePath) throws -> (AbsolutePath, Graph)
|
||||||
}
|
}
|
||||||
|
|
||||||
class Generator: Generating {
|
class Generator: Generating {
|
||||||
|
@ -74,7 +74,7 @@ class Generator: Generating {
|
||||||
return generatedPath
|
return generatedPath
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateWithGraph(path: AbsolutePath, projectOnly: Bool) throws -> (AbsolutePath, ValueGraph) {
|
func generateWithGraph(path: AbsolutePath, projectOnly: Bool) throws -> (AbsolutePath, Graph) {
|
||||||
let manifests = manifestLoader.manifests(at: path)
|
let manifests = manifestLoader.manifests(at: path)
|
||||||
|
|
||||||
if projectOnly {
|
if projectOnly {
|
||||||
|
@ -88,7 +88,7 @@ class Generator: Generating {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func load(path: AbsolutePath) throws -> ValueGraph {
|
func load(path: AbsolutePath) throws -> Graph {
|
||||||
let manifests = manifestLoader.manifests(at: path)
|
let manifests = manifestLoader.manifests(at: path)
|
||||||
|
|
||||||
if manifests.contains(.workspace) {
|
if manifests.contains(.workspace) {
|
||||||
|
@ -101,7 +101,7 @@ class Generator: Generating {
|
||||||
}
|
}
|
||||||
|
|
||||||
// swiftlint:disable:next large_tuple
|
// swiftlint:disable:next large_tuple
|
||||||
func loadProject(path: AbsolutePath) throws -> (Project, ValueGraph, [SideEffectDescriptor]) {
|
func loadProject(path: AbsolutePath) throws -> (Project, Graph, [SideEffectDescriptor]) {
|
||||||
// Load config
|
// Load config
|
||||||
let config = try configLoader.loadConfig(path: path)
|
let config = try configLoader.loadConfig(path: path)
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ class Generator: Generating {
|
||||||
let modelMapperSideEffects = updatedModels.flatMap(\.1)
|
let modelMapperSideEffects = updatedModels.flatMap(\.1)
|
||||||
|
|
||||||
// Load Graph
|
// Load Graph
|
||||||
let graphLoader = ValueGraphLoader()
|
let graphLoader = GraphLoader()
|
||||||
let (project, graph) = try graphLoader.loadProject(
|
let (project, graph) = try graphLoader.loadProject(
|
||||||
at: path,
|
at: path,
|
||||||
projects: updatedProjects
|
projects: updatedProjects
|
||||||
|
@ -141,10 +141,10 @@ class Generator: Generating {
|
||||||
return (project, updatedGraph, modelMapperSideEffects + graphMapperSideEffects)
|
return (project, updatedGraph, modelMapperSideEffects + graphMapperSideEffects)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func generateProject(path: AbsolutePath) throws -> (AbsolutePath, ValueGraph) {
|
private func generateProject(path: AbsolutePath) throws -> (AbsolutePath, Graph) {
|
||||||
// Load
|
// Load
|
||||||
let (project, graph, sideEffects) = try loadProject(path: path)
|
let (project, graph, sideEffects) = try loadProject(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Lint
|
// Lint
|
||||||
try lint(graphTraverser: graphTraverser)
|
try lint(graphTraverser: graphTraverser)
|
||||||
|
@ -164,10 +164,10 @@ class Generator: Generating {
|
||||||
return (projectDescriptor.xcodeprojPath, graph)
|
return (projectDescriptor.xcodeprojPath, graph)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func generateWorkspace(path: AbsolutePath) throws -> (AbsolutePath, ValueGraph) {
|
private func generateWorkspace(path: AbsolutePath) throws -> (AbsolutePath, Graph) {
|
||||||
// Load
|
// Load
|
||||||
let (graph, sideEffects) = try loadWorkspace(path: path)
|
let (graph, sideEffects) = try loadWorkspace(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Lint
|
// Lint
|
||||||
try lint(graphTraverser: graphTraverser)
|
try lint(graphTraverser: graphTraverser)
|
||||||
|
@ -187,10 +187,10 @@ class Generator: Generating {
|
||||||
return (workspaceDescriptor.xcworkspacePath, graph)
|
return (workspaceDescriptor.xcworkspacePath, graph)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal func generateProjectWorkspace(path: AbsolutePath) throws -> (AbsolutePath, ValueGraph) {
|
internal func generateProjectWorkspace(path: AbsolutePath) throws -> (AbsolutePath, Graph) {
|
||||||
// Load
|
// Load
|
||||||
let (_, graph, sideEffects) = try loadProjectWorkspace(path: path)
|
let (_, graph, sideEffects) = try loadProjectWorkspace(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Lint
|
// Lint
|
||||||
try lint(graphTraverser: graphTraverser)
|
try lint(graphTraverser: graphTraverser)
|
||||||
|
@ -226,7 +226,7 @@ class Generator: Generating {
|
||||||
}
|
}
|
||||||
|
|
||||||
// swiftlint:disable:next large_tuple
|
// swiftlint:disable:next large_tuple
|
||||||
private func loadProjectWorkspace(path: AbsolutePath) throws -> (Project, ValueGraph, [SideEffectDescriptor]) {
|
private func loadProjectWorkspace(path: AbsolutePath) throws -> (Project, Graph, [SideEffectDescriptor]) {
|
||||||
// Load config
|
// Load config
|
||||||
let config = try configLoader.loadConfig(path: path)
|
let config = try configLoader.loadConfig(path: path)
|
||||||
|
|
||||||
|
@ -261,7 +261,7 @@ class Generator: Generating {
|
||||||
)
|
)
|
||||||
|
|
||||||
// Load Graph
|
// Load Graph
|
||||||
let graphLoader = ValueGraphLoader()
|
let graphLoader = GraphLoader()
|
||||||
var (project, graph) = try graphLoader.loadProject(
|
var (project, graph) = try graphLoader.loadProject(
|
||||||
at: path,
|
at: path,
|
||||||
projects: updatedModels.projects
|
projects: updatedModels.projects
|
||||||
|
@ -284,7 +284,7 @@ class Generator: Generating {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func loadWorkspace(path: AbsolutePath) throws -> (ValueGraph, [SideEffectDescriptor]) {
|
private func loadWorkspace(path: AbsolutePath) throws -> (Graph, [SideEffectDescriptor]) {
|
||||||
// Load config
|
// Load config
|
||||||
let config = try configLoader.loadConfig(path: path)
|
let config = try configLoader.loadConfig(path: path)
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ class Generator: Generating {
|
||||||
)
|
)
|
||||||
|
|
||||||
// Load Graph
|
// Load Graph
|
||||||
let graphLoader = ValueGraphLoader()
|
let graphLoader = GraphLoader()
|
||||||
let graph = try graphLoader.loadWorkspace(
|
let graph = try graphLoader.loadWorkspace(
|
||||||
workspace: updatedModels.workspace,
|
workspace: updatedModels.workspace,
|
||||||
projects: updatedModels.projects
|
projects: updatedModels.projects
|
||||||
|
|
|
@ -5,7 +5,7 @@ import TuistGraph
|
||||||
/// A mapper that ensures that the list of projects of the workspace is in sync
|
/// A mapper that ensures that the list of projects of the workspace is in sync
|
||||||
/// with the projects available in the graph.
|
/// with the projects available in the graph.
|
||||||
final class UpdateWorkspaceProjectsGraphMapper: GraphMapping {
|
final class UpdateWorkspaceProjectsGraphMapper: GraphMapping {
|
||||||
func map(graph: ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor]) {
|
func map(graph: Graph) throws -> (Graph, [SideEffectDescriptor]) {
|
||||||
var graph = graph
|
var graph = graph
|
||||||
let graphProjects = Set(graph.projects.map(\.key))
|
let graphProjects = Set(graph.projects.map(\.key))
|
||||||
let workspaceProjects = Set(graph.workspace.projects).intersection(graphProjects)
|
let workspaceProjects = Set(graph.workspace.projects).intersection(graphProjects)
|
||||||
|
|
|
@ -150,7 +150,7 @@ final class ProjectEditor: ProjectEditing {
|
||||||
projectAutomationPath: try resourceLocator.projectAutomation()
|
projectAutomationPath: try resourceLocator.projectAutomation()
|
||||||
)
|
)
|
||||||
|
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let descriptor = try generator.generateWorkspace(graphTraverser: graphTraverser)
|
let descriptor = try generator.generateWorkspace(graphTraverser: graphTraverser)
|
||||||
try writer.write(workspace: descriptor)
|
try writer.write(workspace: descriptor)
|
||||||
return descriptor.xcworkspacePath
|
return descriptor.xcworkspacePath
|
||||||
|
|
|
@ -22,7 +22,7 @@ protocol ProjectEditorMapping: AnyObject {
|
||||||
tasks: [AbsolutePath],
|
tasks: [AbsolutePath],
|
||||||
projectDescriptionPath: AbsolutePath,
|
projectDescriptionPath: AbsolutePath,
|
||||||
projectAutomationPath: AbsolutePath
|
projectAutomationPath: AbsolutePath
|
||||||
) throws -> ValueGraph
|
) throws -> Graph
|
||||||
}
|
}
|
||||||
|
|
||||||
// swiftlint:disable:next type_body_length
|
// swiftlint:disable:next type_body_length
|
||||||
|
@ -44,7 +44,7 @@ final class ProjectEditorMapper: ProjectEditorMapping {
|
||||||
tasks: [AbsolutePath],
|
tasks: [AbsolutePath],
|
||||||
projectDescriptionPath: AbsolutePath,
|
projectDescriptionPath: AbsolutePath,
|
||||||
projectAutomationPath: AbsolutePath
|
projectAutomationPath: AbsolutePath
|
||||||
) throws -> ValueGraph {
|
) throws -> Graph {
|
||||||
let swiftVersion = try System.shared.swiftVersion()
|
let swiftVersion = try System.shared.swiftVersion()
|
||||||
|
|
||||||
let pluginsProject = mapPluginsProject(
|
let pluginsProject = mapPluginsProject(
|
||||||
|
@ -92,9 +92,9 @@ final class ProjectEditorMapper: ProjectEditorMapping {
|
||||||
|
|
||||||
let graphDependencies = projects
|
let graphDependencies = projects
|
||||||
.lazy
|
.lazy
|
||||||
.flatMap { project -> [(ValueGraphDependency, Set<ValueGraphDependency>)] in
|
.flatMap { project -> [(GraphDependency, Set<GraphDependency>)] in
|
||||||
let graphDependencies = project.targets.map(\.dependencies).lazy.map { dependencies in
|
let graphDependencies = project.targets.map(\.dependencies).lazy.map { dependencies in
|
||||||
dependencies.lazy.compactMap { dependency -> ValueGraphDependency? in
|
dependencies.lazy.compactMap { dependency -> GraphDependency? in
|
||||||
switch dependency {
|
switch dependency {
|
||||||
case let .target(name):
|
case let .target(name):
|
||||||
if let pluginsProject = pluginsProject, editablePluginManifests.contains(where: { $0.name == name }) {
|
if let pluginsProject = pluginsProject, editablePluginManifests.contains(where: { $0.name == name }) {
|
||||||
|
@ -109,11 +109,11 @@ final class ProjectEditorMapper: ProjectEditorMapping {
|
||||||
}
|
}
|
||||||
|
|
||||||
return zip(project.targets, graphDependencies).map { target, dependencies in
|
return zip(project.targets, graphDependencies).map { target, dependencies in
|
||||||
(ValueGraphDependency.target(name: target.name, path: project.path), Set(dependencies))
|
(GraphDependency.target(name: target.name, path: project.path), Set(dependencies))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ValueGraph(
|
return Graph(
|
||||||
name: name,
|
name: name,
|
||||||
path: sourceRootPath,
|
path: sourceRootPath,
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
|
|
|
@ -56,7 +56,7 @@ final class BuildService {
|
||||||
buildOutputPath: AbsolutePath?,
|
buildOutputPath: AbsolutePath?,
|
||||||
path: AbsolutePath
|
path: AbsolutePath
|
||||||
) throws {
|
) throws {
|
||||||
let graph: ValueGraph
|
let graph: Graph
|
||||||
if try (generate || buildGraphInspector.workspacePath(directory: path) == nil) {
|
if try (generate || buildGraphInspector.workspacePath(directory: path) == nil) {
|
||||||
graph = try generator.generateWithGraph(path: path, projectOnly: false).1
|
graph = try generator.generateWithGraph(path: path, projectOnly: false).1
|
||||||
} else {
|
} else {
|
||||||
|
@ -67,7 +67,7 @@ final class BuildService {
|
||||||
throw BuildServiceError.workspaceNotFound(path: path.pathString)
|
throw BuildServiceError.workspaceNotFound(path: path.pathString)
|
||||||
}
|
}
|
||||||
|
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let buildableSchemes = buildGraphInspector.buildableSchemes(graphTraverser: graphTraverser)
|
let buildableSchemes = buildGraphInspector.buildableSchemes(graphTraverser: graphTraverser)
|
||||||
|
|
||||||
logger.log(level: .debug, "Found the following buildable schemes: \(buildableSchemes.map(\.name).joined(separator: ", "))")
|
logger.log(level: .debug, "Found the following buildable schemes: \(buildableSchemes.map(\.name).joined(separator: ", "))")
|
||||||
|
|
|
@ -78,7 +78,7 @@ final class DocService {
|
||||||
|
|
||||||
func run(project path: AbsolutePath, target targetName: String) throws {
|
func run(project path: AbsolutePath, target targetName: String) throws {
|
||||||
let graph = try generator.load(path: path)
|
let graph = try generator.load(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
let targets = graphTraverser.allTargets()
|
let targets = graphTraverser.allTargets()
|
||||||
.filter { !graphTraverser.dependsOnXCTest(path: $0.path, name: $0.target.name) }
|
.filter { !graphTraverser.dependsOnXCTest(path: $0.path, name: $0.target.name) }
|
||||||
|
|
|
@ -65,7 +65,7 @@ final class LintCodeService {
|
||||||
let graph = try manifestGraphLoader.loadGraph(at: path)
|
let graph = try manifestGraphLoader.loadGraph(at: path)
|
||||||
|
|
||||||
// Get sources
|
// Get sources
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let sources = try getSources(targetName: targetName, graphTraverser: graphTraverser)
|
let sources = try getSources(targetName: targetName, graphTraverser: graphTraverser)
|
||||||
|
|
||||||
// Lint code
|
// Lint code
|
||||||
|
|
|
@ -65,7 +65,7 @@ final class LintProjectService {
|
||||||
|
|
||||||
logger.notice("Loading the dependency graph at \(path)")
|
logger.notice("Loading the dependency graph at \(path)")
|
||||||
let graph = try manifestGraphLoader.loadGraph(at: path)
|
let graph = try manifestGraphLoader.loadGraph(at: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
logger.notice("Running linters")
|
logger.notice("Running linters")
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ final class RunService {
|
||||||
runPath = FileHandler.shared.currentPath
|
runPath = FileHandler.shared.currentPath
|
||||||
}
|
}
|
||||||
|
|
||||||
let graph: ValueGraph
|
let graph: Graph
|
||||||
if try (generate || buildGraphInspector.workspacePath(directory: runPath) == nil) {
|
if try (generate || buildGraphInspector.workspacePath(directory: runPath) == nil) {
|
||||||
logger.notice("Generating project for running", metadata: .section)
|
logger.notice("Generating project for running", metadata: .section)
|
||||||
graph = try generator.generateWithGraph(path: runPath, projectOnly: false).1
|
graph = try generator.generateWithGraph(path: runPath, projectOnly: false).1
|
||||||
|
@ -85,7 +85,7 @@ final class RunService {
|
||||||
throw RunServiceError.workspaceNotFound(path: runPath.pathString)
|
throw RunServiceError.workspaceNotFound(path: runPath.pathString)
|
||||||
}
|
}
|
||||||
|
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let runnableSchemes = buildGraphInspector.runnableSchemes(graphTraverser: graphTraverser)
|
let runnableSchemes = buildGraphInspector.runnableSchemes(graphTraverser: graphTraverser)
|
||||||
|
|
||||||
logger.debug("Found the following runnable schemes: \(runnableSchemes.map(\.name).joined(separator: ", "))")
|
logger.debug("Found the following runnable schemes: \(runnableSchemes.map(\.name).joined(separator: ", "))")
|
||||||
|
|
|
@ -102,7 +102,7 @@ final class TestService {
|
||||||
path: path,
|
path: path,
|
||||||
projectOnly: false
|
projectOnly: false
|
||||||
).1
|
).1
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let version = osVersion?.version()
|
let version = osVersion?.version()
|
||||||
|
|
||||||
let testableSchemes = buildGraphInspector.testableSchemes(graphTraverser: graphTraverser) +
|
let testableSchemes = buildGraphInspector.testableSchemes(graphTraverser: graphTraverser) +
|
||||||
|
|
|
@ -17,7 +17,7 @@ import TuistSupport
|
||||||
protocol ManifestGraphLoading {
|
protocol ManifestGraphLoading {
|
||||||
/// Loads a Workspace or Project Graph at a given path based on manifest availability
|
/// Loads a Workspace or Project Graph at a given path based on manifest availability
|
||||||
/// - Note: This will search for a Workspace manifest first, then fallback to searching for a Project manifest
|
/// - Note: This will search for a Workspace manifest first, then fallback to searching for a Project manifest
|
||||||
func loadGraph(at path: AbsolutePath) throws -> ValueGraph
|
func loadGraph(at path: AbsolutePath) throws -> Graph
|
||||||
}
|
}
|
||||||
|
|
||||||
final class ManifestGraphLoader: ManifestGraphLoading {
|
final class ManifestGraphLoader: ManifestGraphLoading {
|
||||||
|
@ -25,7 +25,7 @@ final class ManifestGraphLoader: ManifestGraphLoading {
|
||||||
private let manifestLoader: ManifestLoading
|
private let manifestLoader: ManifestLoading
|
||||||
private let recursiveManifestLoader: RecursiveManifestLoader
|
private let recursiveManifestLoader: RecursiveManifestLoader
|
||||||
private let converter: ManifestModelConverting
|
private let converter: ManifestModelConverting
|
||||||
private let graphLoader: ValueGraphLoading
|
private let graphLoader: GraphLoading
|
||||||
private let pluginsService: PluginServicing
|
private let pluginsService: PluginServicing
|
||||||
|
|
||||||
convenience init(manifestLoader: ManifestLoading) {
|
convenience init(manifestLoader: ManifestLoading) {
|
||||||
|
@ -36,7 +36,7 @@ final class ManifestGraphLoader: ManifestGraphLoading {
|
||||||
converter: ManifestModelConverter(
|
converter: ManifestModelConverter(
|
||||||
manifestLoader: manifestLoader
|
manifestLoader: manifestLoader
|
||||||
),
|
),
|
||||||
graphLoader: ValueGraphLoader(),
|
graphLoader: GraphLoader(),
|
||||||
pluginsService: PluginService(manifestLoader: manifestLoader)
|
pluginsService: PluginService(manifestLoader: manifestLoader)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ final class ManifestGraphLoader: ManifestGraphLoading {
|
||||||
manifestLoader: ManifestLoading,
|
manifestLoader: ManifestLoading,
|
||||||
recursiveManifestLoader: RecursiveManifestLoader,
|
recursiveManifestLoader: RecursiveManifestLoader,
|
||||||
converter: ManifestModelConverting,
|
converter: ManifestModelConverting,
|
||||||
graphLoader: ValueGraphLoading,
|
graphLoader: GraphLoading,
|
||||||
pluginsService: PluginServicing
|
pluginsService: PluginServicing
|
||||||
) {
|
) {
|
||||||
self.configLoader = configLoader
|
self.configLoader = configLoader
|
||||||
|
@ -57,7 +57,7 @@ final class ManifestGraphLoader: ManifestGraphLoading {
|
||||||
self.pluginsService = pluginsService
|
self.pluginsService = pluginsService
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadGraph(at path: AbsolutePath) throws -> ValueGraph {
|
func loadGraph(at path: AbsolutePath) throws -> Graph {
|
||||||
let manifests = manifestLoader.manifests(at: path)
|
let manifests = manifestLoader.manifests(at: path)
|
||||||
if manifests.contains(.workspace) {
|
if manifests.contains(.workspace) {
|
||||||
return try loadWorkspaceGraph(at: path)
|
return try loadWorkspaceGraph(at: path)
|
||||||
|
@ -78,14 +78,14 @@ final class ManifestGraphLoader: ManifestGraphLoading {
|
||||||
|
|
||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
private func loadProjectGraph(at path: AbsolutePath) throws -> (Project, ValueGraph) {
|
private func loadProjectGraph(at path: AbsolutePath) throws -> (Project, Graph) {
|
||||||
let plugins = try loadPlugins(at: path)
|
let plugins = try loadPlugins(at: path)
|
||||||
let manifests = try recursiveManifestLoader.loadProject(at: path)
|
let manifests = try recursiveManifestLoader.loadProject(at: path)
|
||||||
let models = try convert(manifests: manifests, plugins: plugins)
|
let models = try convert(manifests: manifests, plugins: plugins)
|
||||||
return try graphLoader.loadProject(at: path, projects: models)
|
return try graphLoader.loadProject(at: path, projects: models)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func loadWorkspaceGraph(at path: AbsolutePath) throws -> ValueGraph {
|
private func loadWorkspaceGraph(at path: AbsolutePath) throws -> Graph {
|
||||||
let plugins = try loadPlugins(at: path)
|
let plugins = try loadPlugins(at: path)
|
||||||
let manifests = try recursiveManifestLoader.loadWorkspace(at: path)
|
let manifests = try recursiveManifestLoader.loadWorkspace(at: path)
|
||||||
let models = try convert(manifests: manifests, plugins: plugins)
|
let models = try convert(manifests: manifests, plugins: plugins)
|
||||||
|
|
|
@ -82,7 +82,7 @@ public final class SigningInteractor: SigningInteracting {
|
||||||
|
|
||||||
// MARK: - Helpers
|
// MARK: - Helpers
|
||||||
|
|
||||||
private func install(target: ValueGraphTarget,
|
private func install(target: GraphTarget,
|
||||||
keychainPath: AbsolutePath,
|
keychainPath: AbsolutePath,
|
||||||
certificates: [Fingerprint: Certificate],
|
certificates: [Fingerprint: Certificate],
|
||||||
provisioningProfiles: [TargetName: [ConfigurationName: ProvisioningProfile]]) throws
|
provisioningProfiles: [TargetName: [ConfigurationName: ProvisioningProfile]]) throws
|
||||||
|
|
|
@ -138,11 +138,11 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
let scheme = Scheme.test(buildAction: .test(targets: [.init(projectPath: projectPath, name: "Core")]))
|
let scheme = Scheme.test(buildAction: .test(targets: [.init(projectPath: projectPath, name: "Core")]))
|
||||||
let target = Target.test(name: "Core")
|
let target = Target.test(name: "Core")
|
||||||
let project = Project.test(path: projectPath)
|
let project = Project.test(path: projectPath)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [projectPath: project],
|
projects: [projectPath: project],
|
||||||
targets: [projectPath: [target.name: target]]
|
targets: [projectPath: [target.name: target]]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.buildableTarget(scheme: scheme, graphTraverser: graphTraverser)
|
let got = subject.buildableTarget(scheme: scheme, graphTraverser: graphTraverser)
|
||||||
|
@ -171,14 +171,14 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
let workspace = Workspace.test(schemes: [workspaceScheme])
|
let workspace = Workspace.test(schemes: [workspaceScheme])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
projects: [
|
projects: [
|
||||||
coreProject.path: coreProject,
|
coreProject.path: coreProject,
|
||||||
kitProject.path: kitProject,
|
kitProject.path: kitProject,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.buildableSchemes(graphTraverser: graphTraverser)
|
let got = subject.buildableSchemes(graphTraverser: graphTraverser)
|
||||||
|
@ -228,7 +228,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
path: coreProjectPath,
|
path: coreProjectPath,
|
||||||
schemes: [coreScheme, coreTestsScheme]
|
schemes: [coreScheme, coreTestsScheme]
|
||||||
)
|
)
|
||||||
let coreValueGraphTarget = ValueGraphTarget.test(
|
let coreGraphTarget = GraphTarget.test(
|
||||||
target: coreTarget,
|
target: coreTarget,
|
||||||
project: coreProject
|
project: coreProject
|
||||||
)
|
)
|
||||||
|
@ -237,7 +237,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
product: .unitTests,
|
product: .unitTests,
|
||||||
dependencies: [.target(name: "Core")]
|
dependencies: [.target(name: "Core")]
|
||||||
)
|
)
|
||||||
let coreTestsValueGraphTarget = ValueGraphTarget.test(
|
let coreTestsGraphTarget = GraphTarget.test(
|
||||||
target: coreTestsTarget,
|
target: coreTestsTarget,
|
||||||
project: coreProject
|
project: coreProject
|
||||||
)
|
)
|
||||||
|
@ -246,7 +246,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
path: projectPath,
|
path: projectPath,
|
||||||
schemes: [kitScheme, kitTestsScheme]
|
schemes: [kitScheme, kitTestsScheme]
|
||||||
)
|
)
|
||||||
let kitValueGraphTarget = ValueGraphTarget.test(
|
let kitGraphTarget = GraphTarget.test(
|
||||||
target: kitTarget,
|
target: kitTarget,
|
||||||
project: kitProject
|
project: kitProject
|
||||||
)
|
)
|
||||||
|
@ -255,27 +255,27 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
product: .unitTests,
|
product: .unitTests,
|
||||||
dependencies: [.target(name: "Kit")]
|
dependencies: [.target(name: "Kit")]
|
||||||
)
|
)
|
||||||
let kitTestsValueGraphTarget = ValueGraphTarget.test(
|
let kitTestsGraphTarget = GraphTarget.test(
|
||||||
target: kitTestsTarget,
|
target: kitTestsTarget,
|
||||||
project: kitProject
|
project: kitProject
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
kitProject.path: kitProject,
|
kitProject.path: kitProject,
|
||||||
coreProject.path: coreProject,
|
coreProject.path: coreProject,
|
||||||
],
|
],
|
||||||
targets: [
|
targets: [
|
||||||
projectPath: [
|
projectPath: [
|
||||||
kitValueGraphTarget.target.name: kitValueGraphTarget.target,
|
kitGraphTarget.target.name: kitGraphTarget.target,
|
||||||
kitTestsValueGraphTarget.target.name: kitTestsValueGraphTarget.target,
|
kitTestsGraphTarget.target.name: kitTestsGraphTarget.target,
|
||||||
],
|
],
|
||||||
coreProjectPath: [
|
coreProjectPath: [
|
||||||
coreValueGraphTarget.target.name: coreValueGraphTarget.target,
|
coreGraphTarget.target.name: coreGraphTarget.target,
|
||||||
coreTestsValueGraphTarget.target.name: coreTestsValueGraphTarget.target,
|
coreTestsGraphTarget.target.name: coreTestsGraphTarget.target,
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.testSchemes(graphTraverser: graphTraverser)
|
let got = subject.testSchemes(graphTraverser: graphTraverser)
|
||||||
|
@ -312,21 +312,21 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
path: coreProjectPath,
|
path: coreProjectPath,
|
||||||
schemes: [coreScheme, coreTestsScheme]
|
schemes: [coreScheme, coreTestsScheme]
|
||||||
)
|
)
|
||||||
let coreValueGraphTarget = ValueGraphTarget.test(
|
let coreGraphTarget = GraphTarget.test(
|
||||||
target: coreTarget,
|
target: coreTarget,
|
||||||
project: coreProject
|
project: coreProject
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
coreProject.path: coreProject,
|
coreProject.path: coreProject,
|
||||||
],
|
],
|
||||||
targets: [
|
targets: [
|
||||||
coreProject.path: [
|
coreProject.path: [
|
||||||
coreValueGraphTarget.target.name: coreValueGraphTarget.target,
|
coreGraphTarget.target.name: coreGraphTarget.target,
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.testableSchemes(graphTraverser: graphTraverser)
|
let got = subject.testableSchemes(graphTraverser: graphTraverser)
|
||||||
|
@ -355,7 +355,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
let projectB = Project.test(path: projectBPath, schemes: [schemeB])
|
let projectB = Project.test(path: projectBPath, schemes: [schemeB])
|
||||||
let targetB = Target.test(name: "B")
|
let targetB = Target.test(name: "B")
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
workspace: Workspace.test(projects: [projectA.path]),
|
workspace: Workspace.test(projects: [projectA.path]),
|
||||||
projects: [
|
projects: [
|
||||||
projectA.path: projectA,
|
projectA.path: projectA,
|
||||||
|
@ -363,7 +363,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
targets: [projectAPath: [targetA.name: targetA], projectBPath: [targetB.name: targetB]]
|
targets: [projectAPath: [targetA.name: targetA], projectBPath: [targetB.name: targetB]]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.buildableEntrySchemes(graphTraverser: graphTraverser)
|
let got = subject.buildableEntrySchemes(graphTraverser: graphTraverser)
|
||||||
|
@ -417,7 +417,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
func test_projectSchemes_when_multiple_platforms() {
|
func test_projectSchemes_when_multiple_platforms() {
|
||||||
// Given
|
// Given
|
||||||
let graph: ValueGraph = .test(
|
let graph: Graph = .test(
|
||||||
workspace: .test(
|
workspace: .test(
|
||||||
name: "WorkspaceName",
|
name: "WorkspaceName",
|
||||||
schemes: [
|
schemes: [
|
||||||
|
@ -427,7 +427,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.projectSchemes(graphTraverser: graphTraverser)
|
let got = subject.projectSchemes(graphTraverser: graphTraverser)
|
||||||
|
@ -444,7 +444,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
func test_projectSchemes_when_single_platform() {
|
func test_projectSchemes_when_single_platform() {
|
||||||
// Given
|
// Given
|
||||||
let graph: ValueGraph = .test(
|
let graph: Graph = .test(
|
||||||
workspace: .test(
|
workspace: .test(
|
||||||
name: "WorkspaceName",
|
name: "WorkspaceName",
|
||||||
schemes: [
|
schemes: [
|
||||||
|
@ -453,7 +453,7 @@ final class BuildGraphInspectorTests: TuistUnitTestCase {
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.projectSchemes(graphTraverser: graphTraverser)
|
let got = subject.projectSchemes(graphTraverser: graphTraverser)
|
||||||
|
|
|
@ -57,7 +57,7 @@ final class TargetRunnerTests: TuistUnitTestCase {
|
||||||
|
|
||||||
func test_throwsError_when_buildProductNotFound() throws {
|
func test_throwsError_when_buildProductNotFound() throws {
|
||||||
// Given
|
// Given
|
||||||
let target = ValueGraphTarget.test()
|
let target = GraphTarget.test()
|
||||||
let path = try temporaryPath()
|
let path = try temporaryPath()
|
||||||
let workspacePath = path.appending(component: "App.xcworkspace")
|
let workspacePath = path.appending(component: "App.xcworkspace")
|
||||||
let outputPath = path.appending(component: ".build")
|
let outputPath = path.appending(component: ".build")
|
||||||
|
@ -115,7 +115,7 @@ final class TargetRunnerTests: TuistUnitTestCase {
|
||||||
// Given
|
// Given
|
||||||
let workspacePath = try temporaryPath().appending(component: "App.xcworkspace")
|
let workspacePath = try temporaryPath().appending(component: "App.xcworkspace")
|
||||||
let target = Target.test(platform: .macOS, product: .commandLineTool)
|
let target = Target.test(platform: .macOS, product: .commandLineTool)
|
||||||
let graphTarget = ValueGraphTarget.test(path: workspacePath, target: target, project: .test())
|
let graphTarget = GraphTarget.test(path: workspacePath, target: target, project: .test())
|
||||||
let outputPath = try temporaryPath().appending(component: ".build")
|
let outputPath = try temporaryPath().appending(component: ".build")
|
||||||
let executablePath = outputPath.appending(component: target.productNameWithExtension)
|
let executablePath = outputPath.appending(component: target.productNameWithExtension)
|
||||||
let arguments = ["Argument", "--option1", "AnotherArgument", "--option2=true", "-opt3"]
|
let arguments = ["Argument", "--option1", "AnotherArgument", "--option2=true", "-opt3"]
|
||||||
|
@ -144,7 +144,7 @@ final class TargetRunnerTests: TuistUnitTestCase {
|
||||||
// Given
|
// Given
|
||||||
let workspacePath = try temporaryPath().appending(component: "App.xcworkspace")
|
let workspacePath = try temporaryPath().appending(component: "App.xcworkspace")
|
||||||
let target = Target.test(platform: .iOS, product: .app)
|
let target = Target.test(platform: .iOS, product: .app)
|
||||||
let graphTarget = ValueGraphTarget.test(path: workspacePath, target: target, project: .test())
|
let graphTarget = GraphTarget.test(path: workspacePath, target: target, project: .test())
|
||||||
let outputPath = try temporaryPath().appending(component: ".build")
|
let outputPath = try temporaryPath().appending(component: ".build")
|
||||||
let appPath = outputPath.appending(component: target.productNameWithExtension)
|
let appPath = outputPath.appending(component: target.productNameWithExtension)
|
||||||
let arguments = ["Argument", "--option1", "AnotherArgument", "--option2=true", "-opt3"]
|
let arguments = ["Argument", "--option1", "AnotherArgument", "--option2=true", "-opt3"]
|
||||||
|
|
|
@ -70,7 +70,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, sources: [source1, source2])
|
let framework1 = makeFramework(project: project1, sources: [source1, source2])
|
||||||
let framework2 = makeFramework(project: project2, sources: [source2, source1])
|
let framework2 = makeFramework(project: project2, sources: [source2, source1])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -98,7 +98,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, sources: [source1, source2])
|
let framework1 = makeFramework(project: project1, sources: [source1, source2])
|
||||||
let framework2 = makeFramework(project: project2, sources: [source3, source4])
|
let framework2 = makeFramework(project: project2, sources: [source3, source4])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -126,7 +126,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, sources: [source1, source2])
|
let framework1 = makeFramework(project: project1, sources: [source1, source2])
|
||||||
let framework2 = makeFramework(project: project2, sources: [source3, source4])
|
let framework2 = makeFramework(project: project2, sources: [source3, source4])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -156,7 +156,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, sources: [source1, source2])
|
let framework1 = makeFramework(project: project1, sources: [source1, source2])
|
||||||
let framework2 = makeFramework(project: project2, sources: [source3, source4])
|
let framework2 = makeFramework(project: project2, sources: [source3, source4])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -188,7 +188,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, resources: [resourceFile1])
|
let framework1 = makeFramework(project: project1, resources: [resourceFile1])
|
||||||
let framework2 = makeFramework(project: project2, resources: [resourceFile2])
|
let framework2 = makeFramework(project: project2, resources: [resourceFile2])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -216,7 +216,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, resources: [resourceFolderReference1])
|
let framework1 = makeFramework(project: project1, resources: [resourceFolderReference1])
|
||||||
let framework2 = makeFramework(project: project2, resources: [resourceFolderReference2])
|
let framework2 = makeFramework(project: project2, resources: [resourceFolderReference2])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -245,7 +245,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, resources: resources)
|
let framework1 = makeFramework(project: project1, resources: resources)
|
||||||
let framework2 = makeFramework(project: project2, resources: resources)
|
let framework2 = makeFramework(project: project2, resources: resources)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -275,7 +275,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, coreDataModels: [coreDataModel1])
|
let framework1 = makeFramework(project: project1, coreDataModels: [coreDataModel1])
|
||||||
let framework2 = makeFramework(project: project2, coreDataModels: [coreDataModel2])
|
let framework2 = makeFramework(project: project2, coreDataModels: [coreDataModel2])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -303,7 +303,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, coreDataModels: [coreDataModel1])
|
let framework1 = makeFramework(project: project1, coreDataModels: [coreDataModel1])
|
||||||
let framework2 = makeFramework(project: project2, coreDataModels: [coreDataModel1])
|
let framework2 = makeFramework(project: project2, coreDataModels: [coreDataModel1])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -335,7 +335,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, platform: .iOS)
|
let framework1 = makeFramework(project: project1, platform: .iOS)
|
||||||
let framework2 = makeFramework(project: project2, platform: .macOS)
|
let framework2 = makeFramework(project: project2, platform: .macOS)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -364,7 +364,7 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
let project2 = Project.test(path: try temporaryPath().appending(component: "f2"))
|
||||||
let framework1 = makeFramework(project: project1, productName: "1")
|
let framework1 = makeFramework(project: project1, productName: "1")
|
||||||
let framework2 = makeFramework(project: project2, productName: "2")
|
let framework2 = makeFramework(project: project2, productName: "2")
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project1.path: project1,
|
project1.path: project1,
|
||||||
project2.path: project2,
|
project2.path: project2,
|
||||||
|
@ -422,8 +422,8 @@ final class ContentHashingIntegrationTests: TuistTestCase {
|
||||||
resources: [ResourceFileElement] = [],
|
resources: [ResourceFileElement] = [],
|
||||||
coreDataModels: [CoreDataModel] = [],
|
coreDataModels: [CoreDataModel] = [],
|
||||||
targetActions: [TargetAction] = []
|
targetActions: [TargetAction] = []
|
||||||
) -> ValueGraphTarget {
|
) -> GraphTarget {
|
||||||
ValueGraphTarget.test(
|
GraphTarget.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
target: .test(
|
target: .test(
|
||||||
platform: platform,
|
platform: platform,
|
||||||
|
|
|
@ -44,25 +44,25 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
// Given: D
|
// Given: D
|
||||||
let dFramework = Target.test(name: "D", platform: .iOS, product: .framework)
|
let dFramework = Target.test(name: "D", platform: .iOS, product: .framework)
|
||||||
let dProject = Project.test(path: path.appending(component: "D"), name: "D", targets: [dFramework])
|
let dProject = Project.test(path: path.appending(component: "D"), name: "D", targets: [dFramework])
|
||||||
let dFrameworkGraphTarget = ValueGraphTarget.test(path: dProject.path, target: dFramework, project: dProject)
|
let dFrameworkGraphTarget = GraphTarget.test(path: dProject.path, target: dFramework, project: dProject)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bFrameworkGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bFrameworkGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: C
|
// Given: C
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
||||||
let cFrameworkGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cFrameworkGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let app = Target.test(name: "App", platform: .iOS, product: .app)
|
let app = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [app])
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [app])
|
||||||
let appTargetGraphTarget = ValueGraphTarget.test(path: appProject.path, target: app, project: appProject)
|
let appTargetGraphTarget = GraphTarget.test(path: appProject.path, target: app, project: appProject)
|
||||||
|
|
||||||
let graphTargets = [bFrameworkGraphTarget, cFrameworkGraphTarget, dFrameworkGraphTarget, appTargetGraphTarget]
|
let graphTargets = [bFrameworkGraphTarget, cFrameworkGraphTarget, dFrameworkGraphTarget, appTargetGraphTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -81,11 +81,11 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given xcframeworks
|
// Given xcframeworks
|
||||||
let dXCFrameworkPath = path.appending(component: "D.xcframework")
|
let dXCFrameworkPath = path.appending(component: "D.xcframework")
|
||||||
let dXCFramework = ValueGraphDependency.testXCFramework(path: dXCFrameworkPath)
|
let dXCFramework = GraphDependency.testXCFramework(path: dXCFrameworkPath)
|
||||||
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
||||||
let bXCFramework = ValueGraphDependency.testXCFramework(path: bXCFrameworkPath)
|
let bXCFramework = GraphDependency.testXCFramework(path: bXCFrameworkPath)
|
||||||
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
||||||
let cXCFramework = ValueGraphDependency.testXCFramework(path: cXCFrameworkPath)
|
let cXCFramework = GraphDependency.testXCFramework(path: cXCFrameworkPath)
|
||||||
let xcframeworks = [
|
let xcframeworks = [
|
||||||
dFrameworkGraphTarget: dXCFrameworkPath,
|
dFrameworkGraphTarget: dXCFrameworkPath,
|
||||||
bFrameworkGraphTarget: bXCFrameworkPath,
|
bFrameworkGraphTarget: bXCFrameworkPath,
|
||||||
|
@ -103,7 +103,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
throw "Can't find .framework here"
|
throw "Can't find .framework here"
|
||||||
}
|
}
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -141,25 +141,25 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given: D
|
// Given: D
|
||||||
let dFrameworkPath = path.appending(component: "D.framework")
|
let dFrameworkPath = path.appending(component: "D.framework")
|
||||||
let dFramework = ValueGraphDependency.testFramework(path: dFrameworkPath)
|
let dFramework = GraphDependency.testFramework(path: dFrameworkPath)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: C
|
// Given: C
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
let appGraphTarget = GraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
||||||
|
|
||||||
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -178,9 +178,9 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given xcframeworks
|
// Given xcframeworks
|
||||||
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
||||||
let bXCFramework = ValueGraphDependency.testXCFramework(path: bXCFrameworkPath)
|
let bXCFramework = GraphDependency.testXCFramework(path: bXCFrameworkPath)
|
||||||
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
||||||
let cXCFramework = ValueGraphDependency.testXCFramework(path: cXCFrameworkPath)
|
let cXCFramework = GraphDependency.testXCFramework(path: cXCFrameworkPath)
|
||||||
let xcframeworks = [
|
let xcframeworks = [
|
||||||
bGraphTarget: bXCFrameworkPath,
|
bGraphTarget: bXCFrameworkPath,
|
||||||
cGraphTarget: cXCFrameworkPath,
|
cGraphTarget: cXCFrameworkPath,
|
||||||
|
@ -197,7 +197,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
throw "Can't find .framework here"
|
throw "Can't find .framework here"
|
||||||
}
|
}
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -237,29 +237,29 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given E
|
// Given E
|
||||||
let eXCFrameworkPath = path.appending(component: "E.xcframework")
|
let eXCFrameworkPath = path.appending(component: "E.xcframework")
|
||||||
let eXCFramework = ValueGraphDependency.testXCFramework(path: eXCFrameworkPath)
|
let eXCFramework = GraphDependency.testXCFramework(path: eXCFrameworkPath)
|
||||||
|
|
||||||
// Given: D
|
// Given: D
|
||||||
let dFrameworkPath = path.appending(component: "D.framework")
|
let dFrameworkPath = path.appending(component: "D.framework")
|
||||||
let dFramework = ValueGraphDependency.testFramework(path: dFrameworkPath)
|
let dFramework = GraphDependency.testFramework(path: dFrameworkPath)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: C
|
// Given: C
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
let appGraphTarget = GraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
||||||
|
|
||||||
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -279,9 +279,9 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given xcframeworks
|
// Given xcframeworks
|
||||||
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
||||||
let bXCFramework = ValueGraphDependency.testXCFramework(path: bXCFrameworkPath)
|
let bXCFramework = GraphDependency.testXCFramework(path: bXCFrameworkPath)
|
||||||
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
||||||
let cXCFramework = ValueGraphDependency.testXCFramework(path: cXCFrameworkPath)
|
let cXCFramework = GraphDependency.testXCFramework(path: cXCFrameworkPath)
|
||||||
let xcframeworks = [
|
let xcframeworks = [
|
||||||
bGraphTarget: bXCFrameworkPath,
|
bGraphTarget: bXCFrameworkPath,
|
||||||
cGraphTarget: cXCFrameworkPath,
|
cGraphTarget: cXCFrameworkPath,
|
||||||
|
@ -298,7 +298,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
throw "Can't find .framework here"
|
throw "Can't find .framework here"
|
||||||
}
|
}
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -339,32 +339,32 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given: E
|
// Given: E
|
||||||
let eXCFrameworkPath = path.appending(component: "E.xcframework")
|
let eXCFrameworkPath = path.appending(component: "E.xcframework")
|
||||||
let eXCFramework = ValueGraphDependency.testXCFramework(path: eXCFrameworkPath)
|
let eXCFramework = GraphDependency.testXCFramework(path: eXCFrameworkPath)
|
||||||
|
|
||||||
// Given: D
|
// Given: D
|
||||||
let dFrameworkPath = path.appending(component: "D.framework")
|
let dFrameworkPath = path.appending(component: "D.framework")
|
||||||
let dFramework = ValueGraphDependency.testFramework(path: dFrameworkPath)
|
let dFramework = GraphDependency.testFramework(path: dFrameworkPath)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: C
|
// Given: C
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C")
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C")
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App")
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App")
|
||||||
let appTarget = ValueGraphTarget.test(
|
let appTarget = GraphTarget.test(
|
||||||
path: appProject.path,
|
path: appProject.path,
|
||||||
target: Target.test(name: "App", platform: .iOS, product: .app),
|
target: Target.test(name: "App", platform: .iOS, product: .app),
|
||||||
project: appProject
|
project: appProject
|
||||||
)
|
)
|
||||||
|
|
||||||
let graphTargets = [bGraphTarget, cGraphTarget, appTarget]
|
let graphTargets = [bGraphTarget, cGraphTarget, appTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -383,7 +383,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given xcframeworks
|
// Given xcframeworks
|
||||||
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
||||||
let cXCFramework = ValueGraphDependency.testXCFramework(path: cXCFrameworkPath)
|
let cXCFramework = GraphDependency.testXCFramework(path: cXCFrameworkPath)
|
||||||
let xcframeworks = [
|
let xcframeworks = [
|
||||||
cGraphTarget: cXCFrameworkPath,
|
cGraphTarget: cXCFrameworkPath,
|
||||||
]
|
]
|
||||||
|
@ -398,7 +398,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
throw "Can't find .framework here"
|
throw "Can't find .framework here"
|
||||||
}
|
}
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -435,23 +435,23 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
// Given: C
|
// Given: C
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App")
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App")
|
||||||
let appGraphTarget = ValueGraphTarget.test(
|
let appGraphTarget = GraphTarget.test(
|
||||||
path: appProject.path,
|
path: appProject.path,
|
||||||
target: Target.test(name: "App", platform: .iOS, product: .app),
|
target: Target.test(name: "App", platform: .iOS, product: .app),
|
||||||
project: appProject
|
project: appProject
|
||||||
)
|
)
|
||||||
|
|
||||||
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -491,25 +491,25 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
// Given: D
|
// Given: D
|
||||||
let dFramework = Target.test(name: "D", platform: .iOS, product: .framework)
|
let dFramework = Target.test(name: "D", platform: .iOS, product: .framework)
|
||||||
let dProject = Project.test(path: path.appending(component: "D"), name: "D", targets: [dFramework])
|
let dProject = Project.test(path: path.appending(component: "D"), name: "D", targets: [dFramework])
|
||||||
let dGraphTarget = ValueGraphTarget.test(path: dProject.path, target: dFramework, project: dProject)
|
let dGraphTarget = GraphTarget.test(path: dProject.path, target: dFramework, project: dProject)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: C
|
// Given: C
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
let appGraphTarget = GraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
||||||
|
|
||||||
let graphTargets = [bGraphTarget, cGraphTarget, dGraphTarget, appGraphTarget]
|
let graphTargets = [bGraphTarget, cGraphTarget, dGraphTarget, appGraphTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -528,11 +528,11 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given xcframeworks
|
// Given xcframeworks
|
||||||
let dCachedFrameworkPath = path.appending(component: "D.framework")
|
let dCachedFrameworkPath = path.appending(component: "D.framework")
|
||||||
let dCachedFramework = ValueGraphDependency.testFramework(path: dCachedFrameworkPath)
|
let dCachedFramework = GraphDependency.testFramework(path: dCachedFrameworkPath)
|
||||||
let bCachedFrameworkPath = path.appending(component: "B.framework")
|
let bCachedFrameworkPath = path.appending(component: "B.framework")
|
||||||
let bCachedFramework = ValueGraphDependency.testFramework(path: bCachedFrameworkPath)
|
let bCachedFramework = GraphDependency.testFramework(path: bCachedFrameworkPath)
|
||||||
let cCachedFrameworkPath = path.appending(component: "C.framework")
|
let cCachedFrameworkPath = path.appending(component: "C.framework")
|
||||||
let cCachedFramework = ValueGraphDependency.testFramework(path: cCachedFrameworkPath)
|
let cCachedFramework = GraphDependency.testFramework(path: cCachedFrameworkPath)
|
||||||
let frameworks = [
|
let frameworks = [
|
||||||
dGraphTarget: dCachedFrameworkPath,
|
dGraphTarget: dCachedFrameworkPath,
|
||||||
bGraphTarget: bCachedFrameworkPath,
|
bGraphTarget: bCachedFrameworkPath,
|
||||||
|
@ -550,7 +550,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
throw "Can't find an .xcframework here"
|
throw "Can't find an .xcframework here"
|
||||||
}
|
}
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -588,25 +588,25 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given: D
|
// Given: D
|
||||||
let dFrameworkPath = path.appending(component: "D.framework")
|
let dFrameworkPath = path.appending(component: "D.framework")
|
||||||
let dFramework = ValueGraphDependency.testFramework(path: dFrameworkPath)
|
let dFramework = GraphDependency.testFramework(path: dFrameworkPath)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: C
|
// Given: C
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
let appGraphTarget = GraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
||||||
|
|
||||||
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -625,9 +625,9 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given xcframeworks
|
// Given xcframeworks
|
||||||
let bCachedFrameworkPath = path.appending(component: "B.framework")
|
let bCachedFrameworkPath = path.appending(component: "B.framework")
|
||||||
let bCachedFramework = ValueGraphDependency.testFramework(path: bCachedFrameworkPath)
|
let bCachedFramework = GraphDependency.testFramework(path: bCachedFrameworkPath)
|
||||||
let cCachedFrameworkPath = path.appending(component: "C.framework")
|
let cCachedFrameworkPath = path.appending(component: "C.framework")
|
||||||
let cCachedFramework = ValueGraphDependency.testFramework(path: cCachedFrameworkPath)
|
let cCachedFramework = GraphDependency.testFramework(path: cCachedFrameworkPath)
|
||||||
let frameworks = [
|
let frameworks = [
|
||||||
bGraphTarget: bCachedFrameworkPath,
|
bGraphTarget: bCachedFrameworkPath,
|
||||||
cGraphTarget: cCachedFrameworkPath,
|
cGraphTarget: cCachedFrameworkPath,
|
||||||
|
@ -644,7 +644,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
throw "Can't find .framework here"
|
throw "Can't find .framework here"
|
||||||
}
|
}
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -684,29 +684,29 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given E
|
// Given E
|
||||||
let eXCFrameworkPath = path.appending(component: "E.xcframework")
|
let eXCFrameworkPath = path.appending(component: "E.xcframework")
|
||||||
let eXCFramework = ValueGraphDependency.testXCFramework(path: eXCFrameworkPath)
|
let eXCFramework = GraphDependency.testXCFramework(path: eXCFrameworkPath)
|
||||||
|
|
||||||
// Given: D
|
// Given: D
|
||||||
let dFrameworkPath = path.appending(component: "D.framework")
|
let dFrameworkPath = path.appending(component: "D.framework")
|
||||||
let dFramework = ValueGraphDependency.testFramework(path: dFrameworkPath)
|
let dFramework = GraphDependency.testFramework(path: dFrameworkPath)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: C
|
// Given: C
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C", targets: [cFramework])
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
let appTarget = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App", targets: [appTarget])
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
let appGraphTarget = GraphTarget.test(path: appProject.path, target: appTarget, project: appProject)
|
||||||
|
|
||||||
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -726,9 +726,9 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given xcframeworks
|
// Given xcframeworks
|
||||||
let bCachedFrameworkPath = path.appending(component: "B.framework")
|
let bCachedFrameworkPath = path.appending(component: "B.framework")
|
||||||
let bCachedFramework = ValueGraphDependency.testFramework(path: bCachedFrameworkPath)
|
let bCachedFramework = GraphDependency.testFramework(path: bCachedFrameworkPath)
|
||||||
let cCachedFrameworkPath = path.appending(component: "C.framework")
|
let cCachedFrameworkPath = path.appending(component: "C.framework")
|
||||||
let cCachedFramework = ValueGraphDependency.testFramework(path: cCachedFrameworkPath)
|
let cCachedFramework = GraphDependency.testFramework(path: cCachedFrameworkPath)
|
||||||
let frameworks = [
|
let frameworks = [
|
||||||
bGraphTarget: bCachedFrameworkPath,
|
bGraphTarget: bCachedFrameworkPath,
|
||||||
cGraphTarget: cCachedFrameworkPath,
|
cGraphTarget: cCachedFrameworkPath,
|
||||||
|
@ -746,7 +746,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
throw "Can't find an .xcframework here"
|
throw "Can't find an .xcframework here"
|
||||||
}
|
}
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -787,28 +787,28 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given: E
|
// Given: E
|
||||||
let eXCFrameworkPath = path.appending(component: "E.xcframework")
|
let eXCFrameworkPath = path.appending(component: "E.xcframework")
|
||||||
let eXCFramework = ValueGraphDependency.testXCFramework(path: eXCFrameworkPath)
|
let eXCFramework = GraphDependency.testXCFramework(path: eXCFrameworkPath)
|
||||||
|
|
||||||
// Given: D
|
// Given: D
|
||||||
let dFrameworkPath = path.appending(component: "D.framework")
|
let dFrameworkPath = path.appending(component: "D.framework")
|
||||||
let dFramework = ValueGraphDependency.testFramework(path: dFrameworkPath)
|
let dFramework = GraphDependency.testFramework(path: dFrameworkPath)
|
||||||
|
|
||||||
// Given: B
|
// Given: B
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
let bProject = Project.test(path: path.appending(component: "B"), name: "B", targets: [bFramework])
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
let bGraphTarget = GraphTarget.test(path: bProject.path, target: bFramework, project: bProject)
|
||||||
|
|
||||||
// Given: C
|
// Given: C
|
||||||
let cProject = Project.test(path: path.appending(component: "C"), name: "C")
|
let cProject = Project.test(path: path.appending(component: "C"), name: "C")
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
let cGraphTarget = GraphTarget.test(path: cProject.path, target: cFramework, project: cProject)
|
||||||
|
|
||||||
// Given: App
|
// Given: App
|
||||||
let appProject = Project.test(path: path.appending(component: "App"), name: "App")
|
let appProject = Project.test(path: path.appending(component: "App"), name: "App")
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: appProject.path, target: Target.test(name: "App", platform: .iOS, product: .app), project: appProject)
|
let appGraphTarget = GraphTarget.test(path: appProject.path, target: Target.test(name: "App", platform: .iOS, product: .app), project: appProject)
|
||||||
|
|
||||||
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
let graphTargets = [bGraphTarget, cGraphTarget, appGraphTarget]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -827,7 +827,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given xcframeworks
|
// Given xcframeworks
|
||||||
let cCachedFrameworkPath = path.appending(component: "C.xcframework")
|
let cCachedFrameworkPath = path.appending(component: "C.xcframework")
|
||||||
let cCachedFramework = ValueGraphDependency.testFramework(path: cCachedFrameworkPath)
|
let cCachedFramework = GraphDependency.testFramework(path: cCachedFrameworkPath)
|
||||||
let frameworks = [
|
let frameworks = [
|
||||||
cGraphTarget: cCachedFrameworkPath,
|
cGraphTarget: cCachedFrameworkPath,
|
||||||
]
|
]
|
||||||
|
@ -841,7 +841,7 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
throw "Can't find an .xcframework here"
|
throw "Can't find an .xcframework here"
|
||||||
}
|
}
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
projects: graphProjects(graphTargets),
|
projects: graphProjects(graphTargets),
|
||||||
targets: self.graphTargets(graphTargets),
|
targets: self.graphTargets(graphTargets),
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -866,20 +866,20 @@ final class CacheGraphMutatorTests: TuistUnitTestCase {
|
||||||
got,
|
got,
|
||||||
expectedGraph
|
expectedGraph
|
||||||
)
|
)
|
||||||
// let app = try XCTUnwrap(got.entryNodes.first as? ValueGraphTarget)
|
// let app = try XCTUnwrap(got.entryNodes.first as? GraphTarget)
|
||||||
// let b = try XCTUnwrap(app.dependencies.compactMap { $0 as? ValueGraphTarget }.first(where: { $0.name == "B" }))
|
// let b = try XCTUnwrap(app.dependencies.compactMap { $0 as? GraphTarget }.first(where: { $0.name == "B" }))
|
||||||
// let c = try XCTUnwrap(app.dependencies.compactMap { $0 as? GraphTarget }.first(where: { $0.path == cCachedFrameworkPath }))
|
// let c = try XCTUnwrap(app.dependencies.compactMap { $0 as? GraphTarget }.first(where: { $0.path == cCachedFrameworkPath }))
|
||||||
// XCTAssertTrue(b.dependencies.contains(where: { $0.path == dFrameworkPath }))
|
// XCTAssertTrue(b.dependencies.contains(where: { $0.path == dFrameworkPath }))
|
||||||
// XCTAssertTrue(c.dependencies.contains(where: { $0.path == eXCFrameworkPath }))
|
// XCTAssertTrue(c.dependencies.contains(where: { $0.path == eXCFrameworkPath }))
|
||||||
}
|
}
|
||||||
|
|
||||||
fileprivate func graphProjects(_ targets: [ValueGraphTarget]) -> [AbsolutePath: Project] {
|
fileprivate func graphProjects(_ targets: [GraphTarget]) -> [AbsolutePath: Project] {
|
||||||
targets.reduce(into: [AbsolutePath: Project]()) { acc, target in
|
targets.reduce(into: [AbsolutePath: Project]()) { acc, target in
|
||||||
acc[target.project.path] = target.project
|
acc[target.project.path] = target.project
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fileprivate func graphTargets(_ targets: [ValueGraphTarget]) -> [AbsolutePath: [String: Target]] {
|
fileprivate func graphTargets(_ targets: [GraphTarget]) -> [AbsolutePath: [String: Target]] {
|
||||||
targets.reduce(into: [AbsolutePath: [String: Target]]()) { acc, target in
|
targets.reduce(into: [AbsolutePath: [String: Target]]()) { acc, target in
|
||||||
var targets = acc[target.path, default: [:]]
|
var targets = acc[target.path, default: [:]]
|
||||||
targets[target.target.name] = target.target
|
targets[target.target.name] = target.target
|
||||||
|
|
|
@ -23,7 +23,7 @@ final class GraphContentHasherTests: TuistUnitTestCase {
|
||||||
|
|
||||||
func test_contentHashes_emptyGraph() throws {
|
func test_contentHashes_emptyGraph() throws {
|
||||||
// Given
|
// Given
|
||||||
let graph = ValueGraph.test()
|
let graph = Graph.test()
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let hashes = try subject.contentHashes(for: graph)
|
let hashes = try subject.contentHashes(for: graph)
|
||||||
|
@ -38,7 +38,7 @@ final class GraphContentHasherTests: TuistUnitTestCase {
|
||||||
let project: Project = .test(
|
let project: Project = .test(
|
||||||
path: path
|
path: path
|
||||||
)
|
)
|
||||||
let frameworkTarget = ValueGraphTarget.test(
|
let frameworkTarget = GraphTarget.test(
|
||||||
path: path,
|
path: path,
|
||||||
target: .test(
|
target: .test(
|
||||||
name: "FrameworkA",
|
name: "FrameworkA",
|
||||||
|
@ -48,7 +48,7 @@ final class GraphContentHasherTests: TuistUnitTestCase {
|
||||||
),
|
),
|
||||||
project: .test(path: path)
|
project: .test(path: path)
|
||||||
)
|
)
|
||||||
let secondFrameworkTarget = ValueGraphTarget.test(
|
let secondFrameworkTarget = GraphTarget.test(
|
||||||
path: path,
|
path: path,
|
||||||
target: .test(
|
target: .test(
|
||||||
name: "FrameworkB",
|
name: "FrameworkB",
|
||||||
|
@ -58,7 +58,7 @@ final class GraphContentHasherTests: TuistUnitTestCase {
|
||||||
),
|
),
|
||||||
project: .test(path: path)
|
project: .test(path: path)
|
||||||
)
|
)
|
||||||
let appTarget = ValueGraphTarget.test(
|
let appTarget = GraphTarget.test(
|
||||||
path: path,
|
path: path,
|
||||||
target: .test(
|
target: .test(
|
||||||
name: "App",
|
name: "App",
|
||||||
|
@ -68,7 +68,7 @@ final class GraphContentHasherTests: TuistUnitTestCase {
|
||||||
),
|
),
|
||||||
project: .test(path: path)
|
project: .test(path: path)
|
||||||
)
|
)
|
||||||
let dynamicLibraryTarget = ValueGraphTarget.test(
|
let dynamicLibraryTarget = GraphTarget.test(
|
||||||
path: path,
|
path: path,
|
||||||
target: .test(
|
target: .test(
|
||||||
name: "DynamicLibrary",
|
name: "DynamicLibrary",
|
||||||
|
@ -78,7 +78,7 @@ final class GraphContentHasherTests: TuistUnitTestCase {
|
||||||
),
|
),
|
||||||
project: .test(path: path)
|
project: .test(path: path)
|
||||||
)
|
)
|
||||||
let staticFrameworkTarget = ValueGraphTarget.test(
|
let staticFrameworkTarget = GraphTarget.test(
|
||||||
path: path,
|
path: path,
|
||||||
target: .test(
|
target: .test(
|
||||||
name: "StaticFramework",
|
name: "StaticFramework",
|
||||||
|
@ -89,7 +89,7 @@ final class GraphContentHasherTests: TuistUnitTestCase {
|
||||||
project: .test(path: path)
|
project: .test(path: path)
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
|
@ -112,7 +112,7 @@ final class GraphContentHasherTests: TuistUnitTestCase {
|
||||||
$0.target.product == .framework
|
$0.target.product == .framework
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
let hashedTargets: [ValueGraphTarget] = hashes.keys.sorted { left, right -> Bool in
|
let hashedTargets: [GraphTarget] = hashes.keys.sorted { left, right -> Bool in
|
||||||
left.path.pathString < right.path.pathString
|
left.path.pathString < right.path.pathString
|
||||||
}
|
}
|
||||||
.sorted(by: { $0.target.name < $1.target.name })
|
.sorted(by: { $0.target.name < $1.target.name })
|
||||||
|
|
|
@ -51,20 +51,20 @@ final class CacheMapperTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given
|
// Given
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: path, target: cFramework)
|
let cGraphTarget = GraphTarget.test(path: path, target: cFramework)
|
||||||
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
let cXCFrameworkPath = path.appending(component: "C.xcframework")
|
||||||
let cHash = "C"
|
let cHash = "C"
|
||||||
|
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: path, target: bFramework)
|
let bGraphTarget = GraphTarget.test(path: path, target: bFramework)
|
||||||
let bHash = "B"
|
let bHash = "B"
|
||||||
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
||||||
|
|
||||||
let app = Target.test(name: "App", platform: .iOS, product: .app)
|
let app = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: path, target: app)
|
let appGraphTarget = GraphTarget.test(path: path, target: app)
|
||||||
let appHash = "App"
|
let appHash = "App"
|
||||||
|
|
||||||
let inputGraph = ValueGraph.test(
|
let inputGraph = Graph.test(
|
||||||
name: "input",
|
name: "input",
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -76,7 +76,7 @@ final class CacheMapperTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let outputGraph = ValueGraph.test(
|
let outputGraph = Graph.test(
|
||||||
name: "output",
|
name: "output",
|
||||||
projects: inputGraph.projects,
|
projects: inputGraph.projects,
|
||||||
dependencies: inputGraph.dependencies
|
dependencies: inputGraph.dependencies
|
||||||
|
@ -120,19 +120,19 @@ final class CacheMapperTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// Given
|
// Given
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: path, target: cFramework)
|
let cGraphTarget = GraphTarget.test(path: path, target: cFramework)
|
||||||
let cHash = "C"
|
let cHash = "C"
|
||||||
|
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: path, target: bFramework)
|
let bGraphTarget = GraphTarget.test(path: path, target: bFramework)
|
||||||
let bHash = "B"
|
let bHash = "B"
|
||||||
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
let bXCFrameworkPath = path.appending(component: "B.xcframework")
|
||||||
|
|
||||||
let app = Target.test(name: "App", platform: .iOS, product: .app)
|
let app = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: path, target: app)
|
let appGraphTarget = GraphTarget.test(path: path, target: app)
|
||||||
let appHash = "App"
|
let appHash = "App"
|
||||||
|
|
||||||
let inputGraph = ValueGraph.test(
|
let inputGraph = Graph.test(
|
||||||
name: "input",
|
name: "input",
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -144,7 +144,7 @@ final class CacheMapperTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let outputGraph = ValueGraph.test(
|
let outputGraph = Graph.test(
|
||||||
name: "output",
|
name: "output",
|
||||||
projects: inputGraph.projects,
|
projects: inputGraph.projects,
|
||||||
dependencies: inputGraph.dependencies
|
dependencies: inputGraph.dependencies
|
||||||
|
@ -194,15 +194,15 @@ final class CacheMapperTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
|
|
||||||
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
let cFramework = Target.test(name: "C", platform: .iOS, product: .framework)
|
||||||
let cGraphTarget = ValueGraphTarget.test(path: path, target: cFramework)
|
let cGraphTarget = GraphTarget.test(path: path, target: cFramework)
|
||||||
|
|
||||||
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
let bFramework = Target.test(name: "B", platform: .iOS, product: .framework)
|
||||||
let bGraphTarget = ValueGraphTarget.test(path: path, target: bFramework)
|
let bGraphTarget = GraphTarget.test(path: path, target: bFramework)
|
||||||
|
|
||||||
let app = Target.test(name: "App", platform: .iOS, product: .app)
|
let app = Target.test(name: "App", platform: .iOS, product: .app)
|
||||||
let appGraphTarget = ValueGraphTarget.test(path: path, target: app)
|
let appGraphTarget = GraphTarget.test(path: path, target: app)
|
||||||
|
|
||||||
let inputGraph = ValueGraph.test(
|
let inputGraph = Graph.test(
|
||||||
name: "input",
|
name: "input",
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
@ -214,7 +214,7 @@ final class CacheMapperTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let outputGraph = ValueGraph.test(
|
let outputGraph = Graph.test(
|
||||||
name: "output",
|
name: "output",
|
||||||
projects: inputGraph.projects,
|
projects: inputGraph.projects,
|
||||||
dependencies: inputGraph.dependencies
|
dependencies: inputGraph.dependencies
|
||||||
|
|
|
@ -25,13 +25,13 @@ final class CacheTreeShakingGraphMapperTests: TuistUnitTestCase {
|
||||||
let target = Target.test(prune: true)
|
let target = Target.test(prune: true)
|
||||||
let project = Project.test(targets: [target])
|
let project = Project.test(targets: [target])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [project.path: [target.name: target]]
|
targets: [project.path: [target.name: target]]
|
||||||
)
|
)
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [:],
|
projects: [:],
|
||||||
targets: [:]
|
targets: [:]
|
||||||
|
@ -54,7 +54,7 @@ final class CacheTreeShakingGraphMapperTests: TuistUnitTestCase {
|
||||||
let secondTarget = Target.test(name: "second", prune: true)
|
let secondTarget = Target.test(name: "second", prune: true)
|
||||||
let project = Project.test(targets: [firstTarget, secondTarget])
|
let project = Project.test(targets: [firstTarget, secondTarget])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [project.path: [firstTarget.name: firstTarget, secondTarget.name: secondTarget]],
|
targets: [project.path: [firstTarget.name: firstTarget, secondTarget.name: secondTarget]],
|
||||||
|
@ -81,7 +81,7 @@ final class CacheTreeShakingGraphMapperTests: TuistUnitTestCase {
|
||||||
]
|
]
|
||||||
let project = Project.test(path: path, targets: [target], schemes: schemes)
|
let project = Project.test(path: path, targets: [target], schemes: schemes)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [project.path: [target.name: target]],
|
targets: [project.path: [target.name: target]],
|
||||||
|
@ -115,7 +115,7 @@ final class CacheTreeShakingGraphMapperTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
|
|
||||||
// Given
|
// Given
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
|
@ -145,7 +145,7 @@ final class CacheTreeShakingGraphMapperTests: TuistUnitTestCase {
|
||||||
schemes: schemes
|
schemes: schemes
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
|
@ -178,7 +178,7 @@ final class CacheTreeShakingGraphMapperTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
let project = Project.test(path: path, targets: targets, schemes: [scheme])
|
let project = Project.test(path: path, targets: targets, schemes: [scheme])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [project.path: Dictionary(uniqueKeysWithValues: targets.map { ($0.name, $0) })]
|
targets: [project.path: Dictionary(uniqueKeysWithValues: targets.map { ($0.name, $0) })]
|
||||||
|
@ -195,7 +195,7 @@ final class CacheTreeShakingGraphMapperTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
let expectedProject = Project.test(path: path, targets: unprunedTargets, schemes: [schemeWithUnprunedTargets])
|
let expectedProject = Project.test(path: path, targets: unprunedTargets, schemes: [schemeWithUnprunedTargets])
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
path: expectedProject.path,
|
path: expectedProject.path,
|
||||||
projects: [expectedProject.path: expectedProject],
|
projects: [expectedProject.path: expectedProject],
|
||||||
targets: [expectedProject.path: Dictionary(uniqueKeysWithValues: unprunedTargets.map { ($0.name, $0) })]
|
targets: [expectedProject.path: Dictionary(uniqueKeysWithValues: unprunedTargets.map { ($0.name, $0) })]
|
||||||
|
|
|
@ -10,12 +10,12 @@ import XCTest
|
||||||
final class MockCacheGraphMutator: CacheGraphMutating {
|
final class MockCacheGraphMutator: CacheGraphMutating {
|
||||||
var invokedMap = false
|
var invokedMap = false
|
||||||
var invokedMapCount = 0
|
var invokedMapCount = 0
|
||||||
var invokedMapParameters: (graph: ValueGraph, precompiledFrameworks: [ValueGraphTarget: AbsolutePath], sources: Set<String>)?
|
var invokedMapParameters: (graph: Graph, precompiledFrameworks: [GraphTarget: AbsolutePath], sources: Set<String>)?
|
||||||
var invokedMapParametersList = [(graph: ValueGraph, precompiledFrameworks: [ValueGraphTarget: AbsolutePath], sources: Set<String>)]()
|
var invokedMapParametersList = [(graph: Graph, precompiledFrameworks: [GraphTarget: AbsolutePath], sources: Set<String>)]()
|
||||||
var stubbedMapError: Error?
|
var stubbedMapError: Error?
|
||||||
var stubbedMapResult: ValueGraph!
|
var stubbedMapResult: Graph!
|
||||||
|
|
||||||
func map(graph: ValueGraph, precompiledFrameworks: [ValueGraphTarget: AbsolutePath], sources: Set<String>) throws -> ValueGraph {
|
func map(graph: Graph, precompiledFrameworks: [GraphTarget: AbsolutePath], sources: Set<String>) throws -> Graph {
|
||||||
invokedMap = true
|
invokedMap = true
|
||||||
invokedMapCount += 1
|
invokedMapCount += 1
|
||||||
invokedMapParameters = (graph, precompiledFrameworks, sources)
|
invokedMapParameters = (graph, precompiledFrameworks, sources)
|
||||||
|
|
|
@ -8,12 +8,12 @@ public final class MockCacheTreeShakingGraphMapper: GraphMapping {
|
||||||
|
|
||||||
var invokedMapGraph = false
|
var invokedMapGraph = false
|
||||||
var invokedMapGraphCount = 0
|
var invokedMapGraphCount = 0
|
||||||
var invokedMapGraphParameters: (graph: ValueGraph, Void)?
|
var invokedMapGraphParameters: (graph: Graph, Void)?
|
||||||
var invokedMapGraphParametersList = [(graph: ValueGraph, Void)]()
|
var invokedMapGraphParametersList = [(graph: Graph, Void)]()
|
||||||
var stubbedMapGraphError: Error?
|
var stubbedMapGraphError: Error?
|
||||||
var stubbedMapGraphResult: (ValueGraph, [SideEffectDescriptor])!
|
var stubbedMapGraphResult: (Graph, [SideEffectDescriptor])!
|
||||||
|
|
||||||
public func map(graph: ValueGraph) throws -> (ValueGraph, [SideEffectDescriptor]) {
|
public func map(graph: Graph) throws -> (Graph, [SideEffectDescriptor]) {
|
||||||
invokedMapGraph = true
|
invokedMapGraph = true
|
||||||
invokedMapGraphCount += 1
|
invokedMapGraphCount += 1
|
||||||
invokedMapGraphParameters = (graph, ())
|
invokedMapGraphParameters = (graph, ())
|
||||||
|
|
|
@ -43,14 +43,14 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
// SchemeB: UnitTestsA -> FrameworkA, UnitTestsB (UnitTestsB cached)
|
// SchemeB: UnitTestsA -> FrameworkA, UnitTestsB (UnitTestsB cached)
|
||||||
func test_map_all_cached() throws {
|
func test_map_all_cached() throws {
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let frameworkA = ValueGraphTarget.test(
|
let frameworkA = GraphTarget.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
target: Target.test(
|
target: Target.test(
|
||||||
name: "FrameworkA"
|
name: "FrameworkA"
|
||||||
),
|
),
|
||||||
project: project
|
project: project
|
||||||
)
|
)
|
||||||
let unitTestsA = ValueGraphTarget.test(
|
let unitTestsA = GraphTarget.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
target: Target.test(
|
target: Target.test(
|
||||||
name: "UnitTestsA",
|
name: "UnitTestsA",
|
||||||
|
@ -60,7 +60,7 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
),
|
),
|
||||||
project: project
|
project: project
|
||||||
)
|
)
|
||||||
let unitTestsB = ValueGraphTarget.test(
|
let unitTestsB = GraphTarget.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
target: Target.test(
|
target: Target.test(
|
||||||
name: "UnitTestsB"
|
name: "UnitTestsB"
|
||||||
|
@ -125,7 +125,7 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
|
@ -146,7 +146,7 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
|
|
||||||
graphContentHasher.contentHashesStub = { graph, _, _ in
|
graphContentHasher.contentHashesStub = { graph, _, _ in
|
||||||
ValueGraphTraverser(graph: graph).allTargets().reduce(into: [:]) { acc, target in
|
GraphTraverser(graph: graph).allTargets().reduce(into: [:]) { acc, target in
|
||||||
acc[target] = target.target.name
|
acc[target] = target.target.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -158,7 +158,7 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
cacheDirectoriesProvider.testsCacheDirectory.appending(component: "UnitTestsA")
|
cacheDirectoriesProvider.testsCacheDirectory.appending(component: "UnitTestsA")
|
||||||
)
|
)
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
workspace: Workspace.test(
|
workspace: Workspace.test(
|
||||||
schemes: [
|
schemes: [
|
||||||
Scheme.test(
|
Scheme.test(
|
||||||
|
@ -251,14 +251,14 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
// SchemeA: UnitTestsA -> FrameworkA (only UnitTestsA cached)
|
// SchemeA: UnitTestsA -> FrameworkA (only UnitTestsA cached)
|
||||||
func test_map_only_tests_cached() throws {
|
func test_map_only_tests_cached() throws {
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let frameworkA = ValueGraphTarget.test(
|
let frameworkA = GraphTarget.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
target: Target.test(
|
target: Target.test(
|
||||||
name: "FrameworkA"
|
name: "FrameworkA"
|
||||||
),
|
),
|
||||||
project: project
|
project: project
|
||||||
)
|
)
|
||||||
let unitTestsA = ValueGraphTarget.test(
|
let unitTestsA = GraphTarget.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
target: Target.test(
|
target: Target.test(
|
||||||
name: "UnitTestsA",
|
name: "UnitTestsA",
|
||||||
|
@ -297,7 +297,7 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
|
@ -314,7 +314,7 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
|
|
||||||
graphContentHasher.contentHashesStub = { graph, _, _ in
|
graphContentHasher.contentHashesStub = { graph, _, _ in
|
||||||
ValueGraphTraverser(graph: graph).allTargets().reduce(into: [:]) { acc, target in
|
GraphTraverser(graph: graph).allTargets().reduce(into: [:]) { acc, target in
|
||||||
acc[target] = target.target.name
|
acc[target] = target.target.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -323,7 +323,7 @@ final class TestsCacheMapperTests: TuistUnitTestCase {
|
||||||
hashesCacheDirectory.appending(component: "UnitTestsA")
|
hashesCacheDirectory.appending(component: "UnitTestsA")
|
||||||
)
|
)
|
||||||
|
|
||||||
let expectedGraph = ValueGraph.test(
|
let expectedGraph = Graph.test(
|
||||||
workspace: Workspace.test(
|
workspace: Workspace.test(
|
||||||
schemes: [
|
schemes: [
|
||||||
Scheme.test(
|
Scheme.test(
|
||||||
|
|
|
@ -20,12 +20,12 @@ final class CacheGraphLinterTests: TuistUnitTestCase {
|
||||||
let target = Target.test(actions: [
|
let target = Target.test(actions: [
|
||||||
.init(name: "test", order: .post, script: .embedded("echo 'Hello World'")),
|
.init(name: "test", order: .post, script: .embedded("echo 'Hello World'")),
|
||||||
])
|
])
|
||||||
let graphTarget = ValueGraphTarget.test(
|
let graphTarget = GraphTarget.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
target: target,
|
target: target,
|
||||||
project: project
|
project: project
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
graphTarget.path: [graphTarget.target.name: graphTarget.target],
|
graphTarget.path: [graphTarget.target.name: graphTarget.target],
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
import Foundation
|
||||||
|
import TSCBasic
|
||||||
|
import TuistGraph
|
||||||
|
import XCTest
|
||||||
|
@testable import TuistCore
|
||||||
|
@testable import TuistSupportTesting
|
||||||
|
|
||||||
|
final class GraphDependencyTests: TuistUnitTestCase {
|
||||||
|
func test_isTarget() {
|
||||||
|
XCTAssertFalse(GraphDependency.testXCFramework().isTarget)
|
||||||
|
XCTAssertFalse(GraphDependency.testFramework().isTarget)
|
||||||
|
XCTAssertFalse(GraphDependency.testLibrary().isTarget)
|
||||||
|
XCTAssertFalse(GraphDependency.testPackageProduct().isTarget)
|
||||||
|
XCTAssertTrue(GraphDependency.testTarget().isTarget)
|
||||||
|
XCTAssertFalse(GraphDependency.testSDK().isTarget)
|
||||||
|
XCTAssertFalse(GraphDependency.testCocoapods().isTarget)
|
||||||
|
}
|
||||||
|
|
||||||
|
func test_isPrecompiled() {
|
||||||
|
XCTAssertTrue(GraphDependency.testXCFramework().isPrecompiled)
|
||||||
|
XCTAssertTrue(GraphDependency.testFramework().isPrecompiled)
|
||||||
|
XCTAssertTrue(GraphDependency.testLibrary().isPrecompiled)
|
||||||
|
XCTAssertFalse(GraphDependency.testPackageProduct().isPrecompiled)
|
||||||
|
XCTAssertFalse(GraphDependency.testTarget().isPrecompiled)
|
||||||
|
XCTAssertFalse(GraphDependency.testSDK().isPrecompiled)
|
||||||
|
XCTAssertFalse(GraphDependency.testCocoapods().isPrecompiled)
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ import XCTest
|
||||||
@testable import TuistCoreTesting
|
@testable import TuistCoreTesting
|
||||||
@testable import TuistSupportTesting
|
@testable import TuistSupportTesting
|
||||||
|
|
||||||
final class ValueGraphLoaderTests: TuistUnitTestCase {
|
final class GraphLoaderTests: TuistUnitTestCase {
|
||||||
private var stubbedFrameworks = [AbsolutePath: PrecompiledMetadata]()
|
private var stubbedFrameworks = [AbsolutePath: PrecompiledMetadata]()
|
||||||
private var stubbedLibraries = [AbsolutePath: PrecompiledMetadata]()
|
private var stubbedLibraries = [AbsolutePath: PrecompiledMetadata]()
|
||||||
private var stubbedXCFrameworks = [AbsolutePath: XCFrameworkMetadata]()
|
private var stubbedXCFrameworks = [AbsolutePath: XCFrameworkMetadata]()
|
||||||
|
@ -240,7 +240,7 @@ final class ValueGraphLoaderTests: TuistUnitTestCase {
|
||||||
])
|
])
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
let frameworkDependency: ValueGraphDependency = .framework(
|
let frameworkDependency: GraphDependency = .framework(
|
||||||
path: "/Frameworks/F.framework",
|
path: "/Frameworks/F.framework",
|
||||||
binaryPath: "/Frameworks/F.framework/F",
|
binaryPath: "/Frameworks/F.framework/F",
|
||||||
dsymPath: nil,
|
dsymPath: nil,
|
||||||
|
@ -678,8 +678,8 @@ final class ValueGraphLoaderTests: TuistUnitTestCase {
|
||||||
|
|
||||||
// MARK: - Helpers
|
// MARK: - Helpers
|
||||||
|
|
||||||
private func makeSubject() -> ValueGraphLoader {
|
private func makeSubject() -> GraphLoader {
|
||||||
ValueGraphLoader(
|
GraphLoader(
|
||||||
frameworkMetadataProvider: frameworkMetadataProvider,
|
frameworkMetadataProvider: frameworkMetadataProvider,
|
||||||
libraryMetadataProvider: libraryMetadataProvider,
|
libraryMetadataProvider: libraryMetadataProvider,
|
||||||
xcframeworkMetadataProvider: xcframeworkMetadataProvider,
|
xcframeworkMetadataProvider: xcframeworkMetadataProvider,
|
|
@ -0,0 +1,16 @@
|
||||||
|
import Foundation
|
||||||
|
import TSCBasic
|
||||||
|
import TuistGraph
|
||||||
|
import XCTest
|
||||||
|
@testable import TuistCore
|
||||||
|
@testable import TuistCoreTesting
|
||||||
|
@testable import TuistSupportTesting
|
||||||
|
|
||||||
|
final class GraphTargetTests: TuistUnitTestCase {
|
||||||
|
func test_comparable() {
|
||||||
|
XCTAssertTrue(GraphTarget.test(target: Target.test(name: "a")) < GraphTarget.test(target: Target.test(name: "b")))
|
||||||
|
XCTAssertFalse(GraphTarget.test(target: Target.test(name: "b")) < GraphTarget.test(target: Target.test(name: "a")))
|
||||||
|
XCTAssertTrue(GraphTarget.test(path: "/a", target: Target.test(name: "a")) < GraphTarget.test(path: "/b", target: Target.test(name: "a")))
|
||||||
|
XCTAssertFalse(GraphTarget.test(path: "/b", target: Target.test(name: "a")) < GraphTarget.test(path: "/a", target: Target.test(name: "a")))
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -10,8 +10,8 @@ import XCTest
|
||||||
final class AnyGraphMapperTests: TuistUnitTestCase {
|
final class AnyGraphMapperTests: TuistUnitTestCase {
|
||||||
func test_map() throws {
|
func test_map() throws {
|
||||||
// Given
|
// Given
|
||||||
let input = ValueGraph.test(name: "input")
|
let input = Graph.test(name: "input")
|
||||||
let output = ValueGraph.test(name: "output")
|
let output = Graph.test(name: "output")
|
||||||
let subject = AnyGraphMapper(mapper: { graph in
|
let subject = AnyGraphMapper(mapper: { graph in
|
||||||
XCTAssertEqual(graph.name, input.name)
|
XCTAssertEqual(graph.name, input.name)
|
||||||
return (output, [])
|
return (output, [])
|
||||||
|
@ -29,15 +29,15 @@ final class SequentialGraphMapperTests: TuistUnitTestCase {
|
||||||
func test_map() throws {
|
func test_map() throws {
|
||||||
// Given
|
// Given
|
||||||
let firstSideEffect = SideEffectDescriptor.file(.init(path: "/first"))
|
let firstSideEffect = SideEffectDescriptor.file(.init(path: "/first"))
|
||||||
let input = ValueGraph.test(name: "0")
|
let input = Graph.test(name: "0")
|
||||||
let first = AnyGraphMapper(mapper: { graph in
|
let first = AnyGraphMapper(mapper: { graph in
|
||||||
XCTAssertEqual(graph.name, "0")
|
XCTAssertEqual(graph.name, "0")
|
||||||
return (ValueGraph.test(name: "1"), [firstSideEffect])
|
return (Graph.test(name: "1"), [firstSideEffect])
|
||||||
})
|
})
|
||||||
let secondSideEffect = SideEffectDescriptor.file(.init(path: "/second"))
|
let secondSideEffect = SideEffectDescriptor.file(.init(path: "/second"))
|
||||||
let second = AnyGraphMapper(mapper: { graph in
|
let second = AnyGraphMapper(mapper: { graph in
|
||||||
XCTAssertEqual(graph.name, "1")
|
XCTAssertEqual(graph.name, "1")
|
||||||
return (ValueGraph.test(name: "2"), [secondSideEffect])
|
return (Graph.test(name: "2"), [secondSideEffect])
|
||||||
})
|
})
|
||||||
let subject = SequentialGraphMapper([first, second])
|
let subject = SequentialGraphMapper([first, second])
|
||||||
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
import Foundation
|
|
||||||
import TSCBasic
|
|
||||||
import TuistGraph
|
|
||||||
import XCTest
|
|
||||||
@testable import TuistCore
|
|
||||||
@testable import TuistSupportTesting
|
|
||||||
|
|
||||||
final class ValueGraphDependencyTests: TuistUnitTestCase {
|
|
||||||
func test_isTarget() {
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testXCFramework().isTarget)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testFramework().isTarget)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testLibrary().isTarget)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testPackageProduct().isTarget)
|
|
||||||
XCTAssertTrue(ValueGraphDependency.testTarget().isTarget)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testSDK().isTarget)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testCocoapods().isTarget)
|
|
||||||
}
|
|
||||||
|
|
||||||
func test_isPrecompiled() {
|
|
||||||
XCTAssertTrue(ValueGraphDependency.testXCFramework().isPrecompiled)
|
|
||||||
XCTAssertTrue(ValueGraphDependency.testFramework().isPrecompiled)
|
|
||||||
XCTAssertTrue(ValueGraphDependency.testLibrary().isPrecompiled)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testPackageProduct().isPrecompiled)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testTarget().isPrecompiled)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testSDK().isPrecompiled)
|
|
||||||
XCTAssertFalse(ValueGraphDependency.testCocoapods().isPrecompiled)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
import Foundation
|
|
||||||
import TSCBasic
|
|
||||||
import TuistGraph
|
|
||||||
import XCTest
|
|
||||||
@testable import TuistCore
|
|
||||||
@testable import TuistCoreTesting
|
|
||||||
@testable import TuistSupportTesting
|
|
||||||
|
|
||||||
final class ValueGraphTargetTests: TuistUnitTestCase {
|
|
||||||
func test_comparable() {
|
|
||||||
XCTAssertTrue(ValueGraphTarget.test(target: Target.test(name: "a")) < ValueGraphTarget.test(target: Target.test(name: "b")))
|
|
||||||
XCTAssertFalse(ValueGraphTarget.test(target: Target.test(name: "b")) < ValueGraphTarget.test(target: Target.test(name: "a")))
|
|
||||||
XCTAssertTrue(ValueGraphTarget.test(path: "/a", target: Target.test(name: "a")) < ValueGraphTarget.test(path: "/b", target: Target.test(name: "a")))
|
|
||||||
XCTAssertFalse(ValueGraphTarget.test(path: "/b", target: Target.test(name: "a")) < ValueGraphTarget.test(path: "/a", target: Target.test(name: "a")))
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -38,12 +38,12 @@ final class SwiftPackageManagerInteractorTests: TuistUnitTestCase {
|
||||||
targets: [target],
|
targets: [target],
|
||||||
packages: [package]
|
packages: [package]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
packages: [project.path: ["Test": package]],
|
packages: [project.path: ["Test": package]],
|
||||||
dependencies: [ValueGraphDependency.packageProduct(path: project.path, product: "Test"): Set()]
|
dependencies: [GraphDependency.packageProduct(path: project.path, product: "Test"): Set()]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
let workspacePath = temporaryPath.appending(component: "\(project.name).xcworkspace")
|
let workspacePath = temporaryPath.appending(component: "\(project.name).xcworkspace")
|
||||||
system.succeedCommand(["xcodebuild", "-resolvePackageDependencies", "-workspace", workspacePath.pathString, "-list"])
|
system.succeedCommand(["xcodebuild", "-resolvePackageDependencies", "-workspace", workspacePath.pathString, "-list"])
|
||||||
|
@ -72,12 +72,12 @@ final class SwiftPackageManagerInteractorTests: TuistUnitTestCase {
|
||||||
targets: [target],
|
targets: [target],
|
||||||
packages: [package]
|
packages: [package]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
packages: [project.path: ["Test": package]],
|
packages: [project.path: ["Test": package]],
|
||||||
dependencies: [ValueGraphDependency.packageProduct(path: project.path, product: "Test"): Set()]
|
dependencies: [GraphDependency.packageProduct(path: project.path, product: "Test"): Set()]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
let workspacePath = temporaryPath.appending(component: "\(project.name).xcworkspace")
|
let workspacePath = temporaryPath.appending(component: "\(project.name).xcworkspace")
|
||||||
system.succeedCommand(["xcodebuild", "-resolvePackageDependencies", "-scmProvider", "system", "-workspace", workspacePath.pathString, "-list"])
|
system.succeedCommand(["xcodebuild", "-resolvePackageDependencies", "-scmProvider", "system", "-workspace", workspacePath.pathString, "-list"])
|
||||||
|
@ -106,12 +106,12 @@ final class SwiftPackageManagerInteractorTests: TuistUnitTestCase {
|
||||||
package,
|
package,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
packages: [project.path: ["Test": package]],
|
packages: [project.path: ["Test": package]],
|
||||||
dependencies: [ValueGraphDependency.packageProduct(path: project.path, product: "Test"): Set()]
|
dependencies: [GraphDependency.packageProduct(path: project.path, product: "Test"): Set()]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
let workspace = Workspace.test(
|
let workspace = Workspace.test(
|
||||||
name: project.name,
|
name: project.name,
|
||||||
|
@ -149,8 +149,8 @@ final class SwiftPackageManagerInteractorTests: TuistUnitTestCase {
|
||||||
settings: .default,
|
settings: .default,
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test()
|
let graph = Graph.test()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
let workspace = Workspace.test(projects: [project.path])
|
let workspace = Workspace.test(projects: [project.path])
|
||||||
let workspacePath = temporaryPath.appending(component: workspace.name + ".xcworkspace")
|
let workspacePath = temporaryPath.appending(component: workspace.name + ".xcworkspace")
|
||||||
|
|
|
@ -38,14 +38,14 @@ final class WorkspaceGeneratorIntegrationTests: TuistTestCase {
|
||||||
targets: [Target.test(name: "Project\(index)_Target")]
|
targets: [Target.test(name: "Project\(index)_Target")]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
workspace: Workspace.test(
|
workspace: Workspace.test(
|
||||||
path: temporaryPath,
|
path: temporaryPath,
|
||||||
projects: projects.map(\.key)
|
projects: projects.map(\.key)
|
||||||
),
|
),
|
||||||
projects: projects
|
projects: projects
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When / Then
|
// When / Then
|
||||||
try (0 ..< 50).forEach { _ in
|
try (0 ..< 50).forEach { _ in
|
||||||
|
|
|
@ -244,8 +244,8 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
headers: headers
|
headers: headers
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(path: tmpDir)
|
let graph = Graph.test(path: tmpDir)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
try subject.generateBuildPhases(
|
try subject.generateBuildPhases(
|
||||||
path: tmpDir,
|
path: tmpDir,
|
||||||
|
@ -283,8 +283,8 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
sources: [SourceFile(path: "/test/file.swift", compilerFlags: nil)],
|
sources: [SourceFile(path: "/test/file.swift", compilerFlags: nil)],
|
||||||
headers: headers
|
headers: headers
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(path: tmpDir)
|
let graph = Graph.test(path: tmpDir)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
try subject.generateBuildPhases(
|
try subject.generateBuildPhases(
|
||||||
path: tmpDir,
|
path: tmpDir,
|
||||||
|
@ -321,8 +321,8 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let nativeTarget = PBXNativeTarget(name: "Test")
|
let nativeTarget = PBXNativeTarget(name: "Test")
|
||||||
let pbxproj = PBXProj()
|
let pbxproj = PBXProj()
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateResourcesBuildPhase(
|
try subject.generateResourcesBuildPhase(
|
||||||
|
@ -377,7 +377,7 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
try subject.generateResourcesBuildPhase(
|
try subject.generateResourcesBuildPhase(
|
||||||
path: "/path",
|
path: "/path",
|
||||||
target: .test(resources: files.map { .file(path: $0) }),
|
target: .test(resources: files.map { .file(path: $0) }),
|
||||||
graphTraverser: ValueGraphTraverser(graph: .test(path: path)),
|
graphTraverser: GraphTraverser(graph: .test(path: path)),
|
||||||
pbxTarget: nativeTarget,
|
pbxTarget: nativeTarget,
|
||||||
fileElements: fileElements,
|
fileElements: fileElements,
|
||||||
pbxproj: pbxproj
|
pbxproj: pbxproj
|
||||||
|
@ -442,8 +442,8 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let nativeTarget = PBXNativeTarget(name: "Test")
|
let nativeTarget = PBXNativeTarget(name: "Test")
|
||||||
|
|
||||||
let graph = ValueGraph.test(path: temporaryPath)
|
let graph = Graph.test(path: temporaryPath)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateResourcesBuildPhase(
|
try subject.generateResourcesBuildPhase(
|
||||||
|
@ -481,8 +481,8 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let nativeTarget = PBXNativeTarget(name: "Test")
|
let nativeTarget = PBXNativeTarget(name: "Test")
|
||||||
|
|
||||||
let graph = ValueGraph.test(path: temporaryPath)
|
let graph = Graph.test(path: temporaryPath)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateResourcesBuildPhase(
|
try subject.generateResourcesBuildPhase(
|
||||||
|
@ -524,19 +524,19 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
bundle2.name: bundle2,
|
bundle2.name: bundle2,
|
||||||
app.name: app,
|
app.name: app,
|
||||||
]]
|
]]
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: bundle1.name, path: project.path): Set(),
|
.target(name: bundle1.name, path: project.path): Set(),
|
||||||
.target(name: bundle2.name, path: project.path): Set(),
|
.target(name: bundle2.name, path: project.path): Set(),
|
||||||
.target(name: app.name, path: project.path): Set([.target(name: bundle1.name, path: project.path),
|
.target(name: app.name, path: project.path): Set([.target(name: bundle1.name, path: project.path),
|
||||||
.target(name: bundle2.name, path: project.path)]),
|
.target(name: bundle2.name, path: project.path)]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: targets,
|
targets: targets,
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateResourcesBuildPhase(
|
try subject.generateResourcesBuildPhase(
|
||||||
|
@ -573,17 +573,17 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
projectA.path: [bundle.name: bundle],
|
projectA.path: [bundle.name: bundle],
|
||||||
projectB.path: [app.name: app],
|
projectB.path: [app.name: app],
|
||||||
]
|
]
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: bundle.name, path: projectA.path): Set(),
|
.target(name: bundle.name, path: projectA.path): Set(),
|
||||||
.target(name: app.name, path: projectB.path): Set([.target(name: bundle.name, path: projectA.path)]),
|
.target(name: app.name, path: projectB.path): Set([.target(name: bundle.name, path: projectA.path)]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [projectA.path: projectA, projectB.path: projectB],
|
projects: [projectA.path: projectA, projectB.path: projectB],
|
||||||
targets: targets,
|
targets: targets,
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateResourcesBuildPhase(
|
try subject.generateResourcesBuildPhase(
|
||||||
|
@ -667,7 +667,7 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
app.name: app,
|
app.name: app,
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: appExtension.name, path: projectA.path): Set(),
|
.target(name: appExtension.name, path: projectA.path): Set(),
|
||||||
.target(name: stickerPackExtension.name, path: projectA.path): Set(),
|
.target(name: stickerPackExtension.name, path: projectA.path): Set(),
|
||||||
.target(name: app.name, path: projectA.path): Set([
|
.target(name: app.name, path: projectA.path): Set([
|
||||||
|
@ -675,13 +675,13 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
.target(name: stickerPackExtension.name, path: projectA.path),
|
.target(name: stickerPackExtension.name, path: projectA.path),
|
||||||
]),
|
]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [projectA.path: projectA],
|
projects: [projectA.path: projectA],
|
||||||
targets: targets,
|
targets: targets,
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateAppExtensionsBuildPhase(
|
try subject.generateAppExtensionsBuildPhase(
|
||||||
|
@ -719,16 +719,16 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
let targets: [AbsolutePath: [String: Target]] = [
|
let targets: [AbsolutePath: [String: Target]] = [
|
||||||
project.path: [app.name: app],
|
project.path: [app.name: app],
|
||||||
]
|
]
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: project.path): Set(),
|
.target(name: app.name, path: project.path): Set(),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: targets,
|
targets: targets,
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateAppExtensionsBuildPhase(
|
try subject.generateAppExtensionsBuildPhase(
|
||||||
|
@ -756,17 +756,17 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
let targets: [AbsolutePath: [String: Target]] = [
|
let targets: [AbsolutePath: [String: Target]] = [
|
||||||
project.path: [app.name: app, watchApp.name: watchApp],
|
project.path: [app.name: app, watchApp.name: watchApp],
|
||||||
]
|
]
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: watchApp.name, path: project.path): Set(),
|
.target(name: watchApp.name, path: project.path): Set(),
|
||||||
.target(name: app.name, path: project.path): Set([.target(name: watchApp.name, path: project.path)]),
|
.target(name: app.name, path: project.path): Set([.target(name: watchApp.name, path: project.path)]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: targets,
|
targets: targets,
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateEmbedWatchBuildPhase(
|
try subject.generateEmbedWatchBuildPhase(
|
||||||
|
@ -792,8 +792,8 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
// Given
|
// Given
|
||||||
system.swiftVersionStub = { "5.2" }
|
system.swiftVersionStub = { "5.2" }
|
||||||
let fileElements = ProjectFileElements([:])
|
let fileElements = ProjectFileElements([:])
|
||||||
let graph = ValueGraph.test()
|
let graph = Graph.test()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let path = AbsolutePath("/test")
|
let path = AbsolutePath("/test")
|
||||||
let pbxproj = PBXProj()
|
let pbxproj = PBXProj()
|
||||||
let pbxProject = createPbxProject(pbxproj: pbxproj)
|
let pbxProject = createPbxProject(pbxproj: pbxproj)
|
||||||
|
@ -870,17 +870,17 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
let targets: [AbsolutePath: [String: Target]] = [
|
let targets: [AbsolutePath: [String: Target]] = [
|
||||||
project.path: [app.name: app, appClip.name: appClip],
|
project.path: [app.name: app, appClip.name: appClip],
|
||||||
]
|
]
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: appClip.name, path: project.path): Set(),
|
.target(name: appClip.name, path: project.path): Set(),
|
||||||
.target(name: app.name, path: project.path): Set([.target(name: appClip.name, path: project.path)]),
|
.target(name: app.name, path: project.path): Set([.target(name: appClip.name, path: project.path)]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: targets,
|
targets: targets,
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
// When
|
// When
|
||||||
try subject.generateEmbedAppClipsBuildPhase(
|
try subject.generateEmbedAppClipsBuildPhase(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
|
@ -914,8 +914,8 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
let target = Target.test(platform: .iOS, product: .staticFramework, coreDataModels: [coreDataModel])
|
let target = Target.test(platform: .iOS, product: .staticFramework, coreDataModels: [coreDataModel])
|
||||||
let fileElements = createFileElements(for: [coreDataModel])
|
let fileElements = createFileElements(for: [coreDataModel])
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let pbxproj = PBXProj()
|
let pbxproj = PBXProj()
|
||||||
let pbxTarget = PBXNativeTarget(name: target.name)
|
let pbxTarget = PBXNativeTarget(name: target.name)
|
||||||
|
|
||||||
|
@ -956,8 +956,8 @@ final class BuildPhaseGeneratorTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
let target = Target.test(platform: .iOS, product: .bundle, coreDataModels: [coreDataModel])
|
let target = Target.test(platform: .iOS, product: .bundle, coreDataModels: [coreDataModel])
|
||||||
let fileElements = createFileElements(for: [coreDataModel])
|
let fileElements = createFileElements(for: [coreDataModel])
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let pbxproj = PBXProj()
|
let pbxproj = PBXProj()
|
||||||
let pbxTarget = PBXNativeTarget(name: target.name)
|
let pbxTarget = PBXNativeTarget(name: target.name)
|
||||||
|
|
||||||
|
|
|
@ -113,8 +113,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
let target = Target.test(
|
let target = Target.test(
|
||||||
infoPlist: .file(path: sourceRootPath.appending(component: "Info.plist"))
|
infoPlist: .file(path: sourceRootPath.appending(component: "Info.plist"))
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetConfig(
|
try subject.generateTargetConfig(
|
||||||
|
@ -235,8 +235,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
// Given
|
// Given
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let target = Target.test(deploymentTarget: .iOS("12.0", [.iphone, .ipad]))
|
let target = Target.test(deploymentTarget: .iOS("12.0", [.iphone, .ipad]))
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetConfig(
|
try subject.generateTargetConfig(
|
||||||
|
@ -268,8 +268,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
// Given
|
// Given
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let target = Target.test(deploymentTarget: .macOS("10.14.1"))
|
let target = Target.test(deploymentTarget: .macOS("10.14.1"))
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetConfig(
|
try subject.generateTargetConfig(
|
||||||
|
@ -300,8 +300,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
// Given
|
// Given
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let target = Target.test(deploymentTarget: .iOS("13.1", [.iphone, .ipad, .mac]))
|
let target = Target.test(deploymentTarget: .iOS("13.1", [.iphone, .ipad, .mac]))
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetConfig(
|
try subject.generateTargetConfig(
|
||||||
|
@ -335,8 +335,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
// Given
|
// Given
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let target = Target.test(deploymentTarget: .watchOS("6.0"))
|
let target = Target.test(deploymentTarget: .watchOS("6.0"))
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetConfig(
|
try subject.generateTargetConfig(
|
||||||
|
@ -367,8 +367,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
// Given
|
// Given
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let target = Target.test(deploymentTarget: .tvOS("14.0"))
|
let target = Target.test(deploymentTarget: .tvOS("14.0"))
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetConfig(
|
try subject.generateTargetConfig(
|
||||||
|
@ -443,8 +443,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
])
|
])
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let target = Target.test()
|
let target = Target.test()
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetConfig(
|
try subject.generateTargetConfig(
|
||||||
|
@ -471,8 +471,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
])
|
])
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let target = Target.test()
|
let target = Target.test()
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetConfig(
|
try subject.generateTargetConfig(
|
||||||
|
@ -560,8 +560,8 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
settings: .default,
|
settings: .default,
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(path: project.path)
|
let graph = Graph.test(path: project.path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
let fileElements = ProjectFileElements()
|
let fileElements = ProjectFileElements()
|
||||||
let groups = ProjectGroups.generate(project: project, pbxproj: pbxproj)
|
let groups = ProjectGroups.generate(project: project, pbxproj: pbxproj)
|
||||||
|
@ -600,14 +600,14 @@ final class ConfigGeneratorTests: TuistUnitTestCase {
|
||||||
let target = Target.test(name: "Test", platform: platform, product: uiTest ? .uiTests : .unitTests)
|
let target = Target.test(name: "Test", platform: platform, product: uiTest ? .uiTests : .unitTests)
|
||||||
let project = Project.test(path: dir, name: "Project", targets: [target])
|
let project = Project.test(path: dir, name: "Project", targets: [target])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
name: project.name,
|
name: project.name,
|
||||||
path: project.path,
|
path: project.path,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [project.path: [appTarget.name: appTarget, target.name: target]],
|
targets: [project.path: [appTarget.name: appTarget, target.name: target]],
|
||||||
dependencies: [ValueGraphDependency.target(name: target.name, path: project.path): Set([.target(name: appTarget.name, path: project.path)])]
|
dependencies: [GraphDependency.target(name: target.name, path: project.path): Set([.target(name: appTarget.name, path: project.path)])]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
_ = try subject.generateTargetConfig(
|
_ = try subject.generateTargetConfig(
|
||||||
target,
|
target,
|
||||||
|
|
|
@ -558,7 +558,7 @@ final class LinkGeneratorTests: XCTestCase {
|
||||||
let path = AbsolutePath("/path/")
|
let path = AbsolutePath("/path/")
|
||||||
let staticDependency = Target.test(name: "StaticDependency", product: .staticLibrary)
|
let staticDependency = Target.test(name: "StaticDependency", product: .staticLibrary)
|
||||||
let target = Target.test(name: "Static", product: .staticLibrary)
|
let target = Target.test(name: "Static", product: .staticLibrary)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [path: .test(path: path)],
|
projects: [path: .test(path: path)],
|
||||||
targets: [
|
targets: [
|
||||||
path: [
|
path: [
|
||||||
|
@ -572,7 +572,7 @@ final class LinkGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let fileElements = createProjectFileElements(for: [staticDependency])
|
let fileElements = createProjectFileElements(for: [staticDependency])
|
||||||
let xcodeProjElements = createXcodeprojElements()
|
let xcodeProjElements = createXcodeprojElements()
|
||||||
|
|
||||||
|
@ -605,7 +605,7 @@ final class LinkGeneratorTests: XCTestCase {
|
||||||
let path = AbsolutePath("/path/")
|
let path = AbsolutePath("/path/")
|
||||||
let staticDependency = Target.test(name: "StaticDependency", product: .staticLibrary)
|
let staticDependency = Target.test(name: "StaticDependency", product: .staticLibrary)
|
||||||
let target = Target.test(name: "Dynamic", product: .framework)
|
let target = Target.test(name: "Dynamic", product: .framework)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [path: .test(path: path)],
|
projects: [path: .test(path: path)],
|
||||||
targets: [
|
targets: [
|
||||||
path: [
|
path: [
|
||||||
|
@ -619,7 +619,7 @@ final class LinkGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let fileElements = createProjectFileElements(for: [staticDependency])
|
let fileElements = createProjectFileElements(for: [staticDependency])
|
||||||
let xcodeProjElements = createXcodeprojElements()
|
let xcodeProjElements = createXcodeprojElements()
|
||||||
|
|
||||||
|
@ -647,7 +647,7 @@ final class LinkGeneratorTests: XCTestCase {
|
||||||
let path = AbsolutePath("/path/")
|
let path = AbsolutePath("/path/")
|
||||||
let resourceBundle = Target.test(name: "ResourceBundle", product: .bundle)
|
let resourceBundle = Target.test(name: "ResourceBundle", product: .bundle)
|
||||||
let target = Target.test(name: "Target", product: .app)
|
let target = Target.test(name: "Target", product: .app)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [path: .test(path: path)],
|
projects: [path: .test(path: path)],
|
||||||
targets: [
|
targets: [
|
||||||
path: [
|
path: [
|
||||||
|
@ -663,7 +663,7 @@ final class LinkGeneratorTests: XCTestCase {
|
||||||
)
|
)
|
||||||
let fileElements = createProjectFileElements(for: [resourceBundle])
|
let fileElements = createProjectFileElements(for: [resourceBundle])
|
||||||
let xcodeProjElements = createXcodeprojElements()
|
let xcodeProjElements = createXcodeprojElements()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateCopyProductsBuildPhase(
|
try subject.generateCopyProductsBuildPhase(
|
||||||
|
|
|
@ -45,14 +45,14 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
targets: [app, test]
|
targets: [app, test]
|
||||||
)
|
)
|
||||||
|
|
||||||
let testGraphTarget = ValueGraphTarget(
|
let testGraphTarget = GraphTarget(
|
||||||
path: project.path,
|
path: project.path,
|
||||||
target: test,
|
target: test,
|
||||||
project: project
|
project: project
|
||||||
)
|
)
|
||||||
let appGraphTarget = ValueGraphTarget(path: project.path, target: app, project: project)
|
let appGraphTarget = GraphTarget(path: project.path, target: app, project: project)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -66,7 +66,7 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let generatedProject = try subject.generate(project: project, graphTraverser: graphTraverser)
|
let generatedProject = try subject.generate(project: project, graphTraverser: graphTraverser)
|
||||||
|
@ -101,8 +101,8 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
|
|
||||||
let target = Target.test()
|
let target = Target.test()
|
||||||
let graphTarget = ValueGraphTarget.test(path: project.path, target: target, project: project)
|
let graphTarget = GraphTarget.test(path: project.path, target: target, project: project)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
packages: [
|
packages: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -120,7 +120,7 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.generate(project: project, graphTraverser: graphTraverser)
|
let got = try subject.generate(project: project, graphTraverser: graphTraverser)
|
||||||
|
@ -141,10 +141,10 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
name: "Project",
|
name: "Project",
|
||||||
targets: []
|
targets: []
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project]
|
projects: [project.path: project]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.generate(project: project, graphTraverser: graphTraverser)
|
let got = try subject.generate(project: project, graphTraverser: graphTraverser)
|
||||||
|
@ -165,10 +165,10 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
name: "Project",
|
name: "Project",
|
||||||
targets: []
|
targets: []
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project]
|
projects: [project.path: project]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.generate(project: project, graphTraverser: graphTraverser)
|
let got = try subject.generate(project: project, graphTraverser: graphTraverser)
|
||||||
|
@ -182,8 +182,8 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
func test_knownRegions() throws {
|
func test_knownRegions() throws {
|
||||||
// Given
|
// Given
|
||||||
let path = try temporaryPath()
|
let path = try temporaryPath()
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let resources = [
|
let resources = [
|
||||||
"resources/en.lproj/App.strings",
|
"resources/en.lproj/App.strings",
|
||||||
"resources/en.lproj/Extension.strings",
|
"resources/en.lproj/Extension.strings",
|
||||||
|
@ -216,8 +216,8 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
func test_generate_setsDefaultKnownRegions() throws {
|
func test_generate_setsDefaultKnownRegions() throws {
|
||||||
// Given
|
// Given
|
||||||
let path = try temporaryPath()
|
let path = try temporaryPath()
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let project = Project.test(
|
let project = Project.test(
|
||||||
path: path,
|
path: path,
|
||||||
targets: []
|
targets: []
|
||||||
|
@ -237,8 +237,8 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
func test_generate_setsOrganizationName() throws {
|
func test_generate_setsOrganizationName() throws {
|
||||||
// Given
|
// Given
|
||||||
let path = try temporaryPath()
|
let path = try temporaryPath()
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let project = Project.test(
|
let project = Project.test(
|
||||||
path: path,
|
path: path,
|
||||||
organizationName: "tuist",
|
organizationName: "tuist",
|
||||||
|
@ -259,8 +259,8 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
func test_generate_setsResourcesTagsName() throws {
|
func test_generate_setsResourcesTagsName() throws {
|
||||||
// Given
|
// Given
|
||||||
let path = try temporaryPath()
|
let path = try temporaryPath()
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let resources: [ResourceFileElement] = [.file(path: "/", tags: ["fileTag", "commonTag"]),
|
let resources: [ResourceFileElement] = [.file(path: "/", tags: ["fileTag", "commonTag"]),
|
||||||
.folderReference(path: "/", tags: ["folderTag", "commonTag"])]
|
.folderReference(path: "/", tags: ["folderTag", "commonTag"])]
|
||||||
let project = Project.test(
|
let project = Project.test(
|
||||||
|
@ -282,8 +282,8 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
func test_generate_setsDefaultDevelopmentRegion() throws {
|
func test_generate_setsDefaultDevelopmentRegion() throws {
|
||||||
// Given
|
// Given
|
||||||
let path = try temporaryPath()
|
let path = try temporaryPath()
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let project = Project.test(
|
let project = Project.test(
|
||||||
path: path,
|
path: path,
|
||||||
targets: []
|
targets: []
|
||||||
|
@ -300,8 +300,8 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
func test_generate_setsDevelopmentRegion() throws {
|
func test_generate_setsDevelopmentRegion() throws {
|
||||||
// Given
|
// Given
|
||||||
let path = try temporaryPath()
|
let path = try temporaryPath()
|
||||||
let graph = ValueGraph.test(path: path)
|
let graph = Graph.test(path: path)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let project = Project.test(
|
let project = Project.test(
|
||||||
path: path,
|
path: path,
|
||||||
developmentRegion: "de",
|
developmentRegion: "de",
|
||||||
|
@ -329,8 +329,8 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
|
|
||||||
let target = Target.test()
|
let target = Target.test()
|
||||||
let graphTarget = ValueGraphTarget(path: project.path, target: target, project: project)
|
let graphTarget = GraphTarget(path: project.path, target: target, project: project)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
packages: [
|
packages: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -348,7 +348,7 @@ final class ProjectDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.generate(project: project, graphTraverser: graphTraverser)
|
let got = try subject.generate(project: project, graphTraverser: graphTraverser)
|
||||||
|
|
|
@ -449,8 +449,8 @@ final class ProjectFileElementsTests: TuistUnitTestCase {
|
||||||
.test(name: "Framework", product: .framework),
|
.test(name: "Framework", product: .framework),
|
||||||
.test(name: "Library", product: .staticLibrary),
|
.test(name: "Library", product: .staticLibrary),
|
||||||
])
|
])
|
||||||
let graph = ValueGraph.test()
|
let graph = Graph.test()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let groups = ProjectGroups.generate(project: project, pbxproj: pbxproj)
|
let groups = ProjectGroups.generate(project: project, pbxproj: pbxproj)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
|
@ -488,8 +488,8 @@ final class ProjectFileElementsTests: TuistUnitTestCase {
|
||||||
xcodeProjPath: AbsolutePath.root.appending(component: "Project.xcodeproj"),
|
xcodeProjPath: AbsolutePath.root.appending(component: "Project.xcodeproj"),
|
||||||
targets: targets
|
targets: targets
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test()
|
let graph = Graph.test()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let groups = ProjectGroups.generate(project: project, pbxproj: pbxproj)
|
let groups = ProjectGroups.generate(project: project, pbxproj: pbxproj)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
|
@ -523,8 +523,8 @@ final class ProjectFileElementsTests: TuistUnitTestCase {
|
||||||
.test(name: "App", product: .app),
|
.test(name: "App", product: .app),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test()
|
let graph = Graph.test()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let groups = ProjectGroups.generate(project: project, pbxproj: pbxproj)
|
let groups = ProjectGroups.generate(project: project, pbxproj: pbxproj)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
|
@ -802,13 +802,13 @@ final class ProjectFileElementsTests: TuistUnitTestCase {
|
||||||
targets: [target],
|
targets: [target],
|
||||||
packages: [.remote(url: "url", requirement: .branch("master"))]
|
packages: [.remote(url: "url", requirement: .branch("master"))]
|
||||||
)
|
)
|
||||||
let graphTarget: ValueGraphTarget = .test(path: project.path, target: target, project: project)
|
let graphTarget: GraphTarget = .test(path: project.path, target: target, project: project)
|
||||||
let groups = ProjectGroups.generate(
|
let groups = ProjectGroups.generate(
|
||||||
project: .test(path: .root, sourceRootPath: .root, xcodeProjPath: AbsolutePath.root.appending(component: "Project.xcodeproj")),
|
project: .test(path: .root, sourceRootPath: .root, xcodeProjPath: AbsolutePath.root.appending(component: "Project.xcodeproj")),
|
||||||
pbxproj: pbxproj
|
pbxproj: pbxproj
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
packages: [
|
packages: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -826,7 +826,7 @@ final class ProjectFileElementsTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateProjectFiles(
|
try subject.generateProjectFiles(
|
||||||
|
|
|
@ -40,7 +40,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
path: projectPath,
|
path: projectPath,
|
||||||
xcodeProjPath: xcodeProjPath
|
xcodeProjPath: xcodeProjPath
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -48,7 +48,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
let got = try subject.schemeBuildAction(
|
let got = try subject.schemeBuildAction(
|
||||||
|
@ -89,7 +89,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
path: projectPath,
|
path: projectPath,
|
||||||
xcodeProjPath: xcodeProjPath
|
xcodeProjPath: xcodeProjPath
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -97,7 +97,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeBuildAction(
|
let got = try subject.schemeBuildAction(
|
||||||
|
@ -150,7 +150,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
path: projectBPath,
|
path: projectBPath,
|
||||||
xcodeProjPath: xcodeProjBPath
|
xcodeProjPath: xcodeProjBPath
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
projectA.path: projectA,
|
projectA.path: projectA,
|
||||||
projectB.path: projectB,
|
projectB.path: projectB,
|
||||||
|
@ -164,7 +164,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
let got = try subject.schemeBuildAction(
|
let got = try subject.schemeBuildAction(
|
||||||
|
@ -219,7 +219,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
xcodeProjPath: xcodeProjPath,
|
xcodeProjPath: xcodeProjPath,
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -227,7 +227,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeBuildAction(
|
let got = try subject.schemeBuildAction(
|
||||||
|
@ -277,7 +277,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let scheme = Scheme.test(name: "AppTests", testAction: testAction)
|
let scheme = Scheme.test(name: "AppTests", testAction: testAction)
|
||||||
let generatedProjects = createGeneratedProjects(projects: [project])
|
let generatedProjects = createGeneratedProjects(projects: [project])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -291,7 +291,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeTestAction(
|
let got = try subject.schemeTestAction(
|
||||||
|
@ -331,7 +331,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let scheme = Scheme.test(name: "AppTests", testAction: testAction)
|
let scheme = Scheme.test(name: "AppTests", testAction: testAction)
|
||||||
let generatedProjects = createGeneratedProjects(projects: [project])
|
let generatedProjects = createGeneratedProjects(projects: [project])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -345,7 +345,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeTestAction(
|
let got = try subject.schemeTestAction(
|
||||||
|
@ -392,7 +392,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let scheme = Scheme.test(name: "AppTests", shared: true, buildAction: buildAction, testAction: testAction)
|
let scheme = Scheme.test(name: "AppTests", shared: true, buildAction: buildAction, testAction: testAction)
|
||||||
|
|
||||||
let project = Project.test(path: projectPath, targets: [target, testTarget])
|
let project = Project.test(path: projectPath, targets: [target, testTarget])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -406,7 +406,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeTestAction(
|
let got = try subject.schemeTestAction(
|
||||||
|
@ -430,10 +430,10 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let scheme = Scheme.test()
|
let scheme = Scheme.test()
|
||||||
let project = Project.test()
|
let project = Project.test()
|
||||||
let generatedProject = GeneratedProject.test()
|
let generatedProject = GeneratedProject.test()
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project]
|
projects: [project.path: project]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
let got = try subject.schemeTestAction(
|
let got = try subject.schemeTestAction(
|
||||||
|
@ -458,10 +458,10 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let planList = [TestPlan(path: planPath, isDefault: true)]
|
let planList = [TestPlan(path: planPath, isDefault: true)]
|
||||||
let scheme = Scheme.test(testAction: TestAction.test(testPlans: planList))
|
let scheme = Scheme.test(testAction: TestAction.test(testPlans: planList))
|
||||||
let generatedProject = GeneratedProject.test()
|
let generatedProject = GeneratedProject.test()
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project]
|
projects: [project.path: project]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
let got = try subject.schemeTestAction(
|
let got = try subject.schemeTestAction(
|
||||||
|
@ -493,7 +493,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let buildAction = BuildAction.test(targets: [TargetReference(projectPath: project.path, name: "App")])
|
let buildAction = BuildAction.test(targets: [TargetReference(projectPath: project.path, name: "App")])
|
||||||
|
|
||||||
let scheme = Scheme.test(name: "AppTests", shared: true, buildAction: buildAction, testAction: testAction)
|
let scheme = Scheme.test(name: "AppTests", shared: true, buildAction: buildAction, testAction: testAction)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -507,7 +507,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeTestAction(
|
let got = try subject.schemeTestAction(
|
||||||
|
@ -537,7 +537,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let scheme = Scheme.test(name: "AppTests", testAction: testAction)
|
let scheme = Scheme.test(name: "AppTests", testAction: testAction)
|
||||||
let generatedProjects = createGeneratedProjects(projects: [project])
|
let generatedProjects = createGeneratedProjects(projects: [project])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -552,7 +552,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeTestAction(
|
let got = try subject.schemeTestAction(
|
||||||
|
@ -590,7 +590,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let project = Project.test(path: projectPath, targets: [testTarget])
|
let project = Project.test(path: projectPath, targets: [testTarget])
|
||||||
|
|
||||||
let generatedProjects = createGeneratedProjects(projects: [project])
|
let generatedProjects = createGeneratedProjects(projects: [project])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -598,7 +598,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeTestAction(
|
let got = try subject.schemeTestAction(
|
||||||
|
@ -669,7 +669,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
||||||
targets: [app]
|
targets: [app]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -677,7 +677,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeLaunchAction(
|
let got = try subject.schemeLaunchAction(
|
||||||
|
@ -740,7 +740,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let app = Target.test(name: "App", product: .app)
|
let app = Target.test(name: "App", product: .app)
|
||||||
|
|
||||||
let project = Project.test(path: projectPath, targets: [app])
|
let project = Project.test(path: projectPath, targets: [app])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -748,7 +748,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeLaunchAction(
|
let got = try subject.schemeLaunchAction(
|
||||||
|
@ -784,7 +784,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
|
|
||||||
let scheme = Scheme.test(name: "Library", buildAction: buildAction, runAction: launchAction)
|
let scheme = Scheme.test(name: "Library", buildAction: buildAction, runAction: launchAction)
|
||||||
let project = Project.test(path: projectPath, targets: [target])
|
let project = Project.test(path: projectPath, targets: [target])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -792,7 +792,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeLaunchAction(
|
let got = try subject.schemeLaunchAction(
|
||||||
|
@ -827,7 +827,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -835,7 +835,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeLaunchAction(
|
let got = try subject.schemeLaunchAction(
|
||||||
|
@ -870,7 +870,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -878,7 +878,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeProfileAction(
|
let got = try subject.schemeProfileAction(
|
||||||
|
@ -928,7 +928,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -936,7 +936,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeProfileAction(
|
let got = try subject.schemeProfileAction(
|
||||||
|
@ -980,7 +980,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -988,7 +988,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeProfileAction(
|
let got = try subject.schemeProfileAction(
|
||||||
|
@ -1042,7 +1042,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
xcodeProjPath: projectPath.appending(component: "Project.xcodeproj"),
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -1050,7 +1050,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeProfileAction(
|
let got = try subject.schemeProfileAction(
|
||||||
|
@ -1094,7 +1094,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let scheme = Scheme.test(buildAction: buildAction, analyzeAction: analyzeAction)
|
let scheme = Scheme.test(buildAction: buildAction, analyzeAction: analyzeAction)
|
||||||
|
|
||||||
let project = Project.test(path: projectPath, targets: [target])
|
let project = Project.test(path: projectPath, targets: [target])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -1102,7 +1102,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeAnalyzeAction(
|
let got = try subject.schemeAnalyzeAction(
|
||||||
|
@ -1136,7 +1136,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let scheme = Scheme.test(buildAction: buildAction, archiveAction: archiveAction)
|
let scheme = Scheme.test(buildAction: buildAction, archiveAction: archiveAction)
|
||||||
|
|
||||||
let project = Project.test(path: projectPath, targets: [target])
|
let project = Project.test(path: projectPath, targets: [target])
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -1144,7 +1144,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = try subject.schemeArchiveAction(
|
let got = try subject.schemeArchiveAction(
|
||||||
|
@ -1170,7 +1170,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
let scheme = Scheme.test()
|
let scheme = Scheme.test()
|
||||||
let project = Project.test(targets: [app, framework, unitTests, uiTests], schemes: [scheme])
|
let project = Project.test(targets: [app, framework, unitTests, uiTests], schemes: [scheme])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -1192,7 +1192,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = try subject.generateProjectSchemes(
|
let result = try subject.generateProjectSchemes(
|
||||||
|
@ -1226,7 +1226,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -1240,7 +1240,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = try subject.generateProjectSchemes(
|
let result = try subject.generateProjectSchemes(
|
||||||
|
@ -1276,7 +1276,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
@ -1290,7 +1290,7 @@ final class SchemeDescriptorsGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = try subject.generateProjectSchemes(
|
let result = try subject.generateProjectSchemes(
|
||||||
|
|
|
@ -62,8 +62,8 @@ final class TargetGeneratorTests: XCTestCase {
|
||||||
xcodeProjPath: path.appending(component: "Test.xcodeproj"),
|
xcodeProjPath: path.appending(component: "Test.xcodeproj"),
|
||||||
targets: [target]
|
targets: [target]
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test()
|
let graph = Graph.test()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let groups = ProjectGroups.generate(
|
let groups = ProjectGroups.generate(
|
||||||
project: project,
|
project: project,
|
||||||
pbxproj: pbxproj
|
pbxproj: pbxproj
|
||||||
|
@ -113,7 +113,7 @@ final class TargetGeneratorTests: XCTestCase {
|
||||||
let targetB = Target.test(name: "TargetB")
|
let targetB = Target.test(name: "TargetB")
|
||||||
let nativeTargetA = createNativeTarget(for: targetA)
|
let nativeTargetA = createNativeTarget(for: targetA)
|
||||||
let nativeTargetB = createNativeTarget(for: targetB)
|
let nativeTargetB = createNativeTarget(for: targetB)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [path: .test(path: path)],
|
projects: [path: .test(path: path)],
|
||||||
targets: [
|
targets: [
|
||||||
path: [
|
path: [
|
||||||
|
@ -127,7 +127,7 @@ final class TargetGeneratorTests: XCTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
try subject.generateTargetDependencies(
|
try subject.generateTargetDependencies(
|
||||||
|
@ -148,8 +148,8 @@ final class TargetGeneratorTests: XCTestCase {
|
||||||
|
|
||||||
func test_generateTarget_actions() throws {
|
func test_generateTarget_actions() throws {
|
||||||
// Given
|
// Given
|
||||||
let graph = ValueGraph.test()
|
let graph = Graph.test()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let target = Target.test(
|
let target = Target.test(
|
||||||
sources: [],
|
sources: [],
|
||||||
resources: [],
|
resources: [],
|
||||||
|
|
|
@ -46,13 +46,13 @@ final class WorkspaceDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
xcWorkspacePath: temporaryPath.appending(component: "Test.xcworkspace"),
|
xcWorkspacePath: temporaryPath.appending(component: "Test.xcworkspace"),
|
||||||
additionalFiles: additionalFiles
|
additionalFiles: additionalFiles
|
||||||
)
|
)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: temporaryPath,
|
path: temporaryPath,
|
||||||
workspace: workspace
|
workspace: workspace
|
||||||
)
|
)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
let result = try subject.generate(graphTraverser: graphTraverser)
|
let result = try subject.generate(graphTraverser: graphTraverser)
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
|
@ -72,11 +72,11 @@ final class WorkspaceDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
let temporaryPath = try self.temporaryPath()
|
let temporaryPath = try self.temporaryPath()
|
||||||
try FileHandler.shared.createFolder(temporaryPath.appending(component: "\(name).xcworkspace"))
|
try FileHandler.shared.createFolder(temporaryPath.appending(component: "\(name).xcworkspace"))
|
||||||
let workspace = Workspace.test(name: name)
|
let workspace = Workspace.test(name: name)
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: temporaryPath,
|
path: temporaryPath,
|
||||||
workspace: workspace
|
workspace: workspace
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
XCTAssertNoThrow(
|
XCTAssertNoThrow(
|
||||||
|
@ -102,7 +102,7 @@ final class WorkspaceDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
projects: [project.path]
|
projects: [project.path]
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
|
@ -111,7 +111,7 @@ final class WorkspaceDescriptorGeneratorTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = try subject.generate(graphTraverser: graphTraverser)
|
let result = try subject.generate(graphTraverser: graphTraverser)
|
||||||
|
|
|
@ -137,29 +137,29 @@ final class GraphToGraphVizMapperTests: XCTestCase {
|
||||||
return graph
|
return graph
|
||||||
}
|
}
|
||||||
|
|
||||||
private func makeGivenGraph() throws -> ValueGraph {
|
private func makeGivenGraph() throws -> TuistGraph.Graph {
|
||||||
let project = Project.test(path: "/")
|
let project = Project.test(path: "/")
|
||||||
let coreProject = Project.test(path: "/Core")
|
let coreProject = Project.test(path: "/Core")
|
||||||
let framework = ValueGraphDependency.testFramework(path: AbsolutePath("/XcodeProj.framework"))
|
let framework = GraphDependency.testFramework(path: AbsolutePath("/XcodeProj.framework"))
|
||||||
let library = ValueGraphDependency.testLibrary(path: AbsolutePath("/RxSwift.a"))
|
let library = GraphDependency.testLibrary(path: AbsolutePath("/RxSwift.a"))
|
||||||
let sdk = ValueGraphDependency.testSDK(name: "CoreData.framework", status: .required, source: .developer)
|
let sdk = GraphDependency.testSDK(name: "CoreData.framework", status: .required, source: .developer)
|
||||||
|
|
||||||
let core = ValueGraphTarget.test(
|
let core = GraphTarget.test(
|
||||||
path: coreProject.path,
|
path: coreProject.path,
|
||||||
target: Target.test(name: "Core")
|
target: Target.test(name: "Core")
|
||||||
)
|
)
|
||||||
let coreDependency = ValueGraphDependency.target(name: core.target.name, path: core.path)
|
let coreDependency = GraphDependency.target(name: core.target.name, path: core.path)
|
||||||
let coreTests = ValueGraphTarget.test(
|
let coreTests = GraphTarget.test(
|
||||||
path: coreProject.path,
|
path: coreProject.path,
|
||||||
target: Target.test(
|
target: Target.test(
|
||||||
name: "CoreTests",
|
name: "CoreTests",
|
||||||
product: .unitTests
|
product: .unitTests
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
let iOSApp = ValueGraphTarget.test(target: Target.test(name: "Tuist iOS"))
|
let iOSApp = GraphTarget.test(target: Target.test(name: "Tuist iOS"))
|
||||||
let watchApp = ValueGraphTarget.test(target: Target.test(name: "Tuist watchOS"))
|
let watchApp = GraphTarget.test(target: Target.test(name: "Tuist watchOS"))
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = TuistGraph.Graph.test(
|
||||||
projects: [
|
projects: [
|
||||||
project.path: project,
|
project.path: project,
|
||||||
coreProject.path: coreProject,
|
coreProject.path: coreProject,
|
||||||
|
|
|
@ -36,11 +36,11 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let frameworkAPath = temporaryPath.appending(RelativePath("Carthage/Build/iOS/A.framework"))
|
let frameworkAPath = temporaryPath.appending(RelativePath("Carthage/Build/iOS/A.framework"))
|
||||||
let frameworkBPath = temporaryPath.appending(RelativePath("Carthage/Build/iOS/B.framework"))
|
let frameworkBPath = temporaryPath.appending(RelativePath("Carthage/Build/iOS/B.framework"))
|
||||||
try FileHandler.shared.createFolder(frameworkAPath)
|
try FileHandler.shared.createFolder(frameworkAPath)
|
||||||
let graph = ValueGraph.test(dependencies: [
|
let graph = Graph.test(dependencies: [
|
||||||
ValueGraphDependency.testFramework(path: frameworkAPath): Set(),
|
GraphDependency.testFramework(path: frameworkAPath): Set(),
|
||||||
ValueGraphDependency.testFramework(path: frameworkBPath): Set(),
|
GraphDependency.testFramework(path: frameworkBPath): Set(),
|
||||||
])
|
])
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -55,8 +55,8 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let package = Package.remote(url: "remote", requirement: .branch("master"))
|
let package = Package.remote(url: "remote", requirement: .branch("master"))
|
||||||
let versionStub = Version(10, 0, 0)
|
let versionStub = Version(10, 0, 0)
|
||||||
xcodeController.selectedVersionStub = .success(versionStub)
|
xcodeController.selectedVersionStub = .success(versionStub)
|
||||||
let graph = ValueGraph.test(packages: [path: ["package": package]])
|
let graph = Graph.test(packages: [path: ["package": package]])
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -72,8 +72,8 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let package = Package.remote(url: "remote", requirement: .branch("master"))
|
let package = Package.remote(url: "remote", requirement: .branch("master"))
|
||||||
let versionStub = Version(11, 0, 0)
|
let versionStub = Version(11, 0, 0)
|
||||||
xcodeController.selectedVersionStub = .success(versionStub)
|
xcodeController.selectedVersionStub = .success(versionStub)
|
||||||
let graph = ValueGraph.test(packages: [path: ["package": package]])
|
let graph = Graph.test(packages: [path: ["package": package]])
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -89,8 +89,8 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let package = Package.remote(url: "remote", requirement: .branch("master"))
|
let package = Package.remote(url: "remote", requirement: .branch("master"))
|
||||||
let error = NSError.test()
|
let error = NSError.test()
|
||||||
xcodeController.selectedVersionStub = .failure(error)
|
xcodeController.selectedVersionStub = .failure(error)
|
||||||
let graph = ValueGraph.test(packages: [path: ["package": package]])
|
let graph = Graph.test(packages: [path: ["package": package]])
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -114,7 +114,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
targets: [staticFrameworkA, staticFrameworkB, staticLibrary]
|
targets: [staticFrameworkA, staticFrameworkB, staticLibrary]
|
||||||
)
|
)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: path): Set([.target(name: staticFrameworkA.name, path: path),
|
.target(name: app.name, path: path): Set([.target(name: staticFrameworkA.name, path: path),
|
||||||
.target(name: staticFrameworkB.name, path: path),
|
.target(name: staticFrameworkB.name, path: path),
|
||||||
.target(name: staticLibrary.name, path: path)]),
|
.target(name: staticLibrary.name, path: path)]),
|
||||||
|
@ -123,7 +123,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
.target(name: staticLibrary.name, path: path): Set([]),
|
.target(name: staticLibrary.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [appTarget.name: appTarget,
|
targets: [path: [appTarget.name: appTarget,
|
||||||
|
@ -132,7 +132,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
staticLibrary.name: staticLibrary]],
|
staticLibrary.name: staticLibrary]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -156,7 +156,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
targets: [staticLibraryA, staticLibraryB, staticFramework]
|
targets: [staticLibraryA, staticLibraryB, staticFramework]
|
||||||
)
|
)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: path): Set([.target(name: staticLibraryA.name, path: path),
|
.target(name: app.name, path: path): Set([.target(name: staticLibraryA.name, path: path),
|
||||||
.target(name: staticLibraryB.name, path: path),
|
.target(name: staticLibraryB.name, path: path),
|
||||||
.target(name: staticFramework.name, path: path)]),
|
.target(name: staticFramework.name, path: path)]),
|
||||||
|
@ -165,7 +165,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
.target(name: staticFramework.name, path: path): Set([]),
|
.target(name: staticFramework.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [appTarget.name: appTarget,
|
targets: [path: [appTarget.name: appTarget,
|
||||||
|
@ -174,7 +174,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
staticFramework.name: staticFramework]],
|
staticFramework.name: staticFramework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -190,19 +190,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let framework = Target.empty(name: "framework", product: .framework)
|
let framework = Target.empty(name: "framework", product: .framework)
|
||||||
let project = Project.empty(path: path)
|
let project = Project.empty(path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: bundle.name, path: path): Set([]),
|
.target(name: bundle.name, path: path): Set([]),
|
||||||
.target(name: framework.name, path: path): Set([.target(name: bundle.name, path: path)]),
|
.target(name: framework.name, path: path): Set([.target(name: bundle.name, path: path)]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [bundle.name: bundle,
|
targets: [path: [bundle.name: bundle,
|
||||||
framework.name: framework]],
|
framework.name: framework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -218,19 +218,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let application = Target.empty(name: "application", product: .app)
|
let application = Target.empty(name: "application", product: .app)
|
||||||
let project = Project.empty(path: path)
|
let project = Project.empty(path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: bundle.name, path: path): Set([]),
|
.target(name: bundle.name, path: path): Set([]),
|
||||||
.target(name: application.name, path: path): Set([.target(name: bundle.name, path: path)]),
|
.target(name: application.name, path: path): Set([.target(name: bundle.name, path: path)]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [bundle.name: bundle,
|
targets: [path: [bundle.name: bundle,
|
||||||
application.name: application]],
|
application.name: application]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -247,13 +247,13 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let uiTests = Target.empty(name: "uiTests", product: .unitTests)
|
let uiTests = Target.empty(name: "uiTests", product: .unitTests)
|
||||||
let project = Project.empty(path: path)
|
let project = Project.empty(path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: bundle.name, path: path): Set([]),
|
.target(name: bundle.name, path: path): Set([]),
|
||||||
.target(name: unitTests.name, path: path): Set([.target(name: bundle.name, path: path)]),
|
.target(name: unitTests.name, path: path): Set([.target(name: bundle.name, path: path)]),
|
||||||
.target(name: uiTests.name, path: path): Set([.target(name: bundle.name, path: path)]),
|
.target(name: uiTests.name, path: path): Set([.target(name: bundle.name, path: path)]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [bundle.name: bundle,
|
targets: [path: [bundle.name: bundle,
|
||||||
|
@ -261,7 +261,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
uiTests.name: uiTests]],
|
uiTests.name: uiTests]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -278,13 +278,13 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let dynamicFramework = Target.empty(name: "DynamicFramework", product: .framework)
|
let dynamicFramework = Target.empty(name: "DynamicFramework", product: .framework)
|
||||||
let project = Project.empty(path: path)
|
let project = Project.empty(path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: staticLibrary.name, path: path): Set([.target(name: dynamicFramework.name, path: path)]),
|
.target(name: staticLibrary.name, path: path): Set([.target(name: dynamicFramework.name, path: path)]),
|
||||||
.target(name: staticFramework.name, path: path): Set([.target(name: dynamicFramework.name, path: path)]),
|
.target(name: staticFramework.name, path: path): Set([.target(name: dynamicFramework.name, path: path)]),
|
||||||
.target(name: dynamicFramework.name, path: path): Set([]),
|
.target(name: dynamicFramework.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [staticFramework.name: staticFramework,
|
targets: [path: [staticFramework.name: staticFramework,
|
||||||
|
@ -292,7 +292,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
dynamicFramework.name: dynamicFramework]],
|
dynamicFramework.name: dynamicFramework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -309,13 +309,13 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let iosStaticLibrary = Target.empty(name: "iOSStaticLibrary", platform: .iOS, product: .staticLibrary)
|
let iosStaticLibrary = Target.empty(name: "iOSStaticLibrary", platform: .iOS, product: .staticLibrary)
|
||||||
let project = Project.empty(path: path)
|
let project = Project.empty(path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: macStaticFramework.name, path: path): Set([.target(name: iosStaticFramework.name, path: path), .target(name: iosStaticLibrary.name, path: path)]),
|
.target(name: macStaticFramework.name, path: path): Set([.target(name: iosStaticFramework.name, path: path), .target(name: iosStaticLibrary.name, path: path)]),
|
||||||
.target(name: iosStaticFramework.name, path: path): Set([]),
|
.target(name: iosStaticFramework.name, path: path): Set([]),
|
||||||
.target(name: iosStaticLibrary.name, path: path): Set([]),
|
.target(name: iosStaticLibrary.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [macStaticFramework.name: macStaticFramework,
|
targets: [path: [macStaticFramework.name: macStaticFramework,
|
||||||
|
@ -323,7 +323,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
iosStaticLibrary.name: iosStaticLibrary]],
|
iosStaticLibrary.name: iosStaticLibrary]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -339,19 +339,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let watchApp = Target.empty(name: "WatchApp", platform: .watchOS, product: .watch2App)
|
let watchApp = Target.empty(name: "WatchApp", platform: .watchOS, product: .watch2App)
|
||||||
let project = Project.empty(path: path)
|
let project = Project.empty(path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: watchApp.name, path: path): Set([.target(name: watchExtension.name, path: path)]),
|
.target(name: watchApp.name, path: path): Set([.target(name: watchExtension.name, path: path)]),
|
||||||
.target(name: watchExtension.name, path: path): Set([]),
|
.target(name: watchExtension.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [watchExtension.name: watchExtension,
|
targets: [path: [watchExtension.name: watchExtension,
|
||||||
watchApp.name: watchApp]],
|
watchApp.name: watchApp]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -367,19 +367,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let watchApp = Target.empty(name: "WatchApp", platform: .watchOS, product: .watch2App)
|
let watchApp = Target.empty(name: "WatchApp", platform: .watchOS, product: .watch2App)
|
||||||
let project = Project.empty(path: path)
|
let project = Project.empty(path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: watchApp.name, path: path): Set([.target(name: invalidDependency.name, path: path)]),
|
.target(name: watchApp.name, path: path): Set([.target(name: invalidDependency.name, path: path)]),
|
||||||
.target(name: invalidDependency.name, path: path): Set([]),
|
.target(name: invalidDependency.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [invalidDependency.name: invalidDependency,
|
targets: [path: [invalidDependency.name: invalidDependency,
|
||||||
watchApp.name: watchApp]],
|
watchApp.name: watchApp]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -409,12 +409,12 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let projectCPath: AbsolutePath = "/path/to/c"
|
let projectCPath: AbsolutePath = "/path/to/c"
|
||||||
let projectC = Project.empty(path: "/path/to/c", name: "ProjectC", settings: .default)
|
let projectC = Project.empty(path: "/path/to/c", name: "ProjectC", settings: .default)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: targetA.name, path: projectAPath): Set([.target(name: targetB.name, path: projectBPath)]),
|
.target(name: targetA.name, path: projectAPath): Set([.target(name: targetB.name, path: projectBPath)]),
|
||||||
.target(name: targetB.name, path: projectBPath): Set([.target(name: targetC.name, path: projectCPath)]),
|
.target(name: targetB.name, path: projectBPath): Set([.target(name: targetC.name, path: projectCPath)]),
|
||||||
.target(name: targetC.name, path: projectCPath): Set([]),
|
.target(name: targetC.name, path: projectCPath): Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [projectAPath, projectBPath, projectCPath]),
|
workspace: Workspace.test(projects: [projectAPath, projectBPath, projectCPath]),
|
||||||
projects: [projectAPath: projectA,
|
projects: [projectAPath: projectA,
|
||||||
|
@ -425,7 +425,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
projectCPath: [targetC.name: targetC]],
|
projectCPath: [targetC.name: targetC]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -466,13 +466,13 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let projectCPath: AbsolutePath = "/path/to/c"
|
let projectCPath: AbsolutePath = "/path/to/c"
|
||||||
let projectC = Project.empty(path: projectCPath, name: "ProjectC", settings: Settings(configurations: mismatchingConfigurations))
|
let projectC = Project.empty(path: projectCPath, name: "ProjectC", settings: Settings(configurations: mismatchingConfigurations))
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: targetA.name, path: projectAPath): Set([.target(name: targetB.name, path: projectBPath)]),
|
.target(name: targetA.name, path: projectAPath): Set([.target(name: targetB.name, path: projectBPath)]),
|
||||||
.target(name: targetB.name, path: projectBPath): Set([.target(name: targetC.name, path: projectCPath)]),
|
.target(name: targetB.name, path: projectBPath): Set([.target(name: targetC.name, path: projectCPath)]),
|
||||||
.target(name: targetC.name, path: projectCPath): Set([]),
|
.target(name: targetC.name, path: projectCPath): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [projectAPath]),
|
workspace: Workspace.test(projects: [projectAPath]),
|
||||||
projects: [projectAPath: projectA,
|
projects: [projectAPath: projectA,
|
||||||
|
@ -483,7 +483,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
projectCPath: [targetC.name: targetC]],
|
projectCPath: [targetC.name: targetC]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -526,13 +526,13 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
let projectCPath: AbsolutePath = "/path/to/c"
|
let projectCPath: AbsolutePath = "/path/to/c"
|
||||||
let projectC = Project.empty(path: projectCPath, name: "ProjectC", settings: Settings(configurations: additionalConfigurations))
|
let projectC = Project.empty(path: projectCPath, name: "ProjectC", settings: Settings(configurations: additionalConfigurations))
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: targetA.name, path: projectAPath): Set([.target(name: targetB.name, path: projectBPath)]),
|
.target(name: targetA.name, path: projectAPath): Set([.target(name: targetB.name, path: projectBPath)]),
|
||||||
.target(name: targetB.name, path: projectBPath): Set([.target(name: targetC.name, path: projectCPath)]),
|
.target(name: targetB.name, path: projectBPath): Set([.target(name: targetC.name, path: projectCPath)]),
|
||||||
.target(name: targetC.name, path: projectCPath): Set([]),
|
.target(name: targetC.name, path: projectCPath): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [projectAPath, projectBPath]),
|
workspace: Workspace.test(projects: [projectAPath, projectBPath]),
|
||||||
projects: [projectAPath: projectA,
|
projects: [projectAPath: projectA,
|
||||||
|
@ -543,7 +543,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
projectCPath: [targetC.name: targetC]],
|
projectCPath: [targetC.name: targetC]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let result = subject.lint(graphTraverser: graphTraverser)
|
let result = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -574,20 +574,20 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
let project = Project.test(path: path, targets: [app, watchApp, watchExtension])
|
let project = Project.test(path: path, targets: [app, watchApp, watchExtension])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: path): Set([.target(name: watchApp.name, path: path)]),
|
.target(name: app.name, path: path): Set([.target(name: watchApp.name, path: path)]),
|
||||||
.target(name: watchApp.name, path: path): Set([.target(name: watchExtension.name, path: path)]),
|
.target(name: watchApp.name, path: path): Set([.target(name: watchExtension.name, path: path)]),
|
||||||
.target(name: watchExtension.name, path: path): Set([]),
|
.target(name: watchExtension.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app, watchApp.name: watchApp, watchExtension.name: watchExtension]],
|
targets: [path: [app.name: app, watchApp.name: watchApp, watchExtension.name: watchExtension]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -618,20 +618,20 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
let project = Project.test(targets: [app, watchApp, watchExtension])
|
let project = Project.test(targets: [app, watchApp, watchExtension])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: path): Set([.target(name: watchApp.name, path: path)]),
|
.target(name: app.name, path: path): Set([.target(name: watchApp.name, path: path)]),
|
||||||
.target(name: watchApp.name, path: path): Set([.target(name: watchExtension.name, path: path)]),
|
.target(name: watchApp.name, path: path): Set([.target(name: watchExtension.name, path: path)]),
|
||||||
.target(name: watchExtension.name, path: path): Set([]),
|
.target(name: watchExtension.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app, watchApp.name: watchApp, watchExtension.name: watchExtension]],
|
targets: [path: [app.name: app, watchApp.name: watchApp, watchExtension.name: watchExtension]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -672,19 +672,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
entitlements: entitlementsPath
|
entitlements: entitlementsPath
|
||||||
)
|
)
|
||||||
let project = Project.test(path: temporaryPath, targets: [app, appClip])
|
let project = Project.test(path: temporaryPath, targets: [app, appClip])
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: temporaryPath): Set([.target(name: appClip.name, path: temporaryPath)]),
|
.target(name: app.name, path: temporaryPath): Set([.target(name: appClip.name, path: temporaryPath)]),
|
||||||
.target(name: appClip.name, path: temporaryPath): Set([]),
|
.target(name: appClip.name, path: temporaryPath): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: temporaryPath,
|
path: temporaryPath,
|
||||||
workspace: Workspace.test(projects: [temporaryPath]),
|
workspace: Workspace.test(projects: [temporaryPath]),
|
||||||
projects: [temporaryPath: project],
|
projects: [temporaryPath: project],
|
||||||
targets: [temporaryPath: [app.name: app, appClip.name: appClip]],
|
targets: [temporaryPath: [app.name: app, appClip.name: appClip]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -717,19 +717,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
let project = Project.test(targets: [app, appClip])
|
let project = Project.test(targets: [app, appClip])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: temporaryPath): Set([.target(name: appClip.name, path: temporaryPath)]),
|
.target(name: app.name, path: temporaryPath): Set([.target(name: appClip.name, path: temporaryPath)]),
|
||||||
.target(name: appClip.name, path: temporaryPath): Set([]),
|
.target(name: appClip.name, path: temporaryPath): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: temporaryPath,
|
path: temporaryPath,
|
||||||
workspace: Workspace.test(projects: [temporaryPath]),
|
workspace: Workspace.test(projects: [temporaryPath]),
|
||||||
projects: [temporaryPath: project],
|
projects: [temporaryPath: project],
|
||||||
targets: [temporaryPath: [app.name: app, appClip.name: appClip]],
|
targets: [temporaryPath: [app.name: app, appClip.name: appClip]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -759,19 +759,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
let project = Project.test(path: path, targets: [app, appClip])
|
let project = Project.test(path: path, targets: [app, appClip])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: path): Set([.target(name: appClip.name, path: path)]),
|
.target(name: app.name, path: path): Set([.target(name: appClip.name, path: path)]),
|
||||||
.target(name: appClip.name, path: path): Set([]),
|
.target(name: appClip.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app, appClip.name: appClip]],
|
targets: [path: [app.name: app, appClip.name: appClip]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -802,19 +802,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
)
|
)
|
||||||
let project = Project.test(path: path, targets: [app, appClip])
|
let project = Project.test(path: path, targets: [app, appClip])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: path): Set([.target(name: appClip.name, path: path)]),
|
.target(name: app.name, path: path): Set([.target(name: appClip.name, path: path)]),
|
||||||
.target(name: appClip.name, path: path): Set([]),
|
.target(name: appClip.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app, appClip.name: appClip]],
|
targets: [path: [app.name: app, appClip.name: appClip]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -861,20 +861,20 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let project = Project.test(path: temporaryPath, targets: [app, appClip1, appClip2])
|
let project = Project.test(path: temporaryPath, targets: [app, appClip1, appClip2])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: temporaryPath): Set([.target(name: appClip1.name, path: temporaryPath), .target(name: appClip2.name, path: temporaryPath)]),
|
.target(name: app.name, path: temporaryPath): Set([.target(name: appClip1.name, path: temporaryPath), .target(name: appClip2.name, path: temporaryPath)]),
|
||||||
.target(name: appClip1.name, path: temporaryPath): Set([]),
|
.target(name: appClip1.name, path: temporaryPath): Set([]),
|
||||||
.target(name: appClip2.name, path: temporaryPath): Set([]),
|
.target(name: appClip2.name, path: temporaryPath): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: temporaryPath,
|
path: temporaryPath,
|
||||||
workspace: Workspace.test(projects: [temporaryPath]),
|
workspace: Workspace.test(projects: [temporaryPath]),
|
||||||
projects: [temporaryPath: project],
|
projects: [temporaryPath: project],
|
||||||
targets: [temporaryPath: [app.name: app, appClip1.name: appClip1, appClip2.name: appClip2]],
|
targets: [temporaryPath: [app.name: app, appClip1.name: appClip1, appClip2.name: appClip2]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -915,19 +915,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let project = Project.test(path: temporaryPath, targets: [app, appClip, framework])
|
let project = Project.test(path: temporaryPath, targets: [app, appClip, framework])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: temporaryPath): Set([.target(name: appClip.name, path: temporaryPath)]),
|
.target(name: app.name, path: temporaryPath): Set([.target(name: appClip.name, path: temporaryPath)]),
|
||||||
.target(name: appClip.name, path: temporaryPath): Set([.target(name: framework.name, path: temporaryPath)]),
|
.target(name: appClip.name, path: temporaryPath): Set([.target(name: framework.name, path: temporaryPath)]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: temporaryPath,
|
path: temporaryPath,
|
||||||
workspace: Workspace.test(projects: [temporaryPath]),
|
workspace: Workspace.test(projects: [temporaryPath]),
|
||||||
projects: [temporaryPath: project],
|
projects: [temporaryPath: project],
|
||||||
targets: [temporaryPath: [app.name: app, appClip.name: appClip, framework.name: framework]],
|
targets: [temporaryPath: [app.name: app, appClip.name: appClip, framework.name: framework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -954,19 +954,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let project = Project.test(path: path, targets: [tool, dynamic])
|
let project = Project.test(path: path, targets: [tool, dynamic])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: tool.name, path: path): Set([.target(name: dynamic.name, path: path)]),
|
.target(name: tool.name, path: path): Set([.target(name: dynamic.name, path: path)]),
|
||||||
.target(name: dynamic.name, path: path): Set([]),
|
.target(name: dynamic.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [tool.name: tool, dynamic.name: dynamic]],
|
targets: [path: [tool.name: tool, dynamic.name: dynamic]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -998,19 +998,19 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let project = Project.test(path: path, targets: [tool, dynamic])
|
let project = Project.test(path: path, targets: [tool, dynamic])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: tool.name, path: path): Set([.target(name: dynamic.name, path: path)]),
|
.target(name: tool.name, path: path): Set([.target(name: dynamic.name, path: path)]),
|
||||||
.target(name: dynamic.name, path: path): Set([]),
|
.target(name: dynamic.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [tool.name: tool, dynamic.name: dynamic]],
|
targets: [path: [tool.name: tool, dynamic.name: dynamic]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -1044,20 +1044,20 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let project = Project.test(path: path, targets: [tool, staticLib, staticFmwk])
|
let project = Project.test(path: path, targets: [tool, staticLib, staticFmwk])
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: tool.name, path: path): Set([.target(name: staticLib.name, path: path), .target(name: staticFmwk.name, path: path)]),
|
.target(name: tool.name, path: path): Set([.target(name: staticLib.name, path: path), .target(name: staticFmwk.name, path: path)]),
|
||||||
.target(name: staticLib.name, path: path): Set([]),
|
.target(name: staticLib.name, path: path): Set([]),
|
||||||
.target(name: staticFmwk.name, path: path): Set([]),
|
.target(name: staticFmwk.name, path: path): Set([]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [tool.name: tool, staticFmwk.name: staticFmwk, staticLib.name: staticLib]],
|
targets: [path: [tool.name: tool, staticFmwk.name: staticFmwk, staticLib.name: staticLib]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -1080,14 +1080,14 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
targets: [frameworkA, frameworkB]
|
targets: [frameworkA, frameworkB]
|
||||||
)
|
)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: path): Set([.target(name: frameworkA.name, path: frameworks1.path),
|
.target(name: app.name, path: path): Set([.target(name: frameworkA.name, path: frameworks1.path),
|
||||||
.target(name: frameworkB.name, path: frameworks1.path)]),
|
.target(name: frameworkB.name, path: frameworks1.path)]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let project = Project.test(path: path, targets: [appTarget, frameworkA, frameworkB])
|
let project = Project.test(path: path, targets: [appTarget, frameworkA, frameworkB])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
|
@ -1095,7 +1095,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
frameworks1.path: [frameworkA.name: frameworkA, frameworkB.name: frameworkB]],
|
frameworks1.path: [frameworkA.name: frameworkA, frameworkB.name: frameworkB]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -1132,7 +1132,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
targets: [frameworkE, frameworkF]
|
targets: [frameworkE, frameworkF]
|
||||||
)
|
)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
.target(name: app.name, path: path): Set([.target(name: frameworkA.name, path: frameworks1.path),
|
.target(name: app.name, path: path): Set([.target(name: frameworkA.name, path: frameworks1.path),
|
||||||
.target(name: frameworkB.name, path: frameworks1.path),
|
.target(name: frameworkB.name, path: frameworks1.path),
|
||||||
.target(name: frameworkC.name, path: frameworks2.path),
|
.target(name: frameworkC.name, path: frameworks2.path),
|
||||||
|
@ -1143,7 +1143,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
|
|
||||||
let project = Project.test(path: path, targets: [appTarget, frameworkA, frameworkB, frameworkC, frameworkD, frameworkE, frameworkF])
|
let project = Project.test(path: path, targets: [appTarget, frameworkA, frameworkB, frameworkC, frameworkD, frameworkE, frameworkF])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [path]),
|
workspace: Workspace.test(projects: [path]),
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
|
@ -1153,7 +1153,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
frameworks3.path: [frameworkE.name: frameworkE, frameworkF.name: frameworkF]],
|
frameworks3.path: [frameworkE.name: frameworkE, frameworkF.name: frameworkF]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -1182,7 +1182,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
targets: [appTarget, frameworkA, frameworkB, frameworkC, frameworkD, frameworkE, frameworkF]
|
targets: [appTarget, frameworkA, frameworkB, frameworkC, frameworkD, frameworkE, frameworkF]
|
||||||
)
|
)
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
workspace: Workspace.test(projects: [project.path]),
|
workspace: Workspace.test(projects: [project.path]),
|
||||||
projects: [
|
projects: [
|
||||||
|
@ -1201,7 +1201,7 @@ final class GraphLinterTests: TuistUnitTestCase {
|
||||||
],
|
],
|
||||||
dependencies: [:]
|
dependencies: [:]
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let got = subject.lint(graphTraverser: graphTraverser)
|
let got = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
|
|
@ -29,15 +29,15 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let framework = Target.test(name: "Framework", product: .framework)
|
let framework = Target.test(name: "Framework", product: .framework)
|
||||||
let project = Project.test(path: "/tmp/app", name: "AppProject")
|
let project = Project.test(path: "/tmp/app", name: "AppProject")
|
||||||
let package = Package.remote(url: "https://test.tuist.io", requirement: .branch("main"))
|
let package = Package.remote(url: "https://test.tuist.io", requirement: .branch("main"))
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let frameworkDependency = ValueGraphDependency.target(name: framework.name, path: path)
|
let frameworkDependency = GraphDependency.target(name: framework.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkDependency, .packageProduct(path: path, product: "Package")]),
|
appDependency: Set([frameworkDependency, .packageProduct(path: path, product: "Package")]),
|
||||||
frameworkDependency: Set([.packageProduct(path: path, product: "Package")]),
|
frameworkDependency: Set([.packageProduct(path: path, product: "Package")]),
|
||||||
.packageProduct(path: path, product: "Package"): Set(),
|
.packageProduct(path: path, product: "Package"): Set(),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
packages: [path: ["Package": package]],
|
packages: [path: ["Package": package]],
|
||||||
|
@ -45,7 +45,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
framework.name: framework]],
|
framework.name: framework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -62,23 +62,23 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let app = Target.test(name: "App")
|
let app = Target.test(name: "App")
|
||||||
let framework = Target.test(name: "Framework", product: .framework)
|
let framework = Target.test(name: "Framework", product: .framework)
|
||||||
let project = Project.test(targets: [app, framework])
|
let project = Project.test(targets: [app, framework])
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let frameworkDependency = ValueGraphDependency.target(name: framework.name, path: path)
|
let frameworkDependency = GraphDependency.target(name: framework.name, path: path)
|
||||||
let libraryDependency = ValueGraphDependency.testLibrary(path: "/path/to/library", publicHeaders: "/path/to/library/include", linking: .static)
|
let libraryDependency = GraphDependency.testLibrary(path: "/path/to/library", publicHeaders: "/path/to/library/include", linking: .static)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkDependency, libraryDependency]),
|
appDependency: Set([frameworkDependency, libraryDependency]),
|
||||||
frameworkDependency: Set([libraryDependency]),
|
frameworkDependency: Set([libraryDependency]),
|
||||||
libraryDependency: Set(),
|
libraryDependency: Set(),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
framework.name: framework]],
|
framework.name: framework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -97,16 +97,16 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let framework = Target.test(name: "Framework", product: .framework)
|
let framework = Target.test(name: "Framework", product: .framework)
|
||||||
let project = Project.test(targets: [app, framework, staticFramework])
|
let project = Project.test(targets: [app, framework, staticFramework])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
let frameworkDependency = ValueGraphDependency.target(name: framework.name, path: path)
|
let frameworkDependency = GraphDependency.target(name: framework.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([staticFrameworkDependency, frameworkDependency]),
|
appDependency: Set([staticFrameworkDependency, frameworkDependency]),
|
||||||
frameworkDependency: Set([staticFrameworkDependency]),
|
frameworkDependency: Set([staticFrameworkDependency]),
|
||||||
staticFrameworkDependency: Set(),
|
staticFrameworkDependency: Set(),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -114,7 +114,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFramework.name: staticFramework]],
|
staticFramework.name: staticFramework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -137,15 +137,15 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let frameworkC = Target.test(name: "FrameworkC", product: .framework)
|
let frameworkC = Target.test(name: "FrameworkC", product: .framework)
|
||||||
let project = Project.test(targets: [app, staticFrameworkA, staticFrameworkB, staticFrameworkC, frameworkA, frameworkB, frameworkC])
|
let project = Project.test(targets: [app, staticFrameworkA, staticFrameworkB, staticFrameworkC, frameworkA, frameworkB, frameworkC])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let staticFrameworkAdependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkAdependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
let staticFrameworkBdependency = ValueGraphDependency.target(name: staticFrameworkB.name, path: path)
|
let staticFrameworkBdependency = GraphDependency.target(name: staticFrameworkB.name, path: path)
|
||||||
let staticFrameworkCdependency = ValueGraphDependency.target(name: staticFrameworkC.name, path: path)
|
let staticFrameworkCdependency = GraphDependency.target(name: staticFrameworkC.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let frameworkBDependency = ValueGraphDependency.target(name: frameworkB.name, path: path)
|
let frameworkBDependency = GraphDependency.target(name: frameworkB.name, path: path)
|
||||||
let frameworkCDependency = ValueGraphDependency.target(name: frameworkC.name, path: path)
|
let frameworkCDependency = GraphDependency.target(name: frameworkC.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([staticFrameworkCdependency, frameworkADependency]),
|
appDependency: Set([staticFrameworkCdependency, frameworkADependency]),
|
||||||
frameworkADependency: Set([frameworkBDependency]),
|
frameworkADependency: Set([frameworkBDependency]),
|
||||||
frameworkBDependency: Set([frameworkCDependency]),
|
frameworkBDependency: Set([frameworkCDependency]),
|
||||||
|
@ -154,7 +154,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkBdependency: Set([staticFrameworkCdependency]),
|
staticFrameworkBdependency: Set([staticFrameworkCdependency]),
|
||||||
staticFrameworkCdependency: Set([]),
|
staticFrameworkCdependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -166,7 +166,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
frameworkC.name: frameworkC]],
|
frameworkC.name: frameworkC]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -189,15 +189,15 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let frameworkC = Target.test(name: "FrameworkC", product: .framework)
|
let frameworkC = Target.test(name: "FrameworkC", product: .framework)
|
||||||
let project = Project.test(targets: [app, staticFrameworkA, staticFrameworkB, staticFrameworkC, frameworkA, frameworkB, frameworkC])
|
let project = Project.test(targets: [app, staticFrameworkA, staticFrameworkB, staticFrameworkC, frameworkA, frameworkB, frameworkC])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let staticFrameworkAdependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkAdependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
let staticFrameworkBdependency = ValueGraphDependency.target(name: staticFrameworkB.name, path: path)
|
let staticFrameworkBdependency = GraphDependency.target(name: staticFrameworkB.name, path: path)
|
||||||
let staticFrameworkCdependency = ValueGraphDependency.target(name: staticFrameworkC.name, path: path)
|
let staticFrameworkCdependency = GraphDependency.target(name: staticFrameworkC.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let frameworkBDependency = ValueGraphDependency.target(name: frameworkB.name, path: path)
|
let frameworkBDependency = GraphDependency.target(name: frameworkB.name, path: path)
|
||||||
let frameworkCDependency = ValueGraphDependency.target(name: frameworkC.name, path: path)
|
let frameworkCDependency = GraphDependency.target(name: frameworkC.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([staticFrameworkCdependency, frameworkADependency]),
|
appDependency: Set([staticFrameworkCdependency, frameworkADependency]),
|
||||||
frameworkADependency: Set([frameworkBDependency, frameworkCDependency]),
|
frameworkADependency: Set([frameworkBDependency, frameworkCDependency]),
|
||||||
frameworkBDependency: Set([frameworkCDependency]),
|
frameworkBDependency: Set([frameworkCDependency]),
|
||||||
|
@ -206,7 +206,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkBdependency: Set([staticFrameworkCdependency]),
|
staticFrameworkBdependency: Set([staticFrameworkCdependency]),
|
||||||
staticFrameworkCdependency: Set([]),
|
staticFrameworkCdependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -218,7 +218,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
frameworkC.name: frameworkC]],
|
frameworkC.name: frameworkC]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -240,14 +240,14 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let frameworkD = Target.test(name: "FrameworkD", product: .framework)
|
let frameworkD = Target.test(name: "FrameworkD", product: .framework)
|
||||||
let project = Project.test(targets: [app, frameworkA, frameworkB, frameworkC, staticFrameworkA])
|
let project = Project.test(targets: [app, frameworkA, frameworkB, frameworkC, staticFrameworkA])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let staticFrameworkAdependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkAdependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let frameworkBDependency = ValueGraphDependency.target(name: frameworkB.name, path: path)
|
let frameworkBDependency = GraphDependency.target(name: frameworkB.name, path: path)
|
||||||
let frameworkCDependency = ValueGraphDependency.target(name: frameworkC.name, path: path)
|
let frameworkCDependency = GraphDependency.target(name: frameworkC.name, path: path)
|
||||||
let frameworkDDependency = ValueGraphDependency.target(name: frameworkD.name, path: path)
|
let frameworkDDependency = GraphDependency.target(name: frameworkD.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkADependency, staticFrameworkAdependency]),
|
appDependency: Set([frameworkADependency, staticFrameworkAdependency]),
|
||||||
frameworkADependency: Set([frameworkBDependency, frameworkCDependency]),
|
frameworkADependency: Set([frameworkBDependency, frameworkCDependency]),
|
||||||
frameworkBDependency: Set([frameworkCDependency]),
|
frameworkBDependency: Set([frameworkCDependency]),
|
||||||
|
@ -255,7 +255,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkAdependency: Set([]),
|
staticFrameworkAdependency: Set([]),
|
||||||
frameworkDDependency: Set([frameworkCDependency, staticFrameworkAdependency]),
|
frameworkDDependency: Set([frameworkCDependency, staticFrameworkAdependency]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -266,7 +266,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
frameworkD.name: frameworkD]],
|
frameworkD.name: frameworkD]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -286,16 +286,16 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let framework = Target.test(name: "Framework", product: .framework)
|
let framework = Target.test(name: "Framework", product: .framework)
|
||||||
let project = Project.test(targets: [app, staticFramework, framework])
|
let project = Project.test(targets: [app, staticFramework, framework])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
let frameworkDependency = ValueGraphDependency.target(name: framework.name, path: path)
|
let frameworkDependency = GraphDependency.target(name: framework.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([staticFrameworkDependency, frameworkDependency]),
|
appDependency: Set([staticFrameworkDependency, frameworkDependency]),
|
||||||
frameworkDependency: Set([staticFrameworkDependency]),
|
frameworkDependency: Set([staticFrameworkDependency]),
|
||||||
staticFrameworkDependency: Set([]),
|
staticFrameworkDependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -303,7 +303,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
framework.name: framework]],
|
framework.name: framework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -324,15 +324,15 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let frameworkC = Target.test(name: "FrameworkC", product: .framework)
|
let frameworkC = Target.test(name: "FrameworkC", product: .framework)
|
||||||
let project = Project.test(targets: [app, frameworkA, frameworkB, frameworkC, staticFrameworkA, staticFrameworkB, staticFrameworkC])
|
let project = Project.test(targets: [app, frameworkA, frameworkB, frameworkC, staticFrameworkA, staticFrameworkB, staticFrameworkC])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let frameworkBDependency = ValueGraphDependency.target(name: frameworkB.name, path: path)
|
let frameworkBDependency = GraphDependency.target(name: frameworkB.name, path: path)
|
||||||
let frameworkCDependency = ValueGraphDependency.target(name: frameworkC.name, path: path)
|
let frameworkCDependency = GraphDependency.target(name: frameworkC.name, path: path)
|
||||||
let staticFrameworkAdependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkAdependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
let staticFrameworkBdependency = ValueGraphDependency.target(name: staticFrameworkB.name, path: path)
|
let staticFrameworkBdependency = GraphDependency.target(name: staticFrameworkB.name, path: path)
|
||||||
let staticFrameworkCdependency = ValueGraphDependency.target(name: staticFrameworkC.name, path: path)
|
let staticFrameworkCdependency = GraphDependency.target(name: staticFrameworkC.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([staticFrameworkBdependency, staticFrameworkAdependency, frameworkADependency]),
|
appDependency: Set([staticFrameworkBdependency, staticFrameworkAdependency, frameworkADependency]),
|
||||||
frameworkADependency: Set([frameworkBDependency]),
|
frameworkADependency: Set([frameworkBDependency]),
|
||||||
frameworkBDependency: Set([frameworkCDependency]),
|
frameworkBDependency: Set([frameworkCDependency]),
|
||||||
|
@ -341,7 +341,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkBdependency: Set([staticFrameworkCdependency]),
|
staticFrameworkBdependency: Set([staticFrameworkCdependency]),
|
||||||
staticFrameworkCdependency: Set([]),
|
staticFrameworkCdependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -353,7 +353,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkC.name: staticFrameworkC]],
|
staticFrameworkC.name: staticFrameworkC]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -370,16 +370,16 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let frameworkTests = Target.test(name: "FrameworkTests", product: .unitTests)
|
let frameworkTests = Target.test(name: "FrameworkTests", product: .unitTests)
|
||||||
let project = Project.test(targets: [app, staticFramework, frameworkTests])
|
let project = Project.test(targets: [app, staticFramework, frameworkTests])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
let frameworkTestsDependency = ValueGraphDependency.target(name: frameworkTests.name, path: path)
|
let frameworkTestsDependency = GraphDependency.target(name: frameworkTests.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([staticFrameworkDependency]),
|
appDependency: Set([staticFrameworkDependency]),
|
||||||
staticFrameworkDependency: Set([]),
|
staticFrameworkDependency: Set([]),
|
||||||
frameworkTestsDependency: Set([staticFrameworkDependency]),
|
frameworkTestsDependency: Set([staticFrameworkDependency]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -387,7 +387,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
frameworkTests.name: frameworkTests]],
|
frameworkTests.name: frameworkTests]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -405,18 +405,18 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let frameworkTests = Target.test(name: "FrameworkTests", product: .unitTests)
|
let frameworkTests = Target.test(name: "FrameworkTests", product: .unitTests)
|
||||||
let project = Project.test(targets: [app, staticFramework, frameworkTests])
|
let project = Project.test(targets: [app, staticFramework, frameworkTests])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let frameworkDependency = ValueGraphDependency.target(name: framework.name, path: path)
|
let frameworkDependency = GraphDependency.target(name: framework.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
let frameworkTestsDependency = ValueGraphDependency.target(name: frameworkTests.name, path: path)
|
let frameworkTestsDependency = GraphDependency.target(name: frameworkTests.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([]),
|
appDependency: Set([]),
|
||||||
frameworkDependency: Set([staticFrameworkDependency]),
|
frameworkDependency: Set([staticFrameworkDependency]),
|
||||||
staticFrameworkDependency: Set([]),
|
staticFrameworkDependency: Set([]),
|
||||||
frameworkTestsDependency: Set([frameworkDependency, staticFrameworkDependency]),
|
frameworkTestsDependency: Set([frameworkDependency, staticFrameworkDependency]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -425,7 +425,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
frameworkTests.name: frameworkTests]],
|
frameworkTests.name: frameworkTests]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -444,16 +444,16 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
||||||
let project = Project.test(targets: [app, appTestsTarget, staticFramework])
|
let project = Project.test(targets: [app, appTestsTarget, staticFramework])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appTestsDependency = ValueGraphDependency.target(name: appTestsTarget.name, path: path)
|
let appTestsDependency = GraphDependency.target(name: appTestsTarget.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([staticFrameworkDependency]),
|
appDependency: Set([staticFrameworkDependency]),
|
||||||
appTestsDependency: Set([staticFrameworkDependency, appDependency]),
|
appTestsDependency: Set([staticFrameworkDependency, appDependency]),
|
||||||
staticFrameworkDependency: Set([]),
|
staticFrameworkDependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -461,7 +461,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFramework.name: staticFramework]],
|
staticFramework.name: staticFramework]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -494,22 +494,22 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkA, staticFrameworkB, staticFrameworkC,
|
staticFrameworkA, staticFrameworkB, staticFrameworkC,
|
||||||
staticFrameworkATests, staticFrameworkBTests, staticFrameworkCTests])
|
staticFrameworkATests, staticFrameworkBTests, staticFrameworkCTests])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appTestsDependency = ValueGraphDependency.target(name: appTests.name, path: path)
|
let appTestsDependency = GraphDependency.target(name: appTests.name, path: path)
|
||||||
let appUITestsDependency = ValueGraphDependency.target(name: appUITests.name, path: path)
|
let appUITestsDependency = GraphDependency.target(name: appUITests.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let frameworkBDependency = ValueGraphDependency.target(name: frameworkB.name, path: path)
|
let frameworkBDependency = GraphDependency.target(name: frameworkB.name, path: path)
|
||||||
let frameworkCDependency = ValueGraphDependency.target(name: frameworkC.name, path: path)
|
let frameworkCDependency = GraphDependency.target(name: frameworkC.name, path: path)
|
||||||
let frameworkTestsDependency = ValueGraphDependency.target(name: frameworkTests.name, path: path)
|
let frameworkTestsDependency = GraphDependency.target(name: frameworkTests.name, path: path)
|
||||||
|
|
||||||
let staticFrameworkADependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkADependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
let staticFrameworkBDependency = ValueGraphDependency.target(name: staticFrameworkB.name, path: path)
|
let staticFrameworkBDependency = GraphDependency.target(name: staticFrameworkB.name, path: path)
|
||||||
let staticFrameworkCDependency = ValueGraphDependency.target(name: staticFrameworkC.name, path: path)
|
let staticFrameworkCDependency = GraphDependency.target(name: staticFrameworkC.name, path: path)
|
||||||
let staticFrameworkATestsDependency = ValueGraphDependency.target(name: staticFrameworkATests.name, path: path)
|
let staticFrameworkATestsDependency = GraphDependency.target(name: staticFrameworkATests.name, path: path)
|
||||||
let staticFrameworkBTestsDependency = ValueGraphDependency.target(name: staticFrameworkBTests.name, path: path)
|
let staticFrameworkBTestsDependency = GraphDependency.target(name: staticFrameworkBTests.name, path: path)
|
||||||
let staticFrameworkCTestsDependency = ValueGraphDependency.target(name: staticFrameworkCTests.name, path: path)
|
let staticFrameworkCTestsDependency = GraphDependency.target(name: staticFrameworkCTests.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkADependency]),
|
appDependency: Set([frameworkADependency]),
|
||||||
appTestsDependency: Set([appDependency]),
|
appTestsDependency: Set([appDependency]),
|
||||||
appUITestsDependency: Set([appDependency]),
|
appUITestsDependency: Set([appDependency]),
|
||||||
|
@ -524,7 +524,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkBTestsDependency: Set([staticFrameworkBDependency, frameworkBDependency]),
|
staticFrameworkBTestsDependency: Set([staticFrameworkBDependency, frameworkBDependency]),
|
||||||
staticFrameworkCTestsDependency: Set([staticFrameworkCDependency, staticFrameworkBDependency]),
|
staticFrameworkCTestsDependency: Set([staticFrameworkCDependency, staticFrameworkBDependency]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -542,7 +542,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkCTests.name: staticFrameworkCTests]],
|
staticFrameworkCTests.name: staticFrameworkCTests]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -570,18 +570,18 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
frameworkA, frameworkB, frameworkC, frameworkTests,
|
frameworkA, frameworkB, frameworkC, frameworkTests,
|
||||||
staticFrameworkA, staticFrameworkB, staticFrameworkC])
|
staticFrameworkA, staticFrameworkB, staticFrameworkC])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appTestsDependency = ValueGraphDependency.target(name: appTests.name, path: path)
|
let appTestsDependency = GraphDependency.target(name: appTests.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let frameworkBDependency = ValueGraphDependency.target(name: frameworkB.name, path: path)
|
let frameworkBDependency = GraphDependency.target(name: frameworkB.name, path: path)
|
||||||
let frameworkCDependency = ValueGraphDependency.target(name: frameworkC.name, path: path)
|
let frameworkCDependency = GraphDependency.target(name: frameworkC.name, path: path)
|
||||||
let frameworkTestsDependency = ValueGraphDependency.target(name: frameworkTests.name, path: path)
|
let frameworkTestsDependency = GraphDependency.target(name: frameworkTests.name, path: path)
|
||||||
|
|
||||||
let staticFrameworkADependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkADependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
let staticFrameworkBDependency = ValueGraphDependency.target(name: staticFrameworkB.name, path: path)
|
let staticFrameworkBDependency = GraphDependency.target(name: staticFrameworkB.name, path: path)
|
||||||
let staticFrameworkCDependency = ValueGraphDependency.target(name: staticFrameworkC.name, path: path)
|
let staticFrameworkCDependency = GraphDependency.target(name: staticFrameworkC.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkADependency]),
|
appDependency: Set([frameworkADependency]),
|
||||||
appTestsDependency: Set([appDependency, staticFrameworkADependency]),
|
appTestsDependency: Set([appDependency, staticFrameworkADependency]),
|
||||||
frameworkADependency: Set([frameworkBDependency, staticFrameworkADependency]),
|
frameworkADependency: Set([frameworkBDependency, staticFrameworkADependency]),
|
||||||
|
@ -592,7 +592,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkBDependency: Set(),
|
staticFrameworkBDependency: Set(),
|
||||||
staticFrameworkCDependency: Set(),
|
staticFrameworkCDependency: Set(),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -606,7 +606,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkC.name: staticFrameworkC]],
|
staticFrameworkC.name: staticFrameworkC]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -629,20 +629,20 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
|
|
||||||
let project = Project.test(targets: [app, appTests, appUITests, frameworkA, staticFrameworkA])
|
let project = Project.test(targets: [app, appTests, appUITests, frameworkA, staticFrameworkA])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appTestsDependency = ValueGraphDependency.target(name: appTests.name, path: path)
|
let appTestsDependency = GraphDependency.target(name: appTests.name, path: path)
|
||||||
let appUITestsDependency = ValueGraphDependency.target(name: appUITests.name, path: path)
|
let appUITestsDependency = GraphDependency.target(name: appUITests.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let staticFrameworkADependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkADependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkADependency]),
|
appDependency: Set([frameworkADependency]),
|
||||||
appTestsDependency: Set([appDependency, staticFrameworkADependency]),
|
appTestsDependency: Set([appDependency, staticFrameworkADependency]),
|
||||||
appUITestsDependency: Set([appDependency, frameworkADependency, staticFrameworkADependency]),
|
appUITestsDependency: Set([appDependency, frameworkADependency, staticFrameworkADependency]),
|
||||||
frameworkADependency: Set([staticFrameworkADependency]),
|
frameworkADependency: Set([staticFrameworkADependency]),
|
||||||
staticFrameworkADependency: Set([]),
|
staticFrameworkADependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -652,7 +652,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkA.name: staticFrameworkA]],
|
staticFrameworkA.name: staticFrameworkA]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -673,18 +673,18 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let staticFrameworkA = Target.test(name: "StaticFrameworkA", product: .staticFramework)
|
let staticFrameworkA = Target.test(name: "StaticFrameworkA", product: .staticFramework)
|
||||||
let project = Project.test(targets: [app, appUITests, frameworkA, staticFrameworkA])
|
let project = Project.test(targets: [app, appUITests, frameworkA, staticFrameworkA])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appUITestsDependency = ValueGraphDependency.target(name: appUITests.name, path: path)
|
let appUITestsDependency = GraphDependency.target(name: appUITests.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let staticFrameworkADependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkADependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkADependency]),
|
appDependency: Set([frameworkADependency]),
|
||||||
appUITestsDependency: Set([appDependency, staticFrameworkADependency]),
|
appUITestsDependency: Set([appDependency, staticFrameworkADependency]),
|
||||||
frameworkADependency: Set([staticFrameworkADependency]),
|
frameworkADependency: Set([staticFrameworkADependency]),
|
||||||
staticFrameworkADependency: Set([]),
|
staticFrameworkADependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -693,7 +693,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkA.name: staticFrameworkA]],
|
staticFrameworkA.name: staticFrameworkA]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -716,18 +716,18 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let staticFrameworkA = Target.test(name: "StaticFrameworkA", product: .staticFramework)
|
let staticFrameworkA = Target.test(name: "StaticFrameworkA", product: .staticFramework)
|
||||||
let project = Project.test(targets: [app, appUITests, frameworkA, staticFrameworkA])
|
let project = Project.test(targets: [app, appUITests, frameworkA, staticFrameworkA])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appUITestsDependency = ValueGraphDependency.target(name: appUITests.name, path: path)
|
let appUITestsDependency = GraphDependency.target(name: appUITests.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let staticFrameworkADependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkADependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkADependency]),
|
appDependency: Set([frameworkADependency]),
|
||||||
appUITestsDependency: Set([appDependency, staticFrameworkADependency, frameworkADependency]),
|
appUITestsDependency: Set([appDependency, staticFrameworkADependency, frameworkADependency]),
|
||||||
frameworkADependency: Set([staticFrameworkADependency]),
|
frameworkADependency: Set([staticFrameworkADependency]),
|
||||||
staticFrameworkADependency: Set([]),
|
staticFrameworkADependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -736,7 +736,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkA.name: staticFrameworkA]],
|
staticFrameworkA.name: staticFrameworkA]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -758,18 +758,18 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
|
|
||||||
// App ----> Framework A
|
// App ----> Framework A
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appUITestsDependency = ValueGraphDependency.target(name: appUITests.name, path: path)
|
let appUITestsDependency = GraphDependency.target(name: appUITests.name, path: path)
|
||||||
let frameworkADependency = ValueGraphDependency.target(name: frameworkA.name, path: path)
|
let frameworkADependency = GraphDependency.target(name: frameworkA.name, path: path)
|
||||||
let staticFrameworkADependency = ValueGraphDependency.target(name: staticFrameworkA.name, path: path)
|
let staticFrameworkADependency = GraphDependency.target(name: staticFrameworkA.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
appDependency: Set([frameworkADependency, staticFrameworkADependency]),
|
appDependency: Set([frameworkADependency, staticFrameworkADependency]),
|
||||||
appUITestsDependency: Set([appDependency, staticFrameworkADependency, frameworkADependency]),
|
appUITestsDependency: Set([appDependency, staticFrameworkADependency, frameworkADependency]),
|
||||||
frameworkADependency: Set([staticFrameworkADependency]),
|
frameworkADependency: Set([staticFrameworkADependency]),
|
||||||
staticFrameworkADependency: Set([]),
|
staticFrameworkADependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [app.name: app,
|
targets: [path: [app.name: app,
|
||||||
|
@ -778,7 +778,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
staticFrameworkA.name: staticFrameworkA]],
|
staticFrameworkA.name: staticFrameworkA]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -798,17 +798,17 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
||||||
let project = Project.test(targets: [app, appExtension, staticFramework])
|
let project = Project.test(targets: [app, appExtension, staticFramework])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appExtensionDependency = ValueGraphDependency.target(name: appExtension.name, path: path)
|
let appExtensionDependency = GraphDependency.target(name: appExtension.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
// apps declare they bundle extensions via dependencies
|
// apps declare they bundle extensions via dependencies
|
||||||
appDependency: Set([staticFrameworkDependency, appExtensionDependency]),
|
appDependency: Set([staticFrameworkDependency, appExtensionDependency]),
|
||||||
appExtensionDependency: Set([staticFrameworkDependency]),
|
appExtensionDependency: Set([staticFrameworkDependency]),
|
||||||
staticFrameworkDependency: Set([]),
|
staticFrameworkDependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [
|
targets: [path: [
|
||||||
|
@ -818,7 +818,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
]],
|
]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -836,19 +836,19 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
||||||
let project = Project.test(targets: [app, appExtension, framework, staticFramework])
|
let project = Project.test(targets: [app, appExtension, framework, staticFramework])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appExtensionDependency = ValueGraphDependency.target(name: appExtension.name, path: path)
|
let appExtensionDependency = GraphDependency.target(name: appExtension.name, path: path)
|
||||||
let frameworkDependency = ValueGraphDependency.target(name: framework.name, path: path)
|
let frameworkDependency = GraphDependency.target(name: framework.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
// apps declare they bundle extensions via dependencies
|
// apps declare they bundle extensions via dependencies
|
||||||
appDependency: Set([staticFrameworkDependency, appExtensionDependency]),
|
appDependency: Set([staticFrameworkDependency, appExtensionDependency]),
|
||||||
appExtensionDependency: Set([staticFrameworkDependency, frameworkDependency]),
|
appExtensionDependency: Set([staticFrameworkDependency, frameworkDependency]),
|
||||||
frameworkDependency: Set([staticFrameworkDependency]),
|
frameworkDependency: Set([staticFrameworkDependency]),
|
||||||
staticFrameworkDependency: Set([]),
|
staticFrameworkDependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [
|
targets: [path: [
|
||||||
|
@ -859,7 +859,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
]],
|
]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -878,17 +878,17 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
||||||
let project = Project.test(targets: [app, appClip, staticFramework])
|
let project = Project.test(targets: [app, appClip, staticFramework])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appClipDependency = ValueGraphDependency.target(name: appClip.name, path: path)
|
let appClipDependency = GraphDependency.target(name: appClip.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
// apps declare they bundle app clips via dependencies
|
// apps declare they bundle app clips via dependencies
|
||||||
appDependency: Set([staticFrameworkDependency, appClipDependency]),
|
appDependency: Set([staticFrameworkDependency, appClipDependency]),
|
||||||
appClipDependency: Set([staticFrameworkDependency]),
|
appClipDependency: Set([staticFrameworkDependency]),
|
||||||
staticFrameworkDependency: Set([]),
|
staticFrameworkDependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [
|
targets: [path: [
|
||||||
|
@ -898,7 +898,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
]],
|
]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -916,19 +916,19 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
let staticFramework = Target.test(name: "StaticFramework", product: .staticFramework)
|
||||||
let project = Project.test(targets: [app, appClip, framework, staticFramework])
|
let project = Project.test(targets: [app, appClip, framework, staticFramework])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let appClipDependency = ValueGraphDependency.target(name: appClip.name, path: path)
|
let appClipDependency = GraphDependency.target(name: appClip.name, path: path)
|
||||||
let frameworkDependency = ValueGraphDependency.target(name: framework.name, path: path)
|
let frameworkDependency = GraphDependency.target(name: framework.name, path: path)
|
||||||
let staticFrameworkDependency = ValueGraphDependency.target(name: staticFramework.name, path: path)
|
let staticFrameworkDependency = GraphDependency.target(name: staticFramework.name, path: path)
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
// apps declare they bundle app clips via dependencies
|
// apps declare they bundle app clips via dependencies
|
||||||
appDependency: Set([staticFrameworkDependency, appClipDependency]),
|
appDependency: Set([staticFrameworkDependency, appClipDependency]),
|
||||||
appClipDependency: Set([frameworkDependency, staticFrameworkDependency]),
|
appClipDependency: Set([frameworkDependency, staticFrameworkDependency]),
|
||||||
frameworkDependency: Set([staticFrameworkDependency]),
|
frameworkDependency: Set([staticFrameworkDependency]),
|
||||||
staticFrameworkDependency: Set([]),
|
staticFrameworkDependency: Set([]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [
|
targets: [path: [
|
||||||
|
@ -939,7 +939,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
]],
|
]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -958,19 +958,19 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let watchAppExtension = Target.test(name: "WatchAppExtension", platform: .watchOS, product: .watch2Extension)
|
let watchAppExtension = Target.test(name: "WatchAppExtension", platform: .watchOS, product: .watch2Extension)
|
||||||
let project = Project.test(targets: [app, watchApp, watchAppExtension])
|
let project = Project.test(targets: [app, watchApp, watchAppExtension])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let watchAppDependency = ValueGraphDependency.target(name: watchApp.name, path: path)
|
let watchAppDependency = GraphDependency.target(name: watchApp.name, path: path)
|
||||||
let watchAppExtensionDependency = ValueGraphDependency.target(name: watchAppExtension.name, path: path)
|
let watchAppExtensionDependency = GraphDependency.target(name: watchAppExtension.name, path: path)
|
||||||
let swiftPackage = ValueGraphDependency.packageProduct(path: "/path/to/package", product: "LocalPackage")
|
let swiftPackage = GraphDependency.packageProduct(path: "/path/to/package", product: "LocalPackage")
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
// apps declare they bundle watch apps via dependencies
|
// apps declare they bundle watch apps via dependencies
|
||||||
appDependency: Set([swiftPackage, watchAppDependency]),
|
appDependency: Set([swiftPackage, watchAppDependency]),
|
||||||
// apps declare they bundle extensions via dependencies
|
// apps declare they bundle extensions via dependencies
|
||||||
watchAppDependency: Set([watchAppExtensionDependency]),
|
watchAppDependency: Set([watchAppExtensionDependency]),
|
||||||
watchAppExtensionDependency: Set([swiftPackage]),
|
watchAppExtensionDependency: Set([swiftPackage]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [
|
targets: [path: [
|
||||||
|
@ -980,7 +980,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
]],
|
]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -998,13 +998,13 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
let watchFramework = Target.test(name: "WatchFramework", platform: .watchOS, product: .framework)
|
let watchFramework = Target.test(name: "WatchFramework", platform: .watchOS, product: .framework)
|
||||||
let project = Project.test(targets: [app, watchApp, watchAppExtension, watchFramework])
|
let project = Project.test(targets: [app, watchApp, watchAppExtension, watchFramework])
|
||||||
|
|
||||||
let appDependency = ValueGraphDependency.target(name: app.name, path: path)
|
let appDependency = GraphDependency.target(name: app.name, path: path)
|
||||||
let watchAppDependency = ValueGraphDependency.target(name: watchApp.name, path: path)
|
let watchAppDependency = GraphDependency.target(name: watchApp.name, path: path)
|
||||||
let watchAppExtensionDependency = ValueGraphDependency.target(name: watchAppExtension.name, path: path)
|
let watchAppExtensionDependency = GraphDependency.target(name: watchAppExtension.name, path: path)
|
||||||
let watchFrameworkDependency = ValueGraphDependency.target(name: watchFramework.name, path: path)
|
let watchFrameworkDependency = GraphDependency.target(name: watchFramework.name, path: path)
|
||||||
let swiftPackage = ValueGraphDependency.packageProduct(path: "/path/to/package", product: "LocalPackage")
|
let swiftPackage = GraphDependency.packageProduct(path: "/path/to/package", product: "LocalPackage")
|
||||||
|
|
||||||
let dependencies: [ValueGraphDependency: Set<ValueGraphDependency>] = [
|
let dependencies: [GraphDependency: Set<GraphDependency>] = [
|
||||||
// apps declare they bundle watch apps via dependencies
|
// apps declare they bundle watch apps via dependencies
|
||||||
appDependency: Set([swiftPackage, watchAppDependency]),
|
appDependency: Set([swiftPackage, watchAppDependency]),
|
||||||
// apps declare they bundle extensions via dependencies
|
// apps declare they bundle extensions via dependencies
|
||||||
|
@ -1012,7 +1012,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
watchAppExtensionDependency: Set([swiftPackage, watchFrameworkDependency]),
|
watchAppExtensionDependency: Set([swiftPackage, watchFrameworkDependency]),
|
||||||
watchFrameworkDependency: Set([swiftPackage]),
|
watchFrameworkDependency: Set([swiftPackage]),
|
||||||
]
|
]
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
path: path,
|
path: path,
|
||||||
projects: [path: project],
|
projects: [path: project],
|
||||||
targets: [path: [
|
targets: [path: [
|
||||||
|
@ -1023,7 +1023,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
]],
|
]],
|
||||||
dependencies: dependencies
|
dependencies: dependencies
|
||||||
)
|
)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let results = subject.lint(graphTraverser: graphTraverser)
|
let results = subject.lint(graphTraverser: graphTraverser)
|
||||||
|
@ -1036,7 +1036,7 @@ class StaticProductsGraphLinterTests: XCTestCase {
|
||||||
|
|
||||||
// MARK: - Helpers
|
// MARK: - Helpers
|
||||||
|
|
||||||
private func warning(product node: String, type: String = "Target", linkedBy: [ValueGraphDependency]) -> LintingIssue {
|
private func warning(product node: String, type: String = "Target", linkedBy: [GraphDependency]) -> LintingIssue {
|
||||||
let reason = "\(type) \'\(node)\' has been linked from \(linkedBy.map(\.description).listed()), it is a static product so may introduce unwanted side effects.".uppercasingFirst
|
let reason = "\(type) \'\(node)\' has been linked from \(linkedBy.map(\.description).listed()), it is a static product so may introduce unwanted side effects.".uppercasingFirst
|
||||||
return LintingIssue(
|
return LintingIssue(
|
||||||
reason: reason,
|
reason: reason,
|
||||||
|
|
|
@ -38,8 +38,8 @@ final class CocoaPodsInteractorTests: TuistUnitTestCase {
|
||||||
system.whichStub = { _ in
|
system.whichStub = { _ in
|
||||||
throw NSError.test()
|
throw NSError.test()
|
||||||
}
|
}
|
||||||
let graph = ValueGraph.test(dependencies: [ValueGraphDependency.cocoapods(path: "/"): Set()])
|
let graph = Graph.test(dependencies: [GraphDependency.cocoapods(path: "/"): Set()])
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
XCTAssertThrowsSpecific(
|
XCTAssertThrowsSpecific(
|
||||||
|
@ -50,8 +50,8 @@ final class CocoaPodsInteractorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
func test_install_when_theCocoaPodsFromBundlerCanBeUsed() throws {
|
func test_install_when_theCocoaPodsFromBundlerCanBeUsed() throws {
|
||||||
// Given
|
// Given
|
||||||
let graph = ValueGraph.test(dependencies: [ValueGraphDependency.cocoapods(path: "/"): Set()])
|
let graph = Graph.test(dependencies: [GraphDependency.cocoapods(path: "/"): Set()])
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
system.succeedCommand(["bundle", "show", "cocoapods"])
|
system.succeedCommand(["bundle", "show", "cocoapods"])
|
||||||
system.succeedCommand(["bundle", "exec", "pod", "install", "--project-directory=/"])
|
system.succeedCommand(["bundle", "exec", "pod", "install", "--project-directory=/"])
|
||||||
|
@ -65,8 +65,8 @@ final class CocoaPodsInteractorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
func test_install_when_theCocoaPodsFromTheSystemCanBeUsed() throws {
|
func test_install_when_theCocoaPodsFromTheSystemCanBeUsed() throws {
|
||||||
// Given
|
// Given
|
||||||
let graph = ValueGraph.test(dependencies: [ValueGraphDependency.cocoapods(path: "/"): Set()])
|
let graph = Graph.test(dependencies: [GraphDependency.cocoapods(path: "/"): Set()])
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
system.errorCommand(["bundle", "show", "cocoapods"])
|
system.errorCommand(["bundle", "show", "cocoapods"])
|
||||||
system.whichStub = {
|
system.whichStub = {
|
||||||
|
@ -84,8 +84,8 @@ final class CocoaPodsInteractorTests: TuistUnitTestCase {
|
||||||
|
|
||||||
func test_install_when_theCocoaPodsSpecsRepoIsOutdated() throws {
|
func test_install_when_theCocoaPodsSpecsRepoIsOutdated() throws {
|
||||||
// Given
|
// Given
|
||||||
let graph = ValueGraph.test(dependencies: [ValueGraphDependency.cocoapods(path: "/"): Set()])
|
let graph = Graph.test(dependencies: [GraphDependency.cocoapods(path: "/"): Set()])
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
system.succeedCommand(["bundle", "show", "cocoapods"])
|
system.succeedCommand(["bundle", "show", "cocoapods"])
|
||||||
system.errorCommand(["bundle", "exec", "pod", "install", "--project-directory=/"], error: "[!] CocoaPods could not find compatible versions for pod")
|
system.errorCommand(["bundle", "exec", "pod", "install", "--project-directory=/"], error: "[!] CocoaPods could not find compatible versions for pod")
|
||||||
|
|
|
@ -4,10 +4,10 @@ import XCTest
|
||||||
@testable import TuistGraph
|
@testable import TuistGraph
|
||||||
@testable import TuistSupportTesting
|
@testable import TuistSupportTesting
|
||||||
|
|
||||||
final class ValueGraphDependencyTests: TuistUnitTestCase {
|
final class GraphDependencyTests: TuistUnitTestCase {
|
||||||
func test_codable_target() {
|
func test_codable_target() {
|
||||||
// Given
|
// Given
|
||||||
let subject = ValueGraphDependency.testTarget()
|
let subject = GraphDependency.testTarget()
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
XCTAssertCodable(subject)
|
XCTAssertCodable(subject)
|
||||||
|
@ -15,7 +15,7 @@ final class ValueGraphDependencyTests: TuistUnitTestCase {
|
||||||
|
|
||||||
func test_codable_framework() {
|
func test_codable_framework() {
|
||||||
// Given
|
// Given
|
||||||
let subject = ValueGraphDependency.testFramework()
|
let subject = GraphDependency.testFramework()
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
XCTAssertCodable(subject)
|
XCTAssertCodable(subject)
|
|
@ -4,10 +4,10 @@ import XCTest
|
||||||
@testable import TuistGraph
|
@testable import TuistGraph
|
||||||
@testable import TuistSupportTesting
|
@testable import TuistSupportTesting
|
||||||
|
|
||||||
final class ValueGraphTargetTests: TuistUnitTestCase {
|
final class GraphTargetTests: TuistUnitTestCase {
|
||||||
func test_codable() {
|
func test_codable() {
|
||||||
// Given
|
// Given
|
||||||
let subject = ValueGraphTarget.test()
|
let subject = GraphTarget.test()
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
XCTAssertCodable(subject)
|
XCTAssertCodable(subject)
|
|
@ -4,10 +4,10 @@ import XCTest
|
||||||
@testable import TuistGraph
|
@testable import TuistGraph
|
||||||
@testable import TuistSupportTesting
|
@testable import TuistSupportTesting
|
||||||
|
|
||||||
final class ValueGraphTests: TuistUnitTestCase {
|
final class GraphTests: TuistUnitTestCase {
|
||||||
func test_codable() {
|
func test_codable() {
|
||||||
// Given
|
// Given
|
||||||
let subject = ValueGraph.test(name: "name", path: "/path/to")
|
let subject = Graph.test(name: "name", path: "/path/to")
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
XCTAssertCodable(subject)
|
XCTAssertCodable(subject)
|
|
@ -31,7 +31,7 @@ final class ProjectTests: XCTestCase {
|
||||||
framework, app, appTests, frameworkTests,
|
framework, app, appTests, frameworkTests,
|
||||||
])
|
])
|
||||||
|
|
||||||
let graph = ValueGraph.test(
|
let graph = Graph.test(
|
||||||
projects: [project.path: project],
|
projects: [project.path: project],
|
||||||
targets: [
|
targets: [
|
||||||
project.path: [
|
project.path: [
|
||||||
|
|
|
@ -315,10 +315,10 @@ final class MultipleConfigurationsIntegrationTests: TuistUnitTestCase {
|
||||||
let subject = DescriptorGenerator()
|
let subject = DescriptorGenerator()
|
||||||
let writer = XcodeProjWriter()
|
let writer = XcodeProjWriter()
|
||||||
let linter = GraphLinter()
|
let linter = GraphLinter()
|
||||||
let graphLoader = ValueGraphLoader()
|
let graphLoader = GraphLoader()
|
||||||
|
|
||||||
let graph = try graphLoader.loadWorkspace(workspace: models.workspace, projects: models.projects)
|
let graph = try graphLoader.loadWorkspace(workspace: models.workspace, projects: models.projects)
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
try linter.lint(graphTraverser: graphTraverser).printAndThrowIfNeeded()
|
try linter.lint(graphTraverser: graphTraverser).printAndThrowIfNeeded()
|
||||||
let descriptor = try subject.generateWorkspace(graphTraverser: graphTraverser)
|
let descriptor = try subject.generateWorkspace(graphTraverser: graphTraverser)
|
||||||
try writer.write(workspace: descriptor)
|
try writer.write(workspace: descriptor)
|
||||||
|
|
|
@ -35,7 +35,7 @@ final class StableXcodeProjIntegrationTests: TuistTestCase {
|
||||||
)
|
)
|
||||||
let modelGenerator = TestModelGenerator(rootPath: temporaryPath, config: config)
|
let modelGenerator = TestModelGenerator(rootPath: temporaryPath, config: config)
|
||||||
let graph = try modelGenerator.generate()
|
let graph = try modelGenerator.generate()
|
||||||
let graphTraverser = ValueGraphTraverser(graph: graph)
|
let graphTraverser = GraphTraverser(graph: graph)
|
||||||
|
|
||||||
let workspaceDescriptor = try subject.generateWorkspace(graphTraverser: graphTraverser)
|
let workspaceDescriptor = try subject.generateWorkspace(graphTraverser: graphTraverser)
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,9 @@ final class TestModelGenerator {
|
||||||
self.config = config
|
self.config = config
|
||||||
}
|
}
|
||||||
|
|
||||||
func generate() throws -> ValueGraph {
|
func generate() throws -> Graph {
|
||||||
let models = try createModels()
|
let models = try createModels()
|
||||||
let graphLoader = ValueGraphLoader(
|
let graphLoader = GraphLoader(
|
||||||
frameworkMetadataProvider: MockFrameworkMetadataProvider(),
|
frameworkMetadataProvider: MockFrameworkMetadataProvider(),
|
||||||
libraryMetadataProvider: MockLibraryMetadataProvider(),
|
libraryMetadataProvider: MockLibraryMetadataProvider(),
|
||||||
xcframeworkMetadataProvider: MockXCFrameworkMetadataProvider(),
|
xcframeworkMetadataProvider: MockXCFrameworkMetadataProvider(),
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue