File tree Expand file tree Collapse file tree 3 files changed +47
-0
lines changed
Sources/PackageModelSyntax
Tests/PackageModelSyntaxTests Expand file tree Collapse file tree 3 files changed +47
-0
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ add_library(PackageModelSyntax
10
10
AddPackageDependency.swift
11
11
AddProduct.swift
12
12
AddTarget.swift
13
+ AddTargetDependency.swift
13
14
ManifestEditError.swift
14
15
ManifestSyntaxRepresentable.swift
15
16
PackageDependency+Syntax.swift
Original file line number Diff line number Diff line change @@ -18,6 +18,8 @@ import SwiftSyntax
18
18
/// package manifest programattically.
19
19
package enum ManifestEditError : Error {
20
20
case cannotFindPackage
21
+ case cannotFindTargets
22
+ case cannotFindTarget( targetName: String )
21
23
case cannotFindArrayLiteralArgument( argumentName: String , node: Syntax )
22
24
case oldManifest( ToolsVersion )
23
25
}
@@ -33,6 +35,10 @@ extension ManifestEditError: CustomStringConvertible {
33
35
switch self {
34
36
case . cannotFindPackage:
35
37
" invalid manifest: unable to find 'Package' declaration "
38
+ case . cannotFindTargets:
39
+ " unable to find package targets in manifest "
40
+ case . cannotFindTarget( targetName: let name) :
41
+ " unable to find target named ' \( name) ' in package "
36
42
case . cannotFindArrayLiteralArgument( argumentName: let name, node: _) :
37
43
" unable to find array literal for ' \( name) ' argument "
38
44
case . oldManifest( let version) :
Original file line number Diff line number Diff line change @@ -611,6 +611,46 @@ class ManifestEditTests: XCTestCase {
611
611
)
612
612
}
613
613
}
614
+
615
+ func testAddTargetDependency( ) throws {
616
+ try assertManifestRefactor ( """
617
+ // swift-tools-version: 5.5
618
+ let package = Package(
619
+ name: " packages " ,
620
+ dependencies: [
621
+ .package(url: " https://github.com/apple/swift-testing.git " , from: " 0.8.0 " ),
622
+ ],
623
+ targets: [
624
+ .testTarget(
625
+ name: " MyTest "
626
+ ),
627
+ ]
628
+ )
629
+ """ ,
630
+ expectedManifest: """
631
+ // swift-tools-version: 5.5
632
+ let package = Package(
633
+ name: " packages " ,
634
+ dependencies: [
635
+ .package(url: " https://github.com/apple/swift-testing.git " , from: " 0.8.0 " ),
636
+ ],
637
+ targets: [
638
+ .testTarget(
639
+ name: " MyTest " ,
640
+ dependencies: [
641
+ .product(name: " Testing " , package: " swift-testing " ),
642
+ ]
643
+ ),
644
+ ]
645
+ )
646
+ """ ) { manifest in
647
+ try AddTargetDependency . addTargetDependency (
648
+ . product( name: " Testing " , package : " swift-testing " ) ,
649
+ targetName: " MyTest " ,
650
+ to: manifest
651
+ )
652
+ }
653
+ }
614
654
}
615
655
616
656
You can’t perform that action at this time.
0 commit comments