Skip to content

Commit 7a16514

Browse files
committedSep 1, 2023
feat(programmatic): allow passing custom args
1 parent b6714ef commit 7a16514

File tree

3 files changed

+53
-49
lines changed

3 files changed

+53
-49
lines changed
 

‎src/runner.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ export interface RunnerContext {
2424

2525
export type Runner = (agent: Agent, args: string[], ctx?: RunnerContext) => Promise<string | undefined> | string | undefined
2626

27-
export async function runCli(fn: Runner, options: DetectOptions = {}) {
28-
const args = process.argv.slice(2).filter(Boolean)
27+
export async function runCli(fn: Runner, options: DetectOptions & { args?: string[] } = {}) {
28+
const {
29+
args = process.argv.slice(2).filter(Boolean),
30+
} = options
2931
try {
3032
await run(fn, args, options)
3133
}

‎test/programmatic/__snapshots__/runCli.spec.ts.snap

+38-38
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ exports[`lockfile > bun > na run foo 1`] = `"bun run foo"`;
66

77
exports[`lockfile > bun > ni --frozen 1`] = `"bun install --no-save"`;
88

9-
exports[`lockfile > bun > ni -g foo 1`] = `"bun add -g foo"`;
9+
exports[`lockfile > bun > ni -g foo 1`] = `"npm i -g foo"`;
1010

1111
exports[`lockfile > bun > ni 1`] = `"bun install"`;
1212

@@ -20,7 +20,7 @@ exports[`lockfile > bun > nu -i 1`] = `"bun update"`;
2020

2121
exports[`lockfile > bun > nu 1`] = `"bun update"`;
2222

23-
exports[`lockfile > bun > nun -g foo 1`] = `"bun remove -g foo"`;
23+
exports[`lockfile > bun > nun -g foo 1`] = `"npm uninstall -g foo"`;
2424

2525
exports[`lockfile > bun > nun foo 1`] = `"bun remove foo"`;
2626

@@ -54,7 +54,7 @@ exports[`lockfile > pnpm > na run foo 1`] = `"pnpm run foo"`;
5454

5555
exports[`lockfile > pnpm > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;
5656

57-
exports[`lockfile > pnpm > ni -g foo 1`] = `"pnpm add -g foo"`;
57+
exports[`lockfile > pnpm > ni -g foo 1`] = `"npm i -g foo"`;
5858

5959
exports[`lockfile > pnpm > ni 1`] = `"pnpm i"`;
6060

@@ -68,7 +68,7 @@ exports[`lockfile > pnpm > nu -i 1`] = `"pnpm update -i"`;
6868

6969
exports[`lockfile > pnpm > nu 1`] = `"pnpm update"`;
7070

71-
exports[`lockfile > pnpm > nun -g foo 1`] = `"pnpm remove --global foo"`;
71+
exports[`lockfile > pnpm > nun -g foo 1`] = `"npm uninstall -g foo"`;
7272

7373
exports[`lockfile > pnpm > nun foo 1`] = `"pnpm remove foo"`;
7474

@@ -78,7 +78,7 @@ exports[`lockfile > pnpm@6 > na run foo 1`] = `"pnpm run foo"`;
7878

7979
exports[`lockfile > pnpm@6 > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;
8080

81-
exports[`lockfile > pnpm@6 > ni -g foo 1`] = `"pnpm add -g foo"`;
81+
exports[`lockfile > pnpm@6 > ni -g foo 1`] = `"npm i -g foo"`;
8282

8383
exports[`lockfile > pnpm@6 > ni 1`] = `"pnpm i"`;
8484

@@ -92,41 +92,41 @@ exports[`lockfile > pnpm@6 > nu -i 1`] = `"pnpm update -i"`;
9292

9393
exports[`lockfile > pnpm@6 > nu 1`] = `"pnpm update"`;
9494

95-
exports[`lockfile > pnpm@6 > nun -g foo 1`] = `"pnpm remove --global foo"`;
95+
exports[`lockfile > pnpm@6 > nun -g foo 1`] = `"npm uninstall -g foo"`;
9696

9797
exports[`lockfile > pnpm@6 > nun foo 1`] = `"pnpm remove foo"`;
9898

99-
exports[`lockfile > unknown > na 1`] = `"npm"`;
99+
exports[`lockfile > unknown > na 1`] = `"pnpm"`;
100100

101-
exports[`lockfile > unknown > na run foo 1`] = `"npm run foo"`;
101+
exports[`lockfile > unknown > na run foo 1`] = `"pnpm run foo"`;
102102

103-
exports[`lockfile > unknown > ni --frozen 1`] = `"npm ci"`;
103+
exports[`lockfile > unknown > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;
104104

105105
exports[`lockfile > unknown > ni -g foo 1`] = `"npm i -g foo"`;
106106

107-
exports[`lockfile > unknown > ni 1`] = `"npm i"`;
107+
exports[`lockfile > unknown > ni 1`] = `"pnpm i"`;
108108

109-
exports[`lockfile > unknown > ni foo -D 1`] = `"npm i foo -D"`;
109+
exports[`lockfile > unknown > ni foo -D 1`] = `"pnpm add foo -D"`;
110110

111-
exports[`lockfile > unknown > ni foo 1`] = `"npm i foo"`;
111+
exports[`lockfile > unknown > ni foo 1`] = `"pnpm add foo"`;
112112

113-
exports[`lockfile > unknown > nlx 1`] = `"npx foo"`;
113+
exports[`lockfile > unknown > nlx 1`] = `"pnpm dlx foo"`;
114114

115-
exports[`lockfile > unknown > nu -i 1`] = `"Command \\"upgrade-interactive\\" is not support by agent \\"npm\\""`;
115+
exports[`lockfile > unknown > nu -i 1`] = `"pnpm update -i"`;
116116

117-
exports[`lockfile > unknown > nu 1`] = `"npm update"`;
117+
exports[`lockfile > unknown > nu 1`] = `"pnpm update"`;
118118

119119
exports[`lockfile > unknown > nun -g foo 1`] = `"npm uninstall -g foo"`;
120120

121-
exports[`lockfile > unknown > nun foo 1`] = `"npm uninstall foo"`;
121+
exports[`lockfile > unknown > nun foo 1`] = `"pnpm remove foo"`;
122122

123123
exports[`lockfile > yarn > na 1`] = `"yarn"`;
124124

125125
exports[`lockfile > yarn > na run foo 1`] = `"yarn run foo"`;
126126

127127
exports[`lockfile > yarn > ni --frozen 1`] = `"yarn install --frozen-lockfile"`;
128128

129-
exports[`lockfile > yarn > ni -g foo 1`] = `"yarn global add foo"`;
129+
exports[`lockfile > yarn > ni -g foo 1`] = `"npm i -g foo"`;
130130

131131
exports[`lockfile > yarn > ni 1`] = `"yarn install"`;
132132

@@ -140,7 +140,7 @@ exports[`lockfile > yarn > nu -i 1`] = `"yarn upgrade-interactive"`;
140140

141141
exports[`lockfile > yarn > nu 1`] = `"yarn upgrade"`;
142142

143-
exports[`lockfile > yarn > nun -g foo 1`] = `"yarn global remove foo"`;
143+
exports[`lockfile > yarn > nun -g foo 1`] = `"npm uninstall -g foo"`;
144144

145145
exports[`lockfile > yarn > nun foo 1`] = `"yarn remove foo"`;
146146

@@ -150,7 +150,7 @@ exports[`lockfile > yarn@berry > na run foo 1`] = `"yarn run foo"`;
150150

151151
exports[`lockfile > yarn@berry > ni --frozen 1`] = `"yarn install --frozen-lockfile"`;
152152

153-
exports[`lockfile > yarn@berry > ni -g foo 1`] = `"yarn global add foo"`;
153+
exports[`lockfile > yarn@berry > ni -g foo 1`] = `"npm i -g foo"`;
154154

155155
exports[`lockfile > yarn@berry > ni 1`] = `"yarn install"`;
156156

@@ -164,7 +164,7 @@ exports[`lockfile > yarn@berry > nu -i 1`] = `"yarn upgrade-interactive"`;
164164

165165
exports[`lockfile > yarn@berry > nu 1`] = `"yarn upgrade"`;
166166

167-
exports[`lockfile > yarn@berry > nun -g foo 1`] = `"yarn global remove foo"`;
167+
exports[`lockfile > yarn@berry > nun -g foo 1`] = `"npm uninstall -g foo"`;
168168

169169
exports[`lockfile > yarn@berry > nun foo 1`] = `"yarn remove foo"`;
170170

@@ -174,7 +174,7 @@ exports[`packager > bun > na run foo 1`] = `"bun run foo"`;
174174

175175
exports[`packager > bun > ni --frozen 1`] = `"bun install --no-save"`;
176176

177-
exports[`packager > bun > ni -g foo 1`] = `"bun add -g foo"`;
177+
exports[`packager > bun > ni -g foo 1`] = `"npm i -g foo"`;
178178

179179
exports[`packager > bun > ni 1`] = `"bun install"`;
180180

@@ -188,7 +188,7 @@ exports[`packager > bun > nu -i 1`] = `"bun update"`;
188188

189189
exports[`packager > bun > nu 1`] = `"bun update"`;
190190

191-
exports[`packager > bun > nun -g foo 1`] = `"bun remove -g foo"`;
191+
exports[`packager > bun > nun -g foo 1`] = `"npm uninstall -g foo"`;
192192

193193
exports[`packager > bun > nun foo 1`] = `"bun remove foo"`;
194194

@@ -222,7 +222,7 @@ exports[`packager > pnpm > na run foo 1`] = `"pnpm run foo"`;
222222

223223
exports[`packager > pnpm > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;
224224

225-
exports[`packager > pnpm > ni -g foo 1`] = `"pnpm add -g foo"`;
225+
exports[`packager > pnpm > ni -g foo 1`] = `"npm i -g foo"`;
226226

227227
exports[`packager > pnpm > ni 1`] = `"pnpm i"`;
228228

@@ -236,7 +236,7 @@ exports[`packager > pnpm > nu -i 1`] = `"pnpm update -i"`;
236236

237237
exports[`packager > pnpm > nu 1`] = `"pnpm update"`;
238238

239-
exports[`packager > pnpm > nun -g foo 1`] = `"pnpm remove --global foo"`;
239+
exports[`packager > pnpm > nun -g foo 1`] = `"npm uninstall -g foo"`;
240240

241241
exports[`packager > pnpm > nun foo 1`] = `"pnpm remove foo"`;
242242

@@ -246,7 +246,7 @@ exports[`packager > pnpm@6 > na run foo 1`] = `"pnpm run foo"`;
246246

247247
exports[`packager > pnpm@6 > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;
248248

249-
exports[`packager > pnpm@6 > ni -g foo 1`] = `"pnpm add -g foo"`;
249+
exports[`packager > pnpm@6 > ni -g foo 1`] = `"npm i -g foo"`;
250250

251251
exports[`packager > pnpm@6 > ni 1`] = `"pnpm i"`;
252252

@@ -260,41 +260,41 @@ exports[`packager > pnpm@6 > nu -i 1`] = `"pnpm update -i"`;
260260

261261
exports[`packager > pnpm@6 > nu 1`] = `"pnpm update"`;
262262

263-
exports[`packager > pnpm@6 > nun -g foo 1`] = `"pnpm remove --global foo"`;
263+
exports[`packager > pnpm@6 > nun -g foo 1`] = `"npm uninstall -g foo"`;
264264

265265
exports[`packager > pnpm@6 > nun foo 1`] = `"pnpm remove foo"`;
266266

267-
exports[`packager > unknown > na 1`] = `"npm"`;
267+
exports[`packager > unknown > na 1`] = `"pnpm"`;
268268

269-
exports[`packager > unknown > na run foo 1`] = `"npm run foo"`;
269+
exports[`packager > unknown > na run foo 1`] = `"pnpm run foo"`;
270270

271-
exports[`packager > unknown > ni --frozen 1`] = `"npm ci"`;
271+
exports[`packager > unknown > ni --frozen 1`] = `"pnpm i --frozen-lockfile"`;
272272

273273
exports[`packager > unknown > ni -g foo 1`] = `"npm i -g foo"`;
274274

275-
exports[`packager > unknown > ni 1`] = `"npm i"`;
275+
exports[`packager > unknown > ni 1`] = `"pnpm i"`;
276276

277-
exports[`packager > unknown > ni foo -D 1`] = `"npm i foo -D"`;
277+
exports[`packager > unknown > ni foo -D 1`] = `"pnpm add foo -D"`;
278278

279-
exports[`packager > unknown > ni foo 1`] = `"npm i foo"`;
279+
exports[`packager > unknown > ni foo 1`] = `"pnpm add foo"`;
280280

281-
exports[`packager > unknown > nlx 1`] = `"npx foo"`;
281+
exports[`packager > unknown > nlx 1`] = `"pnpm dlx foo"`;
282282

283-
exports[`packager > unknown > nu -i 1`] = `"Command \\"upgrade-interactive\\" is not support by agent \\"npm\\""`;
283+
exports[`packager > unknown > nu -i 1`] = `"pnpm update -i"`;
284284

285-
exports[`packager > unknown > nu 1`] = `"npm update"`;
285+
exports[`packager > unknown > nu 1`] = `"pnpm update"`;
286286

287287
exports[`packager > unknown > nun -g foo 1`] = `"npm uninstall -g foo"`;
288288

289-
exports[`packager > unknown > nun foo 1`] = `"npm uninstall foo"`;
289+
exports[`packager > unknown > nun foo 1`] = `"pnpm remove foo"`;
290290

291291
exports[`packager > yarn > na 1`] = `"yarn"`;
292292

293293
exports[`packager > yarn > na run foo 1`] = `"yarn run foo"`;
294294

295295
exports[`packager > yarn > ni --frozen 1`] = `"yarn install --frozen-lockfile"`;
296296

297-
exports[`packager > yarn > ni -g foo 1`] = `"yarn global add foo"`;
297+
exports[`packager > yarn > ni -g foo 1`] = `"npm i -g foo"`;
298298

299299
exports[`packager > yarn > ni 1`] = `"yarn install"`;
300300

@@ -308,7 +308,7 @@ exports[`packager > yarn > nu -i 1`] = `"yarn upgrade-interactive"`;
308308

309309
exports[`packager > yarn > nu 1`] = `"yarn upgrade"`;
310310

311-
exports[`packager > yarn > nun -g foo 1`] = `"yarn global remove foo"`;
311+
exports[`packager > yarn > nun -g foo 1`] = `"npm uninstall -g foo"`;
312312

313313
exports[`packager > yarn > nun foo 1`] = `"yarn remove foo"`;
314314

‎test/programmatic/runCli.spec.ts

+11-9
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,19 @@ function runCliTest(fixtureName: string, agent: string, runner: Runner, args: st
1515
const fixture = path.join(__dirname, '..', 'fixtures', fixtureName, agent)
1616
await fs.copy(fixture, cwd)
1717

18-
await runCli(async (agent, _, ctx) => {
19-
// we override the args to be test specific
20-
return runner(agent, args, ctx)
21-
}, {
22-
programmatic: true,
23-
cwd,
24-
}).catch((e) => {
25-
// it will always throw if execa is mocked
18+
await runCli(
19+
async (agent, _, ctx) => {
20+
// we override the args to be test specific
21+
return runner(agent, args, ctx)
22+
}, {
23+
programmatic: true,
24+
cwd,
25+
args,
26+
},
27+
).catch((e) => {
28+
// it will always throw if execa is mocked
2629
if (e.command)
2730
expect(e.command).toMatchSnapshot()
28-
2931
else
3032
expect(e.message).toMatchSnapshot()
3133
})

0 commit comments

Comments
 (0)
Please sign in to comment.