@@ -426,15 +426,14 @@ test('putout: parseOptions: read rules: error', (t) => {
426426 t . end ( ) ;
427427} ) ;
428428
429- test ( 'putout: parseOptions: readOptions: error ' , ( t ) => {
429+ test ( 'putout: parseOptions: readOptions: do not returns dir, load rules can not read ' , ( t ) => {
430430 const empty = { } ;
431431
432432 const readHomeOptions = stub ( ) . returns ( empty ) ;
433433 const readCodeMods = stub ( ) . returns ( empty ) ;
434- const sync = stub ( ) ;
434+ const readOptions = stub ( ) . returns ( [ '' , empty ] ) ;
435435
436436 mockRequire ( '../../putout.json' , empty ) ;
437- mockRequire ( 'find-up' , { sync} ) ;
438437
439438 const { readdirSync} = fs ;
440439 fs . readdirSync = ( ) => {
@@ -459,6 +458,7 @@ test('putout: parseOptions: readOptions: error', (t) => {
459458 options,
460459 readHomeOptions,
461460 readCodeMods,
461+ readOptions,
462462 rulesdir : '.' ,
463463 } ) ;
464464
@@ -486,6 +486,7 @@ test('putout: parseOptions: readOptions: .putout.json', (t) => {
486486
487487 const readHomeOptions = stub ( ) . returns ( empty ) ;
488488 const readCodeMods = stub ( ) . returns ( empty ) ;
489+ const readOptions = stub ( ) . returns ( [ '../..' , { } ] ) ;
489490 const sync = ( a ) => {
490491 if ( a === '.putout.json' )
491492 return '../../putout.json' ;
@@ -519,6 +520,7 @@ test('putout: parseOptions: readOptions: .putout.json', (t) => {
519520 options,
520521 readHomeOptions,
521522 readCodeMods,
523+ readOptions,
522524 rulesdir : '.' ,
523525 } ) ;
524526
@@ -541,21 +543,14 @@ test('putout: parseOptions: readOptions: .putout.json', (t) => {
541543 t . end ( ) ;
542544} ) ;
543545
544- test ( 'putout: parseOptions: readOptions: package.json ' , ( t ) => {
546+ test ( 'putout: parseOptions: can not readd dir ' , ( t ) => {
545547 const empty = { } ;
546548
547549 const readHomeOptions = stub ( ) . returns ( empty ) ;
548550 const readCodeMods = stub ( ) . returns ( empty ) ;
549- const sync = ( a ) => {
550- if ( a === 'package.json' )
551- return './package.json' ;
552-
553- return null ;
554- } ;
551+ const readOptions = stub ( ) . returns ( [ '.' , empty ] ) ;
555552
556553 mockRequire ( '../../putout.json' , empty ) ;
557- mockRequire ( './package.json' , empty ) ;
558- mockRequire ( 'find-up' , { sync} ) ;
559554
560555 const { readdirSync} = fs ;
561556 fs . readdirSync = ( ) => {
@@ -580,6 +575,7 @@ test('putout: parseOptions: readOptions: package.json', (t) => {
580575 options,
581576 readHomeOptions,
582577 readCodeMods,
578+ readOptions,
583579 rulesdir : '.' ,
584580 } ) ;
585581
@@ -671,10 +667,12 @@ test('putout: parseOptions: readHomeOptions', (t) => {
671667test ( 'putout: parseOptions: no args' , ( t ) => {
672668 const empty = { } ;
673669 const { homedir} = os ;
670+ const read = stub ( ) . returns ( [ '' , { } ] ) ;
674671 const sync = stub ( ) ;
675672
676673 os . homedir = stub ( ) . returns ( '/' ) ;
677674
675+ mockRequire ( './recursive-read' , read ) ;
678676 mockRequire ( './package.json' , empty ) ;
679677 mockRequire ( '../../putout.json' , empty ) ;
680678 mockRequire ( 'find-up' , {
@@ -696,3 +694,52 @@ test('putout: parseOptions: no args', (t) => {
696694 t . deepEqual ( result , expected ) ;
697695 t . end ( ) ;
698696} ) ;
697+
698+ test ( 'putout: parseOptions: readOptions: package.json' , ( t ) => {
699+ const empty = { } ;
700+
701+ const readHomeOptions = stub ( ) . returns ( empty ) ;
702+ const readCodeMods = stub ( ) . returns ( empty ) ;
703+ const read = stub ( ) . returns ( [ '' , { } ] ) ;
704+
705+ mockRequire ( '../../putout.json' , empty ) ;
706+ mockRequire ( './recursive-read' , read ) ;
707+
708+ const parseOptions = reRequire ( '.' ) ;
709+
710+ const options = {
711+ rules : {
712+ 'remove-only' : 'off' ,
713+ } ,
714+ match : {
715+ '*.spec.js' : {
716+ 'remove-only' : 'on' ,
717+ } ,
718+ } ,
719+ } ;
720+
721+ const result = parseOptions ( {
722+ name : 'parse-options.spec.js' ,
723+ options,
724+ readHomeOptions,
725+ readCodeMods,
726+ } ) ;
727+
728+ delete result . dir ;
729+
730+ const expected = {
731+ match : {
732+ '*.spec.js' : {
733+ 'remove-only' : 'on' ,
734+ } ,
735+ } ,
736+ rules : {
737+ 'remove-only' : 'on' ,
738+ } ,
739+ } ;
740+
741+ stopAll ( ) ;
742+
743+ t . deepEqual ( result , expected ) ;
744+ t . end ( ) ;
745+ } ) ;
0 commit comments