From 43e0fa8b322cfec9ba37c4a427f476a7334b250b Mon Sep 17 00:00:00 2001 From: feng Date: Fri, 1 Apr 2022 13:03:22 +0800 Subject: [PATCH] optimize message --- e2e/__tests__/selectProjects.test.ts | 46 ++++++++++++++++++- packages/jest-core/src/cli/index.ts | 7 ++- .../jest-core/src/getSelectProjectsMessage.ts | 31 +++++++++++-- 3 files changed, 76 insertions(+), 8 deletions(-) diff --git a/e2e/__tests__/selectProjects.test.ts b/e2e/__tests__/selectProjects.test.ts index a7d040e0b2e5..2928fc8c2b18 100644 --- a/e2e/__tests__/selectProjects.test.ts +++ b/e2e/__tests__/selectProjects.test.ts @@ -187,10 +187,52 @@ describe('Given a config with two named projects, first-project and second-proje it('fails', () => { expect(result).toHaveProperty('failed', true); }); - // FIXME(F3n67u) it.skip('prints that no project was found', () => { expect(result.stdout).toMatch( - /^You provided values for --selectProjects but no projects were found matching the selection/, + /^You provided values for --ignoreProjects, but no projects were found matching the selection/, + ); + }); + }); + + describe('when Jest is started with `--selectProjects first-project second-project --ignoreProjects first-project` ', () => { + let result: RunJestJsonResult; + beforeAll(() => { + result = runWithJson('select-projects', [ + '--selectProjects', + 'first-project', + 'second-project', + '--ignoreProjects', + 'first-project', + ]); + }); + it('runs the tests in the second project only', () => { + expect(result.json).toHaveProperty('success', true); + expect(result.json).toHaveProperty('numTotalTests', 1); + expect(result.json.testResults.map(({name}) => name)).toEqual([ + resolve(dir, '__tests__/second-project.test.js'), + ]); + }); + it('prints that only second-project will run', () => { + expect(result.stderr).toMatch(/^Running one project: second-project/); + }); + }); + + describe('when Jest is started with `--selectProjects first-project --ignoreProjects first-project` ', () => { + let result: RunJestResult; + beforeAll(() => { + result = run('select-projects', [ + '--selectProjects', + 'first-project', + '--ignoreProjects', + 'first-project', + ]); + }); + it('fails', () => { + expect(result).toHaveProperty('failed', true); + }); + it.skip('prints that no project was found', () => { + expect(result.stdout).toMatch( + /^You provided values for --selectProjects and --ignoreProjects, but no projects were found matching the selection./, ); }); }); diff --git a/packages/jest-core/src/cli/index.ts b/packages/jest-core/src/cli/index.ts index f3e4c33bcbaf..b7727a263b93 100644 --- a/packages/jest-core/src/cli/index.ts +++ b/packages/jest-core/src/cli/index.ts @@ -83,7 +83,12 @@ export async function runCLI( if (namesMissingWarning) { outputStream.write(namesMissingWarning); } - outputStream.write(getSelectProjectsMessage(configsOfProjectsToRun)); + outputStream.write( + getSelectProjectsMessage(configsOfProjectsToRun, { + ignoreProjects: argv.ignoreProjects, + selectProjects: argv.selectProjects, + }), + ); } await _run10000( diff --git a/packages/jest-core/src/getSelectProjectsMessage.ts b/packages/jest-core/src/getSelectProjectsMessage.ts index 0d52568eef84..b8a3a9f40c88 100644 --- a/packages/jest-core/src/getSelectProjectsMessage.ts +++ b/packages/jest-core/src/getSelectProjectsMessage.ts @@ -11,17 +11,38 @@ import getProjectDisplayName from './getProjectDisplayName'; export default function getSelectProjectsMessage( projectConfigs: Array, + opts: { + ignoreProjects: Array | undefined; + selectProjects: Array | undefined; + }, ): string { if (projectConfigs.length === 0) { - return getNoSelectionWarning(); + return getNoSelectionWarning(opts); } return getProjectsRunningMessage(projectConfigs); } -function getNoSelectionWarning(): string { - return chalk.yellow( - 'You provided values for --selectProjects but no projects were found matching the selection.\n', - ); +function getNoSelectionWarning(opts: { + ignoreProjects: Array | undefined; + selectProjects: Array | undefined; +}): string { + if (opts.ignoreProjects && opts.selectProjects) { + return chalk.yellow( + 'You provided values for --selectProjects and --ignoreProjects, but no projects were found matching the selection.\n' + + 'Are you ignoring all the selected projects?\n', + ); + } else if (opts.ignoreProjects) { + return chalk.yellow( + 'You provided values for --ignoreProjects, but no projects were found matching the selection.\n' + + 'Are you ignoring all projects?\n', + ); + } else if (opts.selectProjects) { + return chalk.yellow( + 'You provided values for --selectProjects but no projects were found matching the selection.\n', + ); + } else { + return chalk.yellow('No projects were found.\n'); + } } function getProjectsRunningMessage(