@@ -6,6 +6,7 @@ test('uses write mode by default', () => {
66 mode : 'write' ,
77 patterns : [ ] ,
88 parallel : true ,
9+ maxWorkers : undefined ,
910 help : false ,
1011 } ) ;
1112} ) ;
@@ -20,6 +21,7 @@ test.each([
2021 mode,
2122 patterns : [ ] ,
2223 parallel : true ,
24+ maxWorkers : undefined ,
2325 help : false ,
2426 } ) ;
2527} ) ;
@@ -29,17 +31,54 @@ test.each(['--no-parallel', '--noParallel'])('disables parallel execution with %
2931 mode : 'write' ,
3032 patterns : [ ] ,
3133 parallel : false ,
34+ maxWorkers : undefined ,
3235 help : false ,
3336 } ) ;
3437} ) ;
3538
39+ test . each ( [ '--parallel-workers' , '--parallelWorkers' ] ) (
40+ 'configures parallel worker count with %s' ,
41+ ( option ) => {
42+ expect ( parseFmtCLIArgs ( [ option , '3' ] ) ) . toEqual ( {
43+ mode : 'write' ,
44+ patterns : [ ] ,
45+ parallel : true ,
46+ maxWorkers : 3 ,
47+ help : false ,
48+ } ) ;
49+ } ,
50+ ) ;
51+
52+ test . each ( [ '0' , '-1' , '1.5' , 'invalid' , '9007199254740992' ] ) (
53+ 'rejects invalid parallel worker count %s' ,
54+ ( count ) => {
55+ expect ( ( ) => parseFmtCLIArgs ( [ `--parallel-workers=${ count } ` ] ) ) . toThrow (
56+ 'The --parallel-workers option must be a positive integer.' ,
57+ ) ;
58+ } ,
59+ ) ;
60+
61+ test ( 'prefers the kebab-case parallel worker option' , ( ) => {
62+ expect ( parseFmtCLIArgs ( [ '--parallel-workers' , '2' , '--parallelWorkers' , '3' ] ) . maxWorkers ) . toBe ( 2 ) ;
63+ } ) ;
64+
65+ test . each ( [
66+ [ '--no-parallel' , '--parallel-workers' ] ,
67+ [ '--noParallel' , '--parallelWorkers' ] ,
68+ ] ) ( 'rejects conflicting parallel options: %s and %s' , ( noParallel , maxWorkersOption ) => {
69+ expect ( ( ) => parseFmtCLIArgs ( [ noParallel , maxWorkersOption , '2' ] ) ) . toThrow (
70+ 'The --parallel-workers and --no-parallel options cannot be used together.' ,
71+ ) ;
72+ } ) ;
73+
3674test ( 'preserves file paths and globs' , ( ) => {
3775 const patterns = [ 'src/file with spaces.ts' , 'src/**/*.{js,ts}' , '!src/generated/**' ] ;
3876
3977 expect ( parseFmtCLIArgs ( [ patterns [ 0 ] , '--check' , ...patterns . slice ( 1 ) ] ) ) . toEqual ( {
4078 mode : 'check' ,
4179 patterns,
4280 parallel : true ,
81+ maxWorkers : undefined ,
4382 help : false ,
4483 } ) ;
4584} ) ;
@@ -49,6 +88,7 @@ test('treats arguments after the terminator as paths', () => {
4988 mode : 'check' ,
5089 patterns : [ '--write' , '--help' ] ,
5190 parallel : true ,
91+ maxWorkers : undefined ,
5292 help : false ,
5393 } ) ;
5494} ) ;
@@ -63,6 +103,7 @@ test('provides command help', () => {
63103 expect ( fmtHelpMessage ) . toContain ( '--check' ) ;
64104 expect ( fmtHelpMessage ) . toContain ( '--list-different' ) ;
65105 expect ( fmtHelpMessage ) . toContain ( '--no-parallel' ) ;
106+ expect ( fmtHelpMessage ) . toContain ( '--parallel-workers <count>' ) ;
66107 expect ( fmtHelpMessage ) . toContain ( '-h, --help' ) ;
67108} ) ;
68109
@@ -78,9 +119,6 @@ test.each([
78119 ) ;
79120} ) ;
80121
81- test . each ( [ '--unknown' , '--no-cache' , '--parallel-workers' ] ) (
82- 'rejects unsupported option %s' ,
83- ( option ) => {
84- expect ( ( ) => parseFmtCLIArgs ( [ option ] ) ) . toThrow ( ) ;
85- } ,
86- ) ;
122+ test . each ( [ '--unknown' , '--no-cache' ] ) ( 'rejects unsupported option %s' , ( option ) => {
123+ expect ( ( ) => parseFmtCLIArgs ( [ option ] ) ) . toThrow ( ) ;
124+ } ) ;
0 commit comments