Skip to content

Commit 249c947

Browse files
committed
Fix ArgumentExtractor implementation bug
1 parent a78a11d commit 249c947

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

Sources/PackagePlugin/ArgumentExtractor.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public struct ArgumentExtractor {
4040
else if arg.starts(with: "--\(name)=") {
4141
arg.removeFirst(2 + name.count + 1)
4242
values.append(arg)
43+
args.remove(at: idx)
4344
}
4445
else {
4546
idx += 1

Tests/PackagePluginAPITests/ArgumentExtractorTests.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ class ArgumentExtractorAPITests: XCTestCase {
2525
XCTAssertEqual(extractor.remainingArguments, ["Positional1", "Positional2"])
2626
}
2727

28+
func testExtractOption() throws {
29+
var extractor = ArgumentExtractor(["--output", "Dir1", "--target=Target1", "Positional1", "--flag", "--target", "Target2", "Positional2", "--output=Dir2"])
30+
XCTAssertEqual(extractor.extractOption(named: "target"), ["Target1", "Target2"])
31+
XCTAssertEqual(extractor.extractOption(named: "output"), ["Dir1", "Dir2"])
32+
XCTAssertEqual(extractor.extractFlag(named: "flag"), 1)
33+
XCTAssertEqual(extractor.unextractedOptionsOrFlags, [])
34+
XCTAssertEqual(extractor.remainingArguments, ["Positional1", "Positional2"])
35+
}
36+
2837
func testDashDashTerminal() throws {
2938
var extractor = ArgumentExtractor(["--verbose", "--", "--target", "Target1", "Positional", "--verbose"])
3039
XCTAssertEqual(extractor.extractOption(named: "target"), [])

0 commit comments

Comments
 (0)