diff --git a/.changeset/gorgeous-cycles-sell.md b/.changeset/gorgeous-cycles-sell.md new file mode 100644 index 000000000..a845151cc --- /dev/null +++ b/.changeset/gorgeous-cycles-sell.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/packages/cli/test/fixtures/e2e/cli-extension-exit-code/package-lock.json b/packages/cli/test/fixtures/e2e/cli-extension-exit-code/package-lock.json new file mode 100644 index 000000000..842115486 --- /dev/null +++ b/packages/cli/test/fixtures/e2e/cli-extension-exit-code/package-lock.json @@ -0,0 +1,32 @@ +{ + "name": "cli-extension-exit-code", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "cli-extension-fail": "file:../cli-extension-fail" + } + }, + "../cli-extension-fail": { + "bin": { + "vercel-fail": "bin.js" + } + }, + "../cli-extension-whoami": { + "extraneous": true, + "bin": { + "vercel-mywhoami": "bin.js" + } + }, + "node_modules/cli-extension-fail": { + "resolved": "../cli-extension-fail", + "link": true + } + }, + "dependencies": { + "cli-extension-fail": { + "version": "file:../cli-extension-fail" + } + } +} diff --git a/packages/cli/test/fixtures/e2e/cli-extension-exit-code/package.json b/packages/cli/test/fixtures/e2e/cli-extension-exit-code/package.json new file mode 100644 index 000000000..f2343d467 --- /dev/null +++ b/packages/cli/test/fixtures/e2e/cli-extension-exit-code/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "dependencies": { + "cli-extension-fail": "file:../cli-extension-fail" + } +} diff --git a/packages/cli/test/fixtures/e2e/cli-extension-fail/bin.js b/packages/cli/test/fixtures/e2e/cli-extension-fail/bin.js new file mode 100755 index 000000000..6081d3dcd --- /dev/null +++ b/packages/cli/test/fixtures/e2e/cli-extension-fail/bin.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +process.exit(6); diff --git a/packages/cli/test/fixtures/e2e/cli-extension-fail/package.json b/packages/cli/test/fixtures/e2e/cli-extension-fail/package.json new file mode 100644 index 000000000..f62ea0f30 --- /dev/null +++ b/packages/cli/test/fixtures/e2e/cli-extension-fail/package.json @@ -0,0 +1,6 @@ +{ + "name": "cli-extension-fail", + "bin": { + "vercel-fail": "bin.js" + } +} diff --git a/packages/cli/test/integration-3.test.ts b/packages/cli/test/integration-3.test.ts index d4c5529d6..c09ccad38 100644 --- a/packages/cli/test/integration-3.test.ts +++ b/packages/cli/test/integration-3.test.ts @@ -1327,6 +1327,19 @@ test('should invoke CLI extension', async () => { expect(output.stdout, formatted).toContain(`Username: ${contextName}`); }); +test('should pass through exit code for CLI extension', async () => { + const fixture = path.join(__dirname, 'fixtures/e2e/cli-extension-exit-code'); + + // Ensure the `.bin` is populated in the fixture + await runNpmInstall(fixture); + + const output = await execCli(binaryPath, ['fail'], { + cwd: fixture, + reject: false, + }); + expect(output.exitCode).toEqual(6); +}); + // NOTE: Order matters here. This must be the last test in the file. test('default command should prompt login with empty auth.json', async () => { await clearAuthConfig();