Skip to content

Commit b02d952

Browse files
committed
Fix ArgumentExtractor implementation bug
1 parent a78a11d commit b02d952

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-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: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ 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.unextractedOptionsOrFlags, [])
33+
XCTAssertEqual(extractor.remainingArguments, ["Positional1", "Positional2"])
34+
}
35+
2836
func testDashDashTerminal() throws {
2937
var extractor = ArgumentExtractor(["--verbose", "--", "--target", "Target1", "Positional", "--verbose"])
3038
XCTAssertEqual(extractor.extractOption(named: "target"), [])

0 commit comments

Comments
 (0)