





























@@ -95,6 +95,14 @@ export function parseTestGroupReportArgs(argv) {
9595topFiles: 25,
9696vitestArgs: [],
9797};
98+const seenSingleValueFlags = new Set();
99+const setSingleValueFlag = (flag, apply) => {
100+if (seenSingleValueFlags.has(flag)) {
101+throw new Error(`${flag} was provided more than once`);
102+}
103+seenSingleValueFlags.add(flag);
104+apply();
105+};
9810699107for (let index = 0; index < argv.length; index += 1) {
100108const arg = argv[index];
@@ -124,10 +132,11 @@ export function parseTestGroupReportArgs(argv) {
124132continue;
125133}
126134if (arg === "--compare") {
127-args.compare = {
128-before: readRequiredValue(argv, index, "--compare"),
129-after: readRequiredValue(argv, index + 1, "--compare"),
130-};
135+const before = readRequiredValue(argv, index, "--compare");
136+const after = readRequiredValue(argv, index + 1, "--compare");
137+setSingleValueFlag(arg, () => {
138+args.compare = { before, after };
139+});
131140index += 2;
132141continue;
133142}
@@ -137,42 +146,66 @@ export function parseTestGroupReportArgs(argv) {
137146continue;
138147}
139148if (arg === "--group-by") {
140-args.groupBy = readRequiredValue(argv, index, "--group-by");
149+const value = readRequiredValue(argv, index, "--group-by");
150+setSingleValueFlag(arg, () => {
151+args.groupBy = value;
152+});
141153index += 1;
142154continue;
143155}
144156if (arg === "--output") {
145-args.output = readRequiredValue(argv, index, "--output");
157+const value = readRequiredValue(argv, index, "--output");
158+setSingleValueFlag(arg, () => {
159+args.output = value;
160+});
146161index += 1;
147162continue;
148163}
149164if (arg === "--limit") {
150-args.limit = readPositiveIntValue(argv, index, "--limit");
165+const value = readPositiveIntValue(argv, index, "--limit");
166+setSingleValueFlag(arg, () => {
167+args.limit = value;
168+});
151169index += 1;
152170continue;
153171}
154172if (arg === "--max-test-ms") {
155-args.maxTestMs = readPositiveIntValue(argv, index, "--max-test-ms");
173+const value = readPositiveIntValue(argv, index, "--max-test-ms");
174+setSingleValueFlag(arg, () => {
175+args.maxTestMs = value;
176+});
156177index += 1;
157178continue;
158179}
159180if (arg === "--timeout-ms") {
160-args.timeoutMs = readPositiveIntValue(argv, index, "--timeout-ms");
181+const value = readPositiveIntValue(argv, index, "--timeout-ms");
182+setSingleValueFlag(arg, () => {
183+args.timeoutMs = value;
184+});
161185index += 1;
162186continue;
163187}
164188if (arg === "--kill-grace-ms") {
165-args.killGraceMs = readPositiveIntValue(argv, index, "--kill-grace-ms");
189+const value = readPositiveIntValue(argv, index, "--kill-grace-ms");
190+setSingleValueFlag(arg, () => {
191+args.killGraceMs = value;
192+});
166193index += 1;
167194continue;
168195}
169196if (arg === "--concurrency") {
170-args.concurrency = readPositiveIntValue(argv, index, "--concurrency");
197+const value = readPositiveIntValue(argv, index, "--concurrency");
198+setSingleValueFlag(arg, () => {
199+args.concurrency = value;
200+});
171201index += 1;
172202continue;
173203}
174204if (arg === "--top-files") {
175-args.topFiles = readPositiveIntValue(argv, index, "--top-files");
205+const value = readPositiveIntValue(argv, index, "--top-files");
206+setSingleValueFlag(arg, () => {
207+args.topFiles = value;
208+});
176209index += 1;
177210continue;
178211}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。