ag-toolkit 0.1.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/git.js +1 -1
- package/dist/lib/arg-parser.d.ts +9 -5
- package/dist/lib/arg-parser.js +14 -0
- package/dist/tests/arg-parser.test.d.ts +1 -0
- package/dist/tests/arg-parser.test.js +404 -0
- package/dist/tests/config.test.d.ts +1 -0
- package/dist/tests/config.test.js +234 -0
- package/dist/tests/format.test.d.ts +1 -0
- package/dist/tests/format.test.js +76 -0
- package/dist/tests/isDeepEqual.test.d.ts +1 -0
- package/dist/tests/isDeepEqual.test.js +203 -0
- package/dist/tests/isValidBranchName.test.d.ts +1 -0
- package/dist/tests/isValidBranchName.test.js +89 -0
- package/dist/tests/match.test.d.ts +1 -0
- package/dist/tests/match.test.js +86 -0
- package/dist/tests/package.test.d.ts +1 -0
- package/dist/tests/package.test.js +77 -0
- package/dist/tests/sanitizeString.test.d.ts +1 -0
- package/dist/tests/sanitizeString.test.js +48 -0
- package/package.json +10 -10
package/dist/git.js
CHANGED
|
@@ -149,7 +149,7 @@ export class GitOperations {
|
|
|
149
149
|
const output = await this.git.raw(args);
|
|
150
150
|
const lines = output
|
|
151
151
|
.split("\n")
|
|
152
|
-
.map((line) => line.replace(
|
|
152
|
+
.map((line) => line.replace(/\*/g, "").trim());
|
|
153
153
|
const filtered = lines
|
|
154
154
|
.filter(Boolean)
|
|
155
155
|
.filter((name) => !name.includes(" -> "))
|
package/dist/lib/arg-parser.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
type FlagConfig = {
|
|
2
2
|
type: "string" | "boolean";
|
|
3
3
|
shortFlag?: string;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
enumValues?: never;
|
|
5
|
+
} | {
|
|
6
|
+
type: "enum";
|
|
7
|
+
shortFlag?: string;
|
|
8
|
+
enumValues?: readonly string[];
|
|
7
9
|
};
|
|
10
|
+
export type FlagsSchema = Record<string, FlagConfig>;
|
|
11
|
+
export declare const defineSchema: <T extends FlagsSchema>(schema: T) => T;
|
|
8
12
|
type Flags<T extends FlagsSchema> = {
|
|
9
|
-
[K in keyof T]: T[K]["type"] extends "string" ? string | undefined : boolean | undefined;
|
|
13
|
+
[K in keyof T]: T[K]["type"] extends "string" ? string | undefined : T[K]["type"] extends "boolean" ? boolean | undefined : T[K]["type"] extends "enum" ? T[K]["enumValues"] extends readonly (infer U)[] ? U | undefined : string | undefined : never;
|
|
10
14
|
};
|
|
11
15
|
interface ParsedArgs<T extends FlagsSchema> {
|
|
12
16
|
flags: Flags<T>;
|
package/dist/lib/arg-parser.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export const defineSchema = (schema) => {
|
|
2
|
+
return schema;
|
|
3
|
+
};
|
|
1
4
|
export class ArgParser {
|
|
2
5
|
schema;
|
|
3
6
|
helpMessage;
|
|
@@ -67,6 +70,17 @@ export class ArgParser {
|
|
|
67
70
|
}
|
|
68
71
|
flags[longFlag] = value;
|
|
69
72
|
}
|
|
73
|
+
else if (flagConfig?.type === "enum") {
|
|
74
|
+
const value = argValue ?? remainingArgs.shift();
|
|
75
|
+
if (value === undefined) {
|
|
76
|
+
throw new Error(`Flag --${String(longFlag)} requires a value.`);
|
|
77
|
+
}
|
|
78
|
+
if (flagConfig.enumValues &&
|
|
79
|
+
!flagConfig.enumValues.includes(value)) {
|
|
80
|
+
throw new Error(`Flag --${String(longFlag)} must be one of: ${flagConfig.enumValues.join(", ")}`);
|
|
81
|
+
}
|
|
82
|
+
flags[longFlag] = value;
|
|
83
|
+
}
|
|
70
84
|
}
|
|
71
85
|
else {
|
|
72
86
|
if (argName.startsWith("-")) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import { ArgParser, defineSchema } from "../lib/arg-parser.js";
|
|
3
|
+
describe("ArgParser", () => {
|
|
4
|
+
const schema = defineSchema({
|
|
5
|
+
verbose: { type: "boolean", shortFlag: "v" },
|
|
6
|
+
output: { type: "string", shortFlag: "o" },
|
|
7
|
+
force: { type: "boolean" },
|
|
8
|
+
configFile: { type: "string" },
|
|
9
|
+
});
|
|
10
|
+
describe("help and version flags", () => {
|
|
11
|
+
test("should return help message when -h is passed", () => {
|
|
12
|
+
const parser = new ArgParser({
|
|
13
|
+
schema,
|
|
14
|
+
helpMessage: "Test help message",
|
|
15
|
+
version: "1.0.0",
|
|
16
|
+
});
|
|
17
|
+
const result = parser.parse(["-h"]);
|
|
18
|
+
expect(result.help).toBe("Test help message");
|
|
19
|
+
});
|
|
20
|
+
test("should return help message when --help is passed", () => {
|
|
21
|
+
const parser = new ArgParser({
|
|
22
|
+
schema,
|
|
23
|
+
helpMessage: "Test help message",
|
|
24
|
+
version: "1.0.0",
|
|
25
|
+
});
|
|
26
|
+
const result = parser.parse(["--help"]);
|
|
27
|
+
expect(result.help).toBe("Test help message");
|
|
28
|
+
});
|
|
29
|
+
test("should return version when -v is passed (not short flag conflict)", () => {
|
|
30
|
+
const schemaWithoutVerbose = {
|
|
31
|
+
output: { type: "string", shortFlag: "o" },
|
|
32
|
+
};
|
|
33
|
+
const parser = new ArgParser({
|
|
34
|
+
schema: schemaWithoutVerbose,
|
|
35
|
+
helpMessage: "Test help",
|
|
36
|
+
version: "1.0.0",
|
|
37
|
+
});
|
|
38
|
+
const result = parser.parse(["-v"]);
|
|
39
|
+
expect(result.version).toBe("1.0.0");
|
|
40
|
+
});
|
|
41
|
+
test("should return version when --version is passed", () => {
|
|
42
|
+
const parser = new ArgParser({
|
|
43
|
+
schema,
|
|
44
|
+
helpMessage: "Test help",
|
|
45
|
+
version: "1.0.0",
|
|
46
|
+
});
|
|
47
|
+
const result = parser.parse(["--version"]);
|
|
48
|
+
expect(result.version).toBe("1.0.0");
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("boolean flags", () => {
|
|
52
|
+
test("should parse long boolean flags", () => {
|
|
53
|
+
const parser = new ArgParser({
|
|
54
|
+
schema,
|
|
55
|
+
helpMessage: "",
|
|
56
|
+
version: "",
|
|
57
|
+
});
|
|
58
|
+
const result = parser.parse(["--verbose", "--force"]);
|
|
59
|
+
expect(result.flags.verbose).toBe(true);
|
|
60
|
+
expect(result.flags.force).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
test("should parse short boolean flags", () => {
|
|
63
|
+
const schemaWithDifferentShortFlag = {
|
|
64
|
+
...schema,
|
|
65
|
+
verbose: { type: "boolean", shortFlag: "V" },
|
|
66
|
+
};
|
|
67
|
+
const parser = new ArgParser({
|
|
68
|
+
schema: schemaWithDifferentShortFlag,
|
|
69
|
+
helpMessage: "",
|
|
70
|
+
version: "",
|
|
71
|
+
});
|
|
72
|
+
const result = parser.parse(["-V"]);
|
|
73
|
+
expect(result.flags.verbose).toBe(true);
|
|
74
|
+
});
|
|
75
|
+
test("should handle camelCase to kebab-case conversion", () => {
|
|
76
|
+
const parser = new ArgParser({
|
|
77
|
+
schema: { myLongFlag: { type: "boolean" } },
|
|
78
|
+
helpMessage: "",
|
|
79
|
+
version: "",
|
|
80
|
+
});
|
|
81
|
+
const result = parser.parse(["--my-long-flag"]);
|
|
82
|
+
expect(result.flags.myLongFlag).toBe(true);
|
|
83
|
+
});
|
|
84
|
+
test("should leave undefined flags as undefined", () => {
|
|
85
|
+
const parser = new ArgParser({
|
|
86
|
+
schema,
|
|
87
|
+
helpMessage: "",
|
|
88
|
+
version: "",
|
|
89
|
+
});
|
|
90
|
+
const result = parser.parse([]);
|
|
91
|
+
expect(result.flags.verbose).toBeUndefined();
|
|
92
|
+
expect(result.flags.force).toBeUndefined();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("enum flags", () => {
|
|
96
|
+
const schemaWithEnum = defineSchema({
|
|
97
|
+
logLevel: {
|
|
98
|
+
type: "enum",
|
|
99
|
+
enumValues: ["debug", "info", "warn", "error"],
|
|
100
|
+
shortFlag: "l",
|
|
101
|
+
},
|
|
102
|
+
environment: {
|
|
103
|
+
type: "enum",
|
|
104
|
+
enumValues: ["development", "staging", "production"],
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
test("should parse long enum flags with space", () => {
|
|
108
|
+
const parser = new ArgParser({
|
|
109
|
+
schema: schemaWithEnum,
|
|
110
|
+
helpMessage: "",
|
|
111
|
+
version: "",
|
|
112
|
+
});
|
|
113
|
+
const result = parser.parse(["--log-level", "info"]);
|
|
114
|
+
expect(result.flags.logLevel).toBe("info");
|
|
115
|
+
});
|
|
116
|
+
test("should parse long enum flags with equals", () => {
|
|
117
|
+
const parser = new ArgParser({
|
|
118
|
+
schema: schemaWithEnum,
|
|
119
|
+
helpMessage: "",
|
|
120
|
+
version: "",
|
|
121
|
+
});
|
|
122
|
+
const result = parser.parse(["--log-level=error"]);
|
|
123
|
+
expect(result.flags.logLevel).toBe("error");
|
|
124
|
+
});
|
|
125
|
+
test("should parse short enum flags", () => {
|
|
126
|
+
const parser = new ArgParser({
|
|
127
|
+
schema: schemaWithEnum,
|
|
128
|
+
helpMessage: "",
|
|
129
|
+
version: "",
|
|
130
|
+
});
|
|
131
|
+
const result = parser.parse(["-l", "debug"]);
|
|
132
|
+
expect(result.flags.logLevel).toBe("debug");
|
|
133
|
+
});
|
|
134
|
+
test("should parse short enum flags with equals", () => {
|
|
135
|
+
const parser = new ArgParser({
|
|
136
|
+
schema: schemaWithEnum,
|
|
137
|
+
helpMessage: "",
|
|
138
|
+
version: "",
|
|
139
|
+
});
|
|
140
|
+
const result = parser.parse(["-l=warn"]);
|
|
141
|
+
expect(result.flags.logLevel).toBe("warn");
|
|
142
|
+
});
|
|
143
|
+
test("should handle camelCase to kebab-case for enum flags", () => {
|
|
144
|
+
const parser = new ArgParser({
|
|
145
|
+
schema: schemaWithEnum,
|
|
146
|
+
helpMessage: "",
|
|
147
|
+
version: "",
|
|
148
|
+
});
|
|
149
|
+
const result = parser.parse(["--log-level", "info"]);
|
|
150
|
+
expect(result.flags.logLevel).toBe("info");
|
|
151
|
+
});
|
|
152
|
+
test("should throw error when enum flag has invalid value", () => {
|
|
153
|
+
const parser = new ArgParser({
|
|
154
|
+
schema: schemaWithEnum,
|
|
155
|
+
helpMessage: "",
|
|
156
|
+
version: "",
|
|
157
|
+
});
|
|
158
|
+
expect(() => parser.parse(["--log-level", "invalid"])).toThrow("Flag --logLevel must be one of: debug, info, warn, error");
|
|
159
|
+
});
|
|
160
|
+
test("should throw error when enum flag has no value", () => {
|
|
161
|
+
const parser = new ArgParser({
|
|
162
|
+
schema: schemaWithEnum,
|
|
163
|
+
helpMessage: "",
|
|
164
|
+
version: "",
|
|
165
|
+
});
|
|
166
|
+
expect(() => parser.parse(["--log-level"])).toThrow("Flag --logLevel requires a value");
|
|
167
|
+
});
|
|
168
|
+
test("should parse multiple enum flags", () => {
|
|
169
|
+
const parser = new ArgParser({
|
|
170
|
+
schema: schemaWithEnum,
|
|
171
|
+
helpMessage: "",
|
|
172
|
+
version: "",
|
|
173
|
+
});
|
|
174
|
+
const result = parser.parse([
|
|
175
|
+
"--log-level",
|
|
176
|
+
"debug",
|
|
177
|
+
"--environment",
|
|
178
|
+
"production",
|
|
179
|
+
]);
|
|
180
|
+
expect(result.flags.logLevel).toBe("debug");
|
|
181
|
+
expect(result.flags.environment).toBe("production");
|
|
182
|
+
});
|
|
183
|
+
test("should leave undefined enum flags as undefined", () => {
|
|
184
|
+
const parser = new ArgParser({
|
|
185
|
+
schema: schemaWithEnum,
|
|
186
|
+
helpMessage: "",
|
|
187
|
+
version: "",
|
|
188
|
+
});
|
|
189
|
+
const result = parser.parse([]);
|
|
190
|
+
expect(result.flags.logLevel).toBeUndefined();
|
|
191
|
+
expect(result.flags.environment).toBeUndefined();
|
|
192
|
+
});
|
|
193
|
+
test("should handle multiple occurrences of same enum flag (last wins)", () => {
|
|
194
|
+
const parser = new ArgParser({
|
|
195
|
+
schema: schemaWithEnum,
|
|
196
|
+
helpMessage: "",
|
|
197
|
+
version: "",
|
|
198
|
+
});
|
|
199
|
+
const result = parser.parse([
|
|
200
|
+
"--log-level",
|
|
201
|
+
"debug",
|
|
202
|
+
"--log-level",
|
|
203
|
+
"error",
|
|
204
|
+
]);
|
|
205
|
+
expect(result.flags.logLevel).toBe("error");
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
describe("string flags", () => {
|
|
209
|
+
test("should parse long string flags with space", () => {
|
|
210
|
+
const parser = new ArgParser({
|
|
211
|
+
schema,
|
|
212
|
+
helpMessage: "",
|
|
213
|
+
version: "",
|
|
214
|
+
});
|
|
215
|
+
const result = parser.parse(["--output", "file.txt"]);
|
|
216
|
+
expect(result.flags.output).toBe("file.txt");
|
|
217
|
+
});
|
|
218
|
+
test("should parse long string flags with equals", () => {
|
|
219
|
+
const parser = new ArgParser({
|
|
220
|
+
schema,
|
|
221
|
+
helpMessage: "",
|
|
222
|
+
version: "",
|
|
223
|
+
});
|
|
224
|
+
const result = parser.parse(["--output=file.txt"]);
|
|
225
|
+
expect(result.flags.output).toBe("file.txt");
|
|
226
|
+
});
|
|
227
|
+
test("should parse short string flags", () => {
|
|
228
|
+
const parser = new ArgParser({
|
|
229
|
+
schema,
|
|
230
|
+
helpMessage: "",
|
|
231
|
+
version: "",
|
|
232
|
+
});
|
|
233
|
+
const result = parser.parse(["-o", "file.txt"]);
|
|
234
|
+
expect(result.flags.output).toBe("file.txt");
|
|
235
|
+
});
|
|
236
|
+
test("should parse short string flags with equals", () => {
|
|
237
|
+
const parser = new ArgParser({
|
|
238
|
+
schema,
|
|
239
|
+
helpMessage: "",
|
|
240
|
+
version: "",
|
|
241
|
+
});
|
|
242
|
+
const result = parser.parse(["-o=file.txt"]);
|
|
243
|
+
expect(result.flags.output).toBe("file.txt");
|
|
244
|
+
});
|
|
245
|
+
test("should handle camelCase to kebab-case for string flags", () => {
|
|
246
|
+
const parser = new ArgParser({
|
|
247
|
+
schema,
|
|
248
|
+
helpMessage: "",
|
|
249
|
+
version: "",
|
|
250
|
+
});
|
|
251
|
+
const result = parser.parse(["--config-file", "config.json"]);
|
|
252
|
+
expect(result.flags.configFile).toBe("config.json");
|
|
253
|
+
});
|
|
254
|
+
test("should throw error when string flag has no value", () => {
|
|
255
|
+
const parser = new ArgParser({
|
|
256
|
+
schema,
|
|
257
|
+
helpMessage: "",
|
|
258
|
+
version: "",
|
|
259
|
+
});
|
|
260
|
+
expect(() => parser.parse(["--output"])).toThrow();
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
describe("input arguments", () => {
|
|
264
|
+
test("should collect non-flag arguments as input", () => {
|
|
265
|
+
const parser = new ArgParser({
|
|
266
|
+
schema,
|
|
267
|
+
helpMessage: "",
|
|
268
|
+
version: "",
|
|
269
|
+
});
|
|
270
|
+
const result = parser.parse(["arg1", "arg2", "arg3"]);
|
|
271
|
+
expect(result.input).toEqual(["arg1", "arg2", "arg3"]);
|
|
272
|
+
});
|
|
273
|
+
test("should collect input after flags", () => {
|
|
274
|
+
const parser = new ArgParser({
|
|
275
|
+
schema,
|
|
276
|
+
helpMessage: "",
|
|
277
|
+
version: "",
|
|
278
|
+
});
|
|
279
|
+
const result = parser.parse(["--verbose", "arg1", "arg2"]);
|
|
280
|
+
expect(result.flags.verbose).toBe(true);
|
|
281
|
+
expect(result.input).toEqual(["arg1", "arg2"]);
|
|
282
|
+
});
|
|
283
|
+
test("should handle -- separator", () => {
|
|
284
|
+
const parser = new ArgParser({
|
|
285
|
+
schema,
|
|
286
|
+
helpMessage: "",
|
|
287
|
+
version: "",
|
|
288
|
+
});
|
|
289
|
+
const result = parser.parse(["--verbose", "--", "--output", "file.txt"]);
|
|
290
|
+
expect(result.flags.verbose).toBe(true);
|
|
291
|
+
expect(result.flags.output).toBeUndefined();
|
|
292
|
+
expect(result.input).toEqual(["--output", "file.txt"]);
|
|
293
|
+
});
|
|
294
|
+
test("should collect everything after -- as input", () => {
|
|
295
|
+
const schemaWithoutConflicts = defineSchema({
|
|
296
|
+
force: { type: "boolean" },
|
|
297
|
+
});
|
|
298
|
+
const parser = new ArgParser({
|
|
299
|
+
schema: schemaWithoutConflicts,
|
|
300
|
+
helpMessage: "",
|
|
301
|
+
version: "",
|
|
302
|
+
});
|
|
303
|
+
const result = parser.parse(["--", "--force"]);
|
|
304
|
+
expect(result.input).toEqual(["--force"]);
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
describe("mixed arguments", () => {
|
|
308
|
+
test("should parse mixed flags and input", () => {
|
|
309
|
+
const parser = new ArgParser({
|
|
310
|
+
schema,
|
|
311
|
+
helpMessage: "",
|
|
312
|
+
version: "",
|
|
313
|
+
});
|
|
314
|
+
const result = parser.parse([
|
|
315
|
+
"--verbose",
|
|
316
|
+
"--output",
|
|
317
|
+
"file.txt",
|
|
318
|
+
"input1",
|
|
319
|
+
"--force",
|
|
320
|
+
"input2",
|
|
321
|
+
]);
|
|
322
|
+
expect(result.flags.verbose).toBe(true);
|
|
323
|
+
expect(result.flags.output).toBe("file.txt");
|
|
324
|
+
expect(result.flags.force).toBe(true);
|
|
325
|
+
expect(result.input).toEqual(["input1", "input2"]);
|
|
326
|
+
});
|
|
327
|
+
test("should handle multiple flags with equals syntax", () => {
|
|
328
|
+
const parser = new ArgParser({
|
|
329
|
+
schema,
|
|
330
|
+
helpMessage: "",
|
|
331
|
+
version: "",
|
|
332
|
+
});
|
|
333
|
+
const result = parser.parse([
|
|
334
|
+
"--verbose",
|
|
335
|
+
"--output=out.txt",
|
|
336
|
+
"--config-file=config.json",
|
|
337
|
+
]);
|
|
338
|
+
expect(result.flags.verbose).toBe(true);
|
|
339
|
+
expect(result.flags.output).toBe("out.txt");
|
|
340
|
+
expect(result.flags.configFile).toBe("config.json");
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
describe("error handling", () => {
|
|
344
|
+
test("should throw error for unknown long flags", () => {
|
|
345
|
+
const parser = new ArgParser({
|
|
346
|
+
schema,
|
|
347
|
+
helpMessage: "",
|
|
348
|
+
version: "",
|
|
349
|
+
});
|
|
350
|
+
expect(() => parser.parse(["--unknown"])).toThrow("Unknown option: --unknown");
|
|
351
|
+
});
|
|
352
|
+
test("should throw error for unknown short flags", () => {
|
|
353
|
+
const parser = new ArgParser({
|
|
354
|
+
schema,
|
|
355
|
+
helpMessage: "",
|
|
356
|
+
version: "",
|
|
357
|
+
});
|
|
358
|
+
expect(() => parser.parse(["-x"])).toThrow("Unknown option: -x");
|
|
359
|
+
});
|
|
360
|
+
test("should throw error when string flag requires value", () => {
|
|
361
|
+
const parser = new ArgParser({
|
|
362
|
+
schema,
|
|
363
|
+
helpMessage: "",
|
|
364
|
+
version: "",
|
|
365
|
+
});
|
|
366
|
+
expect(() => parser.parse(["--output"])).toThrow("Flag --output requires a value");
|
|
367
|
+
});
|
|
368
|
+
});
|
|
369
|
+
describe("edge cases", () => {
|
|
370
|
+
test("should handle empty args array", () => {
|
|
371
|
+
const parser = new ArgParser({
|
|
372
|
+
schema,
|
|
373
|
+
helpMessage: "",
|
|
374
|
+
version: "",
|
|
375
|
+
});
|
|
376
|
+
const result = parser.parse([]);
|
|
377
|
+
expect(result.input).toEqual([]);
|
|
378
|
+
expect(result.flags.verbose).toBeUndefined();
|
|
379
|
+
});
|
|
380
|
+
test("should handle flags with empty string values", () => {
|
|
381
|
+
const parser = new ArgParser({
|
|
382
|
+
schema,
|
|
383
|
+
helpMessage: "",
|
|
384
|
+
version: "",
|
|
385
|
+
});
|
|
386
|
+
const result = parser.parse(["--output="]);
|
|
387
|
+
expect(result.flags.output).toBe("");
|
|
388
|
+
});
|
|
389
|
+
test("should handle multiple occurrences of same flag (last wins)", () => {
|
|
390
|
+
const parser = new ArgParser({
|
|
391
|
+
schema,
|
|
392
|
+
helpMessage: "",
|
|
393
|
+
version: "",
|
|
394
|
+
});
|
|
395
|
+
const result = parser.parse([
|
|
396
|
+
"--output",
|
|
397
|
+
"first.txt",
|
|
398
|
+
"--output",
|
|
399
|
+
"second.txt",
|
|
400
|
+
]);
|
|
401
|
+
expect(result.flags.output).toBe("second.txt");
|
|
402
|
+
});
|
|
403
|
+
});
|
|
404
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|