Skip to content

Commit 81ff1f7

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

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

Sources/SPMPackageEditor/ManifestRewriter.swift

+6-1
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
}

Tests/SPMPackageEditorTests/AddPackageDependencyTests.swift

+34
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)