From 56b735a3eab2415b8a6766378359b9e95d26e504 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 4 Aug 2026 22:18:11 +0800 Subject: [PATCH] fix(fmt): error when no files match --- packages/rstack/src/fmt/cli.ts | 8 +++++--- packages/rstack/tests/cli/fmt/index.test.ts | 21 ++++++++++----------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/rstack/src/fmt/cli.ts b/packages/rstack/src/fmt/cli.ts index ab56529..9abd0de 100644 --- a/packages/rstack/src/fmt/cli.ts +++ b/packages/rstack/src/fmt/cli.ts @@ -243,9 +243,11 @@ const runFmtCLI = async (args: string[]): Promise => { }); if (files.length === 0) { - if (mode !== 'list-different') { - logger.info('No files matched.'); - } + const targets = (patterns.length ? patterns : ['.']) + .map((pattern) => color.cyan(JSON.stringify(pattern))) + .join(', '); + logger.error(`No supported files matched ${targets}, or all matching files were ignored.`); + process.exitCode = 2; return; } diff --git a/packages/rstack/tests/cli/fmt/index.test.ts b/packages/rstack/tests/cli/fmt/index.test.ts index 75aef5e..285b5d2 100644 --- a/packages/rstack/tests/cli/fmt/index.test.ts +++ b/packages/rstack/tests/cli/fmt/index.test.ts @@ -585,16 +585,15 @@ test('writes nothing for empty stdin', () => { expect(result.stderr).toBe(''); }); -test('reports when no files match', () => { - const writeResult = runFmt(['missing/**/*.ts']); +test('returns exit code 2 when no files match', () => { + for (const modeArgs of [[], ['--check'], ['--list-different']]) { + const result = runFmt([...modeArgs, 'missing/**/*.ts']); - expect(writeResult.status).toBe(0); - expect(writeResult.stdout).toBe('info No files matched.\n'); - expect(writeResult.stderr).toBe(''); - - const checkResult = runFmt(['--check', 'missing/**/*.ts']); - - expect(checkResult.status).toBe(0); - expect(checkResult.stdout).toBe('info No files matched.\n'); - expect(checkResult.stderr).toBe(''); + expect(result.status).toBe(2); + expect(result.stdout).toBe(''); + expect(result.stderr).toContain( + 'No supported files matched "missing/**/*.ts", or all matching files were ignored.', + ); + expect(result.stderr).not.toContain('\n at '); + } });