Add new Jest --compact-console flag for DevTools tests (#22495)

This commit is contained in:
Brian Vaughn 2021-10-05 11:58:54 -04:00 committed by GitHub
parent f2c381131f
commit cadf94df1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 0 deletions

View File

@ -7,11 +7,31 @@
* @flow * @flow
*/ */
import {CustomConsole} from '@jest/console';
import type { import type {
BackendBridge, BackendBridge,
FrontendBridge, FrontendBridge,
} from 'react-devtools-shared/src/bridge'; } from 'react-devtools-shared/src/bridge';
// Argument is serialized when passed from jest-cli script through to setupTests.
const compactConsole = process.env.compactConsole === 'true';
if (compactConsole) {
const formatter = (type, message) => {
switch (type) {
case 'error':
return '\x1b[31m' + message + '\x1b[0m';
case 'warn':
return '\x1b[33m' + message + '\x1b[0m';
case 'log':
default:
return message;
}
};
global.console = new CustomConsole(process.stdout, process.stderr, formatter);
}
const env = jasmine.getEnv(); const env = jasmine.getEnv();
env.beforeEach(() => { env.beforeEach(() => {
global.mockClipboardCopy = jest.fn(); global.mockClipboardCopy = jest.fn();

View File

@ -97,6 +97,13 @@ const argv = yargs
requiresArg: true, requiresArg: true,
type: 'string', type: 'string',
}, },
compactConsole: {
alias: 'c',
describe: 'Compact console output (hide file locations).',
requiresArg: false,
type: 'boolean',
default: false,
},
}).argv; }).argv;
function logError(message) { function logError(message) {
@ -159,6 +166,11 @@ function validateOptions() {
logError('DevTool tests require --build.'); logError('DevTool tests require --build.');
success = false; success = false;
} }
} else {
if (argv.compactConsole) {
logError('Only DevTool tests support compactConsole flag.');
success = false;
}
} }
if (isWWWConfig()) { if (isWWWConfig()) {
@ -284,6 +296,10 @@ function getEnvars() {
RELEASE_CHANNEL: argv.releaseChannel.match(/modern|experimental/) RELEASE_CHANNEL: argv.releaseChannel.match(/modern|experimental/)
? 'experimental' ? 'experimental'
: 'stable', : 'stable',
// Pass this flag through to the confit environment
// so the base config can conditionally load the console setup file.
compactConsole: argv.compactConsole,
}; };
if (argv.prod) { if (argv.prod) {
@ -306,7 +322,9 @@ function main() {
console.log(chalk.red(`\nPlease run: \`${argv.deprecated}\` instead.\n`)); console.log(chalk.red(`\nPlease run: \`${argv.deprecated}\` instead.\n`));
return; return;
} }
validateOptions(); validateOptions();
const args = getCommandArgs(); const args = getCommandArgs();
const envars = getEnvars(); const envars = getEnvars();
const env = Object.entries(envars).map(([k, v]) => `${k}=${v}`); const env = Object.entries(envars).map(([k, v]) => `${k}=${v}`);
@ -334,6 +352,7 @@ function main() {
stdio: 'inherit', stdio: 'inherit',
env: {...envars, ...process.env}, env: {...envars, ...process.env},
}); });
// Ensure we close our process when we get a failure case. // Ensure we close our process when we get a failure case.
jest.on('close', code => { jest.on('close', code => {
// Forward the exit code from the Jest process. // Forward the exit code from the Jest process.