@@ -10,87 +10,95 @@ import { getRemoveMode, setRemoveMode } from '../src/migrate/shares/reuse';
1010import { TaskRunner } from '../src/migrate/runner/task-runner' ;
1111
1212describe ( 'CLI interface' , ( ) => {
13- it ( 'runs generate-scss command' , ( ) => {
14- const tmpDir = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , 'kolibri-cli-' ) ) ;
15- const cwd = process . cwd ( ) ;
16- process . chdir ( tmpDir ) ;
13+ it ( 'runs generate-scss command' , async ( ) => {
14+ const tmpDir = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , 'kolibri-cli-' ) ) ;
15+ const cwd = process . cwd ( ) ;
16+ process . chdir ( tmpDir ) ;
1717
18- const typedBem = require ( 'typed-bem/scss' ) ;
19- const original = typedBem . generateBemScssFile ;
20- const calls : string [ ] = [ ] ;
21- typedBem . generateBemScssFile = ( _ : unknown , name : string ) => { calls . push ( name ) ; } ;
18+ const typedBem = require ( 'typed-bem/scss' ) ;
19+ const original = typedBem . generateBemScssFile ;
20+ const calls : string [ ] = [ ] ;
21+ typedBem . generateBemScssFile = ( _ : unknown , name : string ) => {
22+ calls . push ( name ) ;
23+ } ;
2224
23- const program = new Command ( ) ;
24- generateScss ( program ) ;
25- program . parse ( [ 'node' , 'cli' , 'generate-scss' ] ) ;
25+ const program = new Command ( ) ;
26+ generateScss ( program ) ;
27+ await program . parseAsync ( [ 'node' , 'cli' , 'generate-scss' ] ) ;
2628
27- typedBem . generateBemScssFile = original ;
28- process . chdir ( cwd ) ;
29+ typedBem . generateBemScssFile = original ;
30+ process . chdir ( cwd ) ;
2931
30- assert . deepStrictEqual ( calls , [ 'alert' , 'icon' ] ) ;
31- } ) ;
32+ assert . deepStrictEqual ( calls , [ 'alert' , 'icon' ] ) ;
33+ } ) ;
3234
33- it ( 'runs info command' , ( ) => {
34- const program = new Command ( ) ;
35- info ( program ) ;
36- let output = '' ;
37- const original = console . log ;
38- console . log = ( str : string ) => { output += str ; } ;
39- program . parse ( [ 'node' , 'cli' , 'info' ] ) ;
40- console . log = original ;
41- assert . ok ( output . includes ( 'Operating System' ) ) ;
42- } ) ;
35+ it ( 'runs info command' , async ( ) => {
36+ const program = new Command ( ) ;
37+ info ( program ) ;
38+ let output = '' ;
39+ const original = console . log ;
40+ console . log = ( str : string ) => {
41+ output += str ;
42+ } ;
43+ await program . parseAsync ( [ 'node' , 'cli' , 'info' ] ) ;
44+ console . log = original ;
45+ assert . ok ( output . includes ( 'Operating System' ) ) ;
46+ } ) ;
4347
44- it ( 'runs migrate command with options' , ( ) => {
45- const tmpDir = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , 'kolibri-cli-' ) ) ;
46- fs . writeFileSync (
47- path . join ( tmpDir , 'package.json' ) ,
48- JSON . stringify ( { dependencies : { '@public-ui/components' : '0.0.0' } , devDependencies : { '@public-ui/kolibri-cli' : '0.0.0' } } ) ,
49- ) ;
50- fs . writeFileSync ( path . join ( tmpDir , 'pnpm-lock.yaml' ) , '' ) ;
51- const cwd = process . cwd ( ) ;
52- process . chdir ( tmpDir ) ;
48+ it ( 'runs migrate command with options' , async ( ) => {
49+ const tmpDir = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , 'kolibri-cli-' ) ) ;
50+ fs . writeFileSync (
51+ path . join ( tmpDir , 'package.json' ) ,
52+ JSON . stringify ( { dependencies : { '@public-ui/components' : '0.0.0' } , devDependencies : { '@public-ui/kolibri-cli' : '0.0.0' } } ) ,
53+ ) ;
54+ fs . writeFileSync ( path . join ( tmpDir , 'pnpm-lock.yaml' ) , '' ) ;
55+ const cwd = process . cwd ( ) ;
5356
54-
55- const childProc = require ( 'child_process' ) ;
56- const execOrig = childProc . exec ;
57- ( childProc as any ) . exec = ( _ : string , cb : ( err : null , out : string ) => void ) => cb ( null , '' ) ;
57+ try {
58+ process . chdir ( tmpDir ) ;
5859
59- let runCalled = false ;
60- const runOrig = TaskRunner . prototype . run ;
61- TaskRunner . prototype . run = function ( ) {
62- runCalled = true ;
63- } ;
64- const getStatusOrig = TaskRunner . prototype . getStatus ;
65- TaskRunner . prototype . getStatus = ( ) => ( { total : 0 , done : 0 , pending : 0 , nextVersion : '0.0.0' , config : { migrate : { tasks : { } } } } ) ;
66- const getPendingOrig = TaskRunner . prototype . getPendingMinVersion ;
67- TaskRunner . prototype . getPendingMinVersion = ( ) => '0.0.0' ;
60+ const childProc = require ( 'child_process' ) ;
61+ const execOrig = childProc . exec ;
62+ ( childProc as any ) . exec = ( _ : string , cb : ( err : null , out : string ) => void ) => cb ( null , '' ) ;
6863
69- const program = new Command ( ) ;
70- migrate ( program ) ;
71- program . parse ( [
72- 'node' ,
73- 'cli' ,
74- 'migrate' ,
75- '.' ,
76- '--ignore-uncommitted-changes' ,
77- '--overwrite-current-version' ,
78- '0.0.0' ,
79- '--overwrite-target-version' ,
80- '0.0.0' ,
81- '--remove-mode' ,
82- 'delete' ,
83- '--test-tasks' ,
84- ] ) ;
64+ let runCalled = false ;
65+ const runOrig = TaskRunner . prototype . run ;
66+ TaskRunner . prototype . run = function ( ) {
67+ runCalled = true ;
68+ } ;
69+ const getStatusOrig = TaskRunner . prototype . getStatus ;
70+ TaskRunner . prototype . getStatus = ( ) => ( { total : 0 , done : 0 , pending : 0 , nextVersion : '0.0.0' , config : { migrate : { tasks : { } } } } ) ;
71+ const getPendingOrig = TaskRunner . prototype . getPendingMinVersion ;
72+ TaskRunner . prototype . getPendingMinVersion = ( ) => '0.0.0' ;
8573
86- ( childProc as any ) . exec = execOrig ;
87- TaskRunner . prototype . run = runOrig ;
88- TaskRunner . prototype . getStatus = getStatusOrig ;
89- TaskRunner . prototype . getPendingMinVersion = getPendingOrig ;
90- process . chdir ( cwd ) ;
74+ const program = new Command ( ) ;
75+ migrate ( program ) ;
76+ await program . parseAsync ( [
77+ 'node' ,
78+ 'cli' ,
79+ 'migrate' ,
80+ '.' ,
81+ '--ignore-uncommitted-changes' ,
82+ '--overwrite-current-version' ,
83+ '0.0.0' ,
84+ '--overwrite-target-version' ,
85+ '0.0.0' ,
86+ '--remove-mode' ,
87+ 'delete' ,
88+ '--test-tasks' ,
89+ ] ) ;
9190
92- assert . ok ( runCalled ) ;
93- assert . equal ( getRemoveMode ( ) , 'delete' ) ;
94- setRemoveMode ( 'prefix' ) ;
95- } ) ;
91+ ( childProc as any ) . exec = execOrig ;
92+ TaskRunner . prototype . run = runOrig ;
93+ TaskRunner . prototype . getStatus = getStatusOrig ;
94+ TaskRunner . prototype . getPendingMinVersion = getPendingOrig ;
95+
96+ assert . ok ( runCalled ) ;
97+ assert . equal ( getRemoveMode ( ) , 'delete' ) ;
98+ setRemoveMode ( 'prefix' ) ;
99+ } finally {
100+ // Always restore working directory
101+ process . chdir ( cwd ) ;
102+ }
103+ } ) ;
96104} ) ;
0 commit comments