diff --git a/CHANGELOG.md b/CHANGELOG.md index 84b399654913..fad4f1f48409 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixes +- [jest-cli, jest-config, jest-types] Move all default values into `jest-config` ([#XXXX](https://github.com/facebook/jest/pull/XXXX)) + ### Chore & Maintenance ### Performance diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index de5859887d1d..4907c80be177 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -19,7 +19,6 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "is-ci": "^2.0.0", "jest-config": "^25.5.1", "jest-util": "^25.5.0", "jest-validate": "^25.5.0", @@ -31,7 +30,6 @@ "@jest/test-utils": "^25.5.0", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.3", - "@types/is-ci": "^2.0.0", "@types/prompts": "^2.0.1", "@types/yargs": "^15.0.0" }, diff --git a/packages/jest-cli/src/cli/args.ts b/packages/jest-cli/src/cli/args.ts index b368e8a5830d..9bba3287dbaf 100644 --- a/packages/jest-cli/src/cli/args.ts +++ b/packages/jest-cli/src/cli/args.ts @@ -7,7 +7,6 @@ import type {Config} from '@jest/types'; import {constants, isJSONString} from 'jest-config'; -import isCI = require('is-ci'); export function check(argv: Config.Argv): true { if (argv.runInBand && argv.hasOwnProperty('maxWorkers')) { @@ -75,9 +74,9 @@ export const usage = 'Usage: $0 [--config=] [TestPathPattern]'; export const docs = 'Documentation: https://jestjs.io/'; +// The default values are all set in jest-config export const options = { all: { - default: undefined, description: 'The opposite of `onlyChanged`. If `onlyChanged` is set by ' + 'default, running jest with `--all` will force Jest to run all tests ' + @@ -85,19 +84,16 @@ export const options = { type: 'boolean', }, automock: { - default: undefined, description: 'Automock all files by default.', type: 'boolean', }, bail: { alias: 'b', - default: undefined, description: 'Exit the test suite immediately after `n` number of failing tests.', type: 'boolean', }, browser: { - default: undefined, description: 'Respect the "browser" field in package.json ' + 'when resolving modules. Some packages export different versions ' + @@ -105,7 +101,6 @@ export const options = { type: 'boolean', }, cache: { - default: undefined, description: 'Whether to use the transform cache. Disable the cache ' + 'using --no-cache.', @@ -118,7 +113,6 @@ export const options = { type: 'string', }, changedFilesWithAncestor: { - default: undefined, description: 'Runs tests related to the current changes and the changes made in the ' + 'last commit. Behaves similarly to `--onlyChanged`.', @@ -133,7 +127,6 @@ export const options = { type: 'string', }, ci: { - default: isCI, description: 'Whether to run Jest in continuous integration (CI) mode. ' + 'This option is on by default in most popular CI environments. It will ' + @@ -141,21 +134,18 @@ export const options = { type: 'boolean', }, clearCache: { - default: undefined, description: 'Clears the configured Jest cache directory and then exits. ' + 'Default directory can be found by calling jest --showConfig', type: 'boolean', }, clearMocks: { - default: undefined, description: 'Automatically clear mock calls and instances between every ' + 'test. Equivalent to calling jest.clearAllMocks() between each test.', type: 'boolean', }, collectCoverage: { - default: undefined, description: 'Alias for --coverage.', type: 'boolean', }, @@ -171,14 +161,12 @@ export const options = { type: 'array', }, color: { - default: undefined, description: 'Forces test results output color highlighting (even if ' + 'stdout is not a TTY). Set to false if you would like to have no colors.', type: 'boolean', }, colors: { - default: undefined, description: 'Alias for `--color`.', type: 'boolean', }, @@ -192,7 +180,6 @@ export const options = { type: 'string', }, coverage: { - default: undefined, description: 'Indicates that test coverage information should be ' + 'collected and reported in the output.', @@ -228,12 +215,10 @@ export const options = { type: 'string', }, debug: { - default: undefined, description: 'Print debugging info about your jest config.', type: 'boolean', }, detectLeaks: { - default: false, description: '**EXPERIMENTAL**: Detect memory leaks in tests. After executing a ' + 'test, it will try to garbage collect the global object used, and fail ' + @@ -241,7 +226,6 @@ export const options = { type: 'boolean', }, detectOpenHandles: { - default: false, description: 'Print out remaining open handles preventing Jest from exiting at the ' + 'end of a test run. Implies `runInBand`.', @@ -255,18 +239,15 @@ export const options = { type: 'string', }, errorOnDeprecated: { - default: false, description: 'Make calling deprecated APIs throw helpful error messages.', type: 'boolean', }, expand: { alias: 'e', - default: undefined, description: 'Use this flag to show full diffs instead of a patch.', type: 'boolean', }, filter: { - default: undefined, description: 'Path to a module exporting a filtering function. This method receives ' + 'a list of tests which can be manipulated to exclude tests from ' + @@ -275,7 +256,6 @@ export const options = { type: 'string', }, findRelatedTests: { - default: undefined, description: 'Find related tests for a list of source files that were ' + 'passed in as arguments. Useful for pre-commit hook integration to run ' + @@ -283,7 +263,6 @@ export const options = { type: 'boolean', }, forceExit: { - default: undefined, description: 'Force Jest to exit after all tests have completed running. ' + 'This is useful when resources set up by test code cannot be ' + @@ -314,21 +293,18 @@ export const options = { type: 'boolean', }, json: { - default: undefined, description: 'Prints the test results in JSON. This mode will send all ' + 'other test output and user messages to stderr.', type: 'boolean', }, lastCommit: { - default: undefined, description: 'Run all tests affected by file changes in the last commit made. ' + 'Behaves similarly to `--onlyChanged`.', type: 'boolean', }, listTests: { - default: false, description: 'Lists all tests Jest will run given the arguments and ' + 'exits. Most useful in a CI system together with `--findRelatedTests` ' + @@ -336,7 +312,6 @@ export const options = { type: 'boolean', }, logHeapUsage: { - default: undefined, description: 'Logs the heap usage after every test. Useful to debug ' + 'memory leaks. Use together with `--runInBand` and `--expose-gc` in ' + @@ -344,14 +319,12 @@ export const options = { type: 'boolean', }, mapCoverage: { - default: undefined, description: 'Maps code coverage reports against original source code ' + 'when transformers supply source maps.\n\nDEPRECATED', type: 'boolean', }, maxConcurrency: { - default: 5, description: 'Specifies the maximum number of tests that are allowed to run' + 'concurrently. This only affects tests using `test.concurrent`.', @@ -405,23 +378,19 @@ export const options = { type: 'array', }, noStackTrace: { - default: undefined, description: 'Disables stack trace in test results output', type: 'boolean', }, notify: { - default: undefined, description: 'Activates notifications for test results.', type: 'boolean', }, notifyMode: { - default: 'failure-change', description: 'Specifies when notifications will appear for test results.', type: 'string', }, onlyChanged: { alias: 'o', - default: undefined, description: 'Attempts to identify which tests to run based on which ' + "files have changed in the current repository. Only works if you're " + @@ -430,7 +399,6 @@ export const options = { }, onlyFailures: { alias: 'f', - default: undefined, description: 'Run tests that failed in the previous execution.', type: 'boolean', }, @@ -441,7 +409,6 @@ export const options = { type: 'string', }, passWithNoTests: { - default: false, description: 'Will not fail if no tests are found (for example while using `--testPathPattern`.)', type: 'boolean', @@ -451,7 +418,6 @@ export const options = { type: 'string', }, prettierPath: { - default: undefined, description: 'The path to the "prettier" module used for inline snapshots.', type: 'string', }, @@ -468,14 +434,12 @@ export const options = { type: 'array', }, resetMocks: { - default: undefined, description: 'Automatically reset mock state between every test. ' + 'Equivalent to calling jest.resetAllMocks() between each test.', type: 'boolean', }, resetModules: { - default: undefined, description: 'If enabled, the module registry for every test file will ' + 'be reset before running each individual test.', @@ -486,7 +450,6 @@ export const options = { type: 'string', }, restoreMocks: { - default: undefined, description: 'Automatically restore mock state and implementation between every test. ' + 'Equivalent to calling jest.restoreAllMocks() between each test.', @@ -507,7 +470,6 @@ export const options = { }, runInBand: { alias: 'i', - default: undefined, description: 'Run all tests serially in the current process (rather than ' + 'creating a worker pool of child processes that run tests). This ' + @@ -516,7 +478,6 @@ export const options = { type: 'boolean', }, runTestsByPath: { - default: false, description: 'Used when provided patterns are exact file paths. This avoids ' + 'converting them into a regular expression and matching it against ' + @@ -543,17 +504,14 @@ export const options = { type: 'array', }, showConfig: { - default: undefined, description: 'Print your jest config and then exits.', type: 'boolean', }, silent: { - default: undefined, description: 'Prevent tests from printing messages through the console.', type: 'boolean', }, skipFilter: { - default: undefined, description: 'Disables the filter provided by --filter. Useful for CI jobs, or ' + 'local enforcement when fixing tests.', @@ -581,7 +539,6 @@ export const options = { type: 'string', // number }, testLocationInResults: { - default: false, description: 'Add `location` information to the test results', type: 'boolean', }, @@ -674,7 +631,6 @@ export const options = { }, updateSnapshot: { alias: 'u', - default: undefined, description: 'Use this flag to re-record snapshots. ' + 'Can be used together with a test suite pattern or with ' + @@ -683,24 +639,20 @@ export const options = { type: 'boolean', }, useStderr: { - default: undefined, description: 'Divert all output to stderr.', type: 'boolean', }, verbose: { - default: undefined, description: 'Display individual test results with the test suite hierarchy.', type: 'boolean', }, version: { alias: 'v', - default: undefined, description: 'Print the version and exit', type: 'boolean', }, watch: { - default: undefined, description: 'Watch files for changes and rerun tests related to ' + 'changed files. If you want to re-run all tests when a file has ' + @@ -708,7 +660,6 @@ export const options = { type: 'boolean', }, watchAll: { - default: undefined, description: 'Watch files for changes and rerun all tests. If you want ' + 'to re-run only the tests related to the changed files, use the ' + @@ -724,7 +675,6 @@ export const options = { type: 'array', }, watchman: { - default: undefined, description: 'Whether to use watchman for file crawling. Disable using ' + '--no-watchman.', diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index 7fb5c835b078..e9f717c8ec34 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -25,6 +25,7 @@ "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", "jest-environment-jsdom": "^25.5.0", "jest-environment-node": "^25.5.0", "jest-get-type": "^25.2.6", @@ -41,6 +42,7 @@ "@types/babel__core": "^7.0.4", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.3", + "@types/is-ci": "^2.0.0", "@types/micromatch": "^4.0.0" }, "engines": { diff --git a/packages/jest-config/src/Defaults.ts b/packages/jest-config/src/Defaults.ts index 6cdc3cbe8a01..4ba662e8db8b 100644 --- a/packages/jest-config/src/Defaults.ts +++ b/packages/jest-config/src/Defaults.ts @@ -6,6 +6,7 @@ */ import type {Config} from '@jest/types'; +import isCI = require('is-ci'); import {replacePathSepForRegex} from 'jest-regex-util'; import {NODE_MODULES} from './constants'; import getCacheDirectory from './getCacheDirectory'; @@ -19,11 +20,14 @@ const defaultOptions: Config.DefaultOptions = { cache: true, cacheDirectory: getCacheDirectory(), changedFilesWithAncestor: false, + ci: isCI, clearMocks: false, collectCoverage: false, coveragePathIgnorePatterns: [NODE_MODULES_REGEXP], coverageProvider: 'babel', coverageReporters: ['json', 'text', 'lcov', 'clover'], + detectLeaks: false, + detectOpenHandles: false, errorOnDeprecated: false, expand: false, forceCoverageMatch: [], @@ -33,6 +37,7 @@ const defaultOptions: Config.DefaultOptions = { providesModuleNodeModules: [], throwOnModuleCollision: false, }, + listTests: false, maxConcurrency: 5, maxWorkers: '50%', moduleDirectories: ['node_modules'], @@ -42,6 +47,7 @@ const defaultOptions: Config.DefaultOptions = { noStackTrace: false, notify: false, notifyMode: 'failure-change', + passWithNoTests: false, prettierPath: 'prettier', resetMocks: false, resetModules: false, diff --git a/packages/jest-config/src/ValidConfig.ts b/packages/jest-config/src/ValidConfig.ts index de566c08c036..063c9ceebe60 100644 --- a/packages/jest-config/src/ValidConfig.ts +++ b/packages/jest-config/src/ValidConfig.ts @@ -20,6 +20,7 @@ const initialOptions: Config.InitialOptions = { cacheDirectory: '/tmp/user/jest', changedFilesWithAncestor: false, changedSince: 'master', + ci: false, clearMocks: false, collectCoverage: true, collectCoverageFrom: ['src', '!public'], @@ -43,6 +44,8 @@ const initialOptions: Config.InitialOptions = { color: 'blue', name: 'test-config', } as const), + detectLeaks: false, + detectOpenHandles: false, errorOnDeprecated: false, expand: false, extraGlobals: [], @@ -63,6 +66,7 @@ const initialOptions: Config.InitialOptions = { json: false, lastCommit: false, logHeapUsage: true, + listTests: false, maxConcurrency: 5, maxWorkers: '50%', moduleDirectories: ['node_modules'], @@ -78,6 +82,7 @@ const initialOptions: Config.InitialOptions = { notify: false, notifyMode: 'failure-change', onlyChanged: false, + passWithNoTests: false, preset: 'react-native', prettierPath: '/node_modules/prettier', projects: ['project-a', 'project-b/'], diff --git a/packages/jest-types/src/Config.ts b/packages/jest-types/src/Config.ts index 6c5ab99f1a26..45a0e2fb15a0 100644 --- a/packages/jest-types/src/Config.ts +++ b/packages/jest-types/src/Config.ts @@ -38,6 +38,7 @@ export type DefaultOptions = { cache: boolean; cacheDirectory: Path; changedFilesWithAncestor: boolean; + ci: boolean; clearMocks: boolean; collectCoverage: boolean; coveragePathIgnorePatterns: Array; @@ -48,6 +49,7 @@ export type DefaultOptions = { forceCoverageMatch: Array; globals: ConfigGlobals; haste: HasteConfig; + listTests: boolean; maxConcurrency: number; maxWorkers: number | string; moduleDirectories: Array; @@ -57,6 +59,7 @@ export type DefaultOptions = { noStackTrace: boolean; notify: boolean; notifyMode: NotifyMode; + passWithNoTests: boolean; prettierPath: string; resetMocks: boolean; resetModules: boolean; @@ -102,6 +105,7 @@ export type InitialOptions = Partial<{ browser: boolean; cache: boolean; cacheDirectory: Path; + ci: boolean; clearMocks: boolean; changedFilesWithAncestor: boolean; changedSince: string;