Skip to content

Commit c324dfe

Browse files
committed
[PackageEditing] Fix dependency insertion when the existing deps list doesn't have a trailing comma
1 parent bde66c6 commit c324dfe

File tree

3 files changed

+41
-2
lines changed

3 files changed

+41
-2
lines changed

Sources/SPMPackageEditor/ManifestRewriter.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,12 @@ final class PackageDependencyWriter: SyntaxRewriter {
344344
let rightBrace = SyntaxFactory.makeRightSquareBracketToken(
345345
leadingTrivia: [.newlines(1), .spaces(4)])
346346

347-
return ExprSyntax(node.addElement(newDependencyElement)
347+
let newElements = SyntaxFactory.makeArrayElementList(
348+
node.elements.dropLast() +
349+
[node.elements.last?.withTrailingComma(SyntaxFactory.makeCommaToken()),
350+
newDependencyElement].compactMap {$0})
351+
352+
return ExprSyntax(node.withElements(newElements)
348353
.withRightSquare(rightBrace))
349354
}
350355
}

Sources/SPMPackageEditor/PackageEditor.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public final class PackageEditor {
7373
requirement = .localPackage
7474
} else {
7575
// Otherwise, first lookup the dependency.
76-
let spec = RepositorySpecifier(url: options.url)
76+
let spec = RepositorySpecifier(url: url)
7777
let handle = try tsc_await{ context.repositoryManager.lookup(repository: spec, completion: $0) }
7878

7979
let repo = try handle.open()

Tests/SPMPackageEditorTests/AddPackageDependencyTests.swift

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,4 +233,38 @@ final class AddPackageDependencyTests: XCTestCase {
233233
)
234234
""")
235235
}
236+
237+
func testAddPackageDependency7() throws {
238+
let manifest = """
239+
let package = Package(
240+
name: "exec",
241+
dependencies: [
242+
.package(url: "https://github.com/foo/bar", from: "1.0.3")
243+
],
244+
targets: [
245+
.target(name: "exec")
246+
]
247+
)
248+
"""
249+
250+
251+
let editor = try ManifestRewriter(manifest)
252+
try editor.addPackageDependency(
253+
url: "https://github.com/foo/goo",
254+
requirement: .upToNextMajor("1.0.1")
255+
)
256+
257+
XCTAssertEqual(editor.editedManifest, """
258+
let package = Package(
259+
name: "exec",
260+
dependencies: [
261+
.package(url: "https://github.com/foo/bar", from: "1.0.3"),
262+
.package(url: "https://github.com/foo/goo", from: "1.0.1"),
263+
],
264+
targets: [
265+
.target(name: "exec")
266+
]
267+
)
268+
""")
269+
}
236270
}

0 commit comments

Comments
 (0)