1- import { exec } from 'node:child_process' ;
1+ import { exec , spawn } from 'node:child_process' ;
22import path from 'node:path' ;
3+ import { after } from 'node:test' ;
34import fse from 'fs-extra' ;
45import { awaitFileChanges , awaitFileExists } from 'test-helper' ;
56import { describe , expect , test } from 'vitest' ;
@@ -59,46 +60,63 @@ describe('build --watch should handle add / change / unlink', async () => {
5960 const tempSrcPath = path . join ( __dirname , 'test-temp-src' ) ;
6061 await fse . remove ( tempSrcPath ) ;
6162 await fse . remove ( path . join ( __dirname , 'dist' ) ) ;
62- await fse . copy ( path . join ( __dirname , 'src' ) , tempSrcPath ) ;
63+ await fse . copy ( path . join ( __dirname , 'src' ) , path . resolve ( tempSrcPath ) ) ;
6364 const tempConfigFile = path . join ( __dirname , 'test-temp-rslib.config.mjs' ) ;
6465 await fse . remove ( tempConfigFile ) ;
6566 fse . outputFileSync (
6667 tempConfigFile ,
6768 `import { defineConfig } from '@rslib/core';
68- import { generateBundleEsmConfig } from 'test-helper';
69+ import { generateBundleEsmConfig, generateBundleCjsConfig } from 'test-helper';
6970
7071 export default defineConfig({
7172 lib: [
7273 generateBundleEsmConfig({
73- source: {
74- entry: {
75- index: 'test-temp-src',
76- },
77- },
74+ bundle: false,
75+ }),
76+ generateBundleCjsConfig({
7877 bundle: false,
7978 }),
8079 ],
80+ source: {
81+ entry: {
82+ index: ['./test-temp-src/**'],
83+ },
84+ },
8185 });
8286 ` ,
8387 ) ;
8488
8589 const srcIndexFile = path . join ( tempSrcPath , 'index.ts' ) ;
86- const srcFooFile = path . join ( tempSrcPath , 'foo.js' ) ;
90+ const srcFooFile = path . join ( tempSrcPath , 'foo.ts' ) ;
91+ const srcFoo2File = path . join ( tempSrcPath , 'foo2.ts' ) ;
92+ const distIndexFile = path . join ( __dirname , 'dist/esm/index.js' ) ;
8793 const distFooFile = path . join ( __dirname , 'dist/esm/foo.js' ) ;
94+ const distFoo2File = path . join ( __dirname , 'dist/esm/foo2.js' ) ;
8895
89- const process = exec ( `npx rslib build --watch -c ${ tempConfigFile } ` , {
96+ const command = 'npx' ;
97+ const args = [ 'rslib' , 'build' , '--watch' , '-c' , tempConfigFile ] ;
98+ const child = spawn ( command , args , {
9099 cwd : __dirname ,
100+ stdio : 'inherit' ,
91101 } ) ;
92102
93- // add
103+ await awaitFileExists ( distIndexFile ) ;
104+
94105 fse . outputFileSync ( srcFooFile , `export const foo = 'foo';` ) ;
95- await awaitFileExists ( distFooFile ) ;
106+ fse . outputFileSync ( srcFoo2File , `export const foo2 = 'foo2';` ) ;
107+ await awaitFileExists ( distFoo2File ) ;
96108 const content1 = await fse . readFile ( distFooFile , 'utf-8' ) ;
97109 expect ( content1 ! ) . toMatchInlineSnapshot ( `
98110 "const foo = 'foo';
99111 export { foo };
100112 "
101113 ` ) ;
114+ const content2 = await fse . readFile ( distFoo2File , 'utf-8' ) ;
115+ expect ( content2 ! ) . toMatchInlineSnapshot ( `
116+ "const foo2 = 'foo2';
117+ export { foo2 };
118+ "
119+ ` ) ;
102120
103121 // unlink
104122 // Following "change" cases won't succeed if error is thrown in this step.
@@ -108,13 +126,15 @@ describe('build --watch should handle add / change / unlink', async () => {
108126 const wait = await awaitFileChanges ( distFooFile ) ;
109127 fse . outputFileSync ( srcFooFile , `export const foo = 'foo1';` ) ;
110128 await wait ( ) ;
111- const content2 = await fse . readFile ( distFooFile , 'utf-8' ) ;
112- expect ( content2 ! ) . toMatchInlineSnapshot ( `
129+ const content3 = await fse . readFile ( distFooFile , 'utf-8' ) ;
130+ expect ( content3 ! ) . toMatchInlineSnapshot ( `
113131 "const foo = 'foo1';
114132 export { foo };
115133 "
116134 ` ) ;
117135
118- process . kill ( ) ;
136+ after ( ( ) => {
137+ child . kill ( ) ;
138+ } ) ;
119139 } ) ;
120140} ) ;
0 commit comments