@@ -15,8 +15,11 @@ import {
1515
1616jest . mock ( "os" , ( ) => {
1717 const actualOs = jest . requireActual ( "os" ) ;
18+ const isAvailableParallelism =
19+ typeof actualOs . availableParallelism !== "undefined" ;
1820
1921 const mocked = {
22+ availableParallelism : isAvailableParallelism ? jest . fn ( ( ) => 4 ) : undefined ,
2023 cpus : jest . fn ( ( ) => {
2124 return { length : 4 } ;
2225 } ) ,
@@ -53,6 +56,14 @@ jest.mock("jest-worker", () => {
5356
5457const workerPath = require . resolve ( "../src/minify" ) ;
5558
59+ const getParallelism = ( ) => {
60+ if ( typeof os . availableParallelism !== "undefined" ) {
61+ return os . availableParallelism ( ) ;
62+ }
63+
64+ return os . cpus ( ) . length ;
65+ } ;
66+
5667describe ( "parallel option" , ( ) => {
5768 let compiler ;
5869
@@ -77,7 +88,7 @@ describe("parallel option", () => {
7788 expect ( Worker ) . toHaveBeenCalledTimes ( 1 ) ;
7889 expect ( Worker ) . toHaveBeenLastCalledWith ( workerPath , {
7990 enableWorkerThreads : ENABLE_WORKER_THREADS ,
80- numWorkers : os . cpus ( ) . length - 1 ,
91+ numWorkers : getParallelism ( ) - 1 ,
8192 } ) ;
8293 expect ( workerTransform ) . toHaveBeenCalledTimes (
8394 Object . keys ( stats . compilation . assets ) . length
@@ -109,7 +120,27 @@ describe("parallel option", () => {
109120 expect ( Worker ) . toHaveBeenCalledTimes ( 1 ) ;
110121 expect ( Worker ) . toHaveBeenLastCalledWith ( workerPath , {
111122 enableWorkerThreads : ENABLE_WORKER_THREADS ,
112- numWorkers : Math . min ( 4 , os . cpus ( ) . length - 1 ) ,
123+ numWorkers : getParallelism ( ) - 1 ,
124+ } ) ;
125+ expect ( workerTransform ) . toHaveBeenCalledTimes (
126+ Object . keys ( stats . compilation . assets ) . length
127+ ) ;
128+ expect ( workerEnd ) . toHaveBeenCalledTimes ( 1 ) ;
129+
130+ expect ( readsAssets ( compiler , stats ) ) . toMatchSnapshot ( "assets" ) ;
131+ expect ( getErrors ( stats ) ) . toMatchSnapshot ( "errors" ) ;
132+ expect ( getWarnings ( stats ) ) . toMatchSnapshot ( "warnings" ) ;
133+ } ) ;
134+
135+ it ( 'should match snapshot for the "undefined" value' , async ( ) => {
136+ new TerserPlugin ( { parallel : undefined } ) . apply ( compiler ) ;
137+
138+ const stats = await compile ( compiler ) ;
139+
140+ expect ( Worker ) . toHaveBeenCalledTimes ( 1 ) ;
141+ expect ( Worker ) . toHaveBeenLastCalledWith ( workerPath , {
142+ enableWorkerThreads : ENABLE_WORKER_THREADS ,
143+ numWorkers : getParallelism ( ) - 1 ,
113144 } ) ;
114145 expect ( workerTransform ) . toHaveBeenCalledTimes (
115146 Object . keys ( stats . compilation . assets ) . length
0 commit comments