Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: set chalk.level manually to prevent FORCE_COLOR leaks #14396

Closed
wants to merge 11 commits into from
Closed
Prev Previous commit
Next Next commit
refactor(jest-worker): use colorLevel util
aweebit committed Aug 10, 2023
commit b7ad2344230d01ec53f5de523dc46fdc18aa706b
3 changes: 1 addition & 2 deletions packages/jest-worker/package.json
Original file line number Diff line number Diff line change
@@ -19,8 +19,7 @@
"dependencies": {
"@types/node": "*",
"jest-util": "workspace:^",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
"merge-stream": "^2.0.0"
},
"devDependencies": {
"@babel/core": "^7.11.6",
10 changes: 3 additions & 7 deletions packages/jest-worker/src/WorkerPool.ts
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/

import {stdout as stdoutSupportsColor} from 'supports-color';
import {colorLevel} from 'jest-util';
import BaseWorkerPool from './base/BaseWorkerPool';
import type {
ChildMessage,
@@ -30,17 +30,13 @@ class WorkerPool extends BaseWorkerPool implements WorkerPoolInterface {
}

override createWorker(workerOptions: WorkerOptions): WorkerInterface {
const JEST_WORKER_COLOR = stdoutSupportsColor
? String(stdoutSupportsColor.level)
: '0';
const JEST_WORKER_ID = String(workerOptions.workerId + 1); // 0-indexed workerId, 1-indexed JEST_WORKER_ID
workerOptions = {...workerOptions};
workerOptions.forkOptions = {...workerOptions.forkOptions};
workerOptions.forkOptions.env ??= process.env;
workerOptions.forkOptions.env = {
...workerOptions.forkOptions.env,
JEST_WORKER_COLOR,
JEST_WORKER_ID,
JEST_WORKER_COLOR: String(colorLevel.stdout),
JEST_WORKER_ID: String(workerOptions.workerId + 1), // 0-indexed workerId, 1-indexed JEST_WORKER_ID
};

let Worker;
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@
import {EventEmitter} from 'events';
import {PassThrough} from 'stream';
import getStream = require('get-stream');
import * as supportsColor from 'supports-color';
import {colorLevel} from 'jest-util';
import {
CHILD_MESSAGE_CALL,
CHILD_MESSAGE_INITIALIZE,
@@ -86,9 +86,7 @@ it('passes fork options down to child_process.fork, adding the defaults', () =>
cwd: '/tmp', // Overridden default option.
env: {
...process.env,
JEST_WORKER_COLOR: supportsColor.stdout
? String(supportsColor.stdout.level)
: '0',
JEST_WORKER_COLOR: String(colorLevel.stdout),
}, // Default option.
execArgv: ['-p'], // Filtered option.
execPath: 'hello', // Added option.
1 change: 0 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
@@ -12998,7 +12998,6 @@ __metadata:
jest-leak-detector: "workspace:^"
jest-util: "workspace:^"
merge-stream: ^2.0.0
supports-color: ^8.0.0
tsd-lite: ^0.7.0
worker-farm: ^1.6.0
languageName: unknown