Skip to content

Commit 76ff717

Browse files
committed
test: fix testcase
1 parent 8aa49e9 commit 76ff717

4 files changed

Lines changed: 71 additions & 53 deletions

File tree

packages/file-service/__tests__/node/file-node-watcher.test.ts

Lines changed: 69 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import * as fse from 'fs-extra';
22
import temp from 'temp';
33

4-
import { FileUri, sleep } from '@opensumi/ide-core-node';
4+
import { Disposable, FileUri, sleep } from '@opensumi/ide-core-node';
55
import { createNodeInjector } from '@opensumi/ide-dev-tool/src/mock-injector';
66

77
import { DidFilesChangedParams, FileChangeType } from '../../src/common/index';
8+
import { FileChangeCollectionManager, FileChangeCollectionManagerOptions } from '../../src/node/file-change-collection';
89
import { UnRecursiveFileSystemWatcher } from '../../src/node/un-recursive/file-service-watcher';
910

1011
const sleepTime = 1000;
@@ -14,18 +15,29 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
1415
async function generateWatcher() {
1516
const injector = createNodeInjector([]);
1617
const root = FileUri.create(fse.realpathSync(await temp.mkdir('unRecursive-test')));
18+
injector.addProviders({
19+
token: FileChangeCollectionManagerOptions,
20+
useValue: { debounceTimeout: 0 },
21+
});
22+
const fileChangeCollectionManager = injector.get(FileChangeCollectionManager);
1723
const watcherServer = injector.get(UnRecursiveFileSystemWatcher);
1824
fse.mkdirpSync(FileUri.fsPath(root.resolve('for_rename_folder')));
1925
fse.writeFileSync(FileUri.fsPath(root.resolve('for_rename')), 'rename');
20-
await watcherServer.watchFileChanges(root.toString());
21-
return { root, watcherServer };
26+
const watcherId = await watcherServer.watchFileChanges(root.toString());
27+
28+
const setClient = (client: { onDidFilesChanged: (event: DidFilesChangedParams) => void }) =>
29+
watcherServer.addDispose(fileChangeCollectionManager.setClientForTest(watcherId, client));
30+
watcherServer.addDispose(
31+
Disposable.create(() => {
32+
// eslint-disable-next-line no-console
33+
console.log('dispose watcher id', watcherId);
34+
watcherServer.unwatchFileChanges(watcherId);
35+
}),
36+
);
37+
return { root, watcherServer, setClient };
2238
}
23-
const watcherServerList: UnRecursiveFileSystemWatcher[] = [];
24-
afterAll(async () => {
39+
afterAll(() => {
2540
track.cleanupSync();
26-
watcherServerList.forEach((watcherServer) => {
27-
watcherServer.dispose();
28-
});
2941
});
3042
it('Rename the files under the folder', async () => {
3143
const addUris = new Set<string>();
@@ -43,8 +55,8 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
4355
});
4456
},
4557
};
46-
const { root, watcherServer } = await generateWatcher();
47-
watcherServer.setClient(watcherClient);
58+
const { root, watcherServer, setClient } = await generateWatcher();
59+
setClient(watcherClient);
4860

4961
const expectedAddUris = [root.resolve('for_rename_renamed').toString()];
5062

@@ -54,7 +66,7 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
5466
await sleep(sleepTime);
5567
expect([...addUris]).toEqual(expectedAddUris);
5668
expect([...deleteUris]).toEqual(expectedDeleteUris);
57-
watcherServerList.push(watcherServer);
69+
watcherServer.dispose();
5870
});
5971
it('Add the files under the folder', async () => {
6072
const addUris = new Set<string>();
@@ -72,8 +84,8 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
7284
});
7385
},
7486
};
75-
const { root, watcherServer } = await generateWatcher();
76-
watcherServer.setClient(watcherClient);
87+
const { root, watcherServer, setClient } = await generateWatcher();
88+
setClient(watcherClient);
7789

7890
const expectedAddUris = [root.resolve('README.md').toString()];
7991

@@ -84,7 +96,7 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
8496

8597
expect(Array.from(addUris)).toEqual(expectedAddUris);
8698
expect(Array.from(deleteUris)).toEqual(expectedDeleteUris);
87-
watcherServerList.push(watcherServer);
99+
watcherServer.dispose();
88100
});
89101
it('Update the files under the folder', async () => {
90102
const updatedUris = new Set<string>();
@@ -101,15 +113,15 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
101113
});
102114
},
103115
};
104-
const { root, watcherServer } = await generateWatcher();
105-
watcherServer.setClient(watcherClient);
116+
const { root, watcherServer, setClient } = await generateWatcher();
117+
setClient(watcherClient);
106118
const expectedDeleteUris = [];
107119
const expectedUpdatedUris = [root.resolve('for_rename').toString()];
108120
fse.writeFileSync(root.resolve('for_rename').codeUri.fsPath.toString(), '');
109121
await sleep(sleepTime);
110122
expect(Array.from(updatedUris)).toEqual(expectedUpdatedUris);
111123
expect(Array.from(deleteUris)).toEqual(expectedDeleteUris);
112-
watcherServerList.push(watcherServer);
124+
watcherServer.dispose();
113125
});
114126
it('Delete the files under the folder', async () => {
115127
const addUris = new Set<string>();
@@ -127,16 +139,17 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
127139
});
128140
},
129141
};
130-
const { root, watcherServer } = await generateWatcher();
131-
watcherServer.setClient(watcherClient);
142+
const { root, watcherServer, setClient } = await generateWatcher();
143+
setClient(watcherClient);
144+
132145
const expectedDeleteUris = [root.resolve('for_rename').toString()];
133146
const expectedAddUris = [];
134147
await fse.unlink(root.resolve('for_rename').codeUri.fsPath.toString());
135148
await sleep(sleepTime);
136149

137150
expect(Array.from(addUris)).toEqual(expectedAddUris);
138151
expect(Array.from(deleteUris)).toEqual(expectedDeleteUris);
139-
watcherServerList.push(watcherServer);
152+
watcherServer.dispose();
140153
});
141154
it('Rename the watched folder', async () => {
142155
const addUris = new Set<string>();
@@ -154,8 +167,8 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
154167
});
155168
},
156169
};
157-
const { root, watcherServer } = await generateWatcher();
158-
watcherServer.setClient(watcherClient);
170+
const { root, watcherServer, setClient } = await generateWatcher();
171+
setClient(watcherClient);
159172

160173
const expectedAddUris = [];
161174
const expectedDeleteUris = [];
@@ -168,7 +181,7 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
168181

169182
expect([...addUris]).toEqual(expectedAddUris);
170183
expect([...deleteUris]).toEqual(expectedDeleteUris);
171-
watcherServerList.push(watcherServer);
184+
watcherServer.dispose();
172185
});
173186
it('Add the watched folder', async () => {
174187
const addUris = new Set<string>();
@@ -185,8 +198,8 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
185198
});
186199
},
187200
};
188-
const { root, watcherServer } = await generateWatcher();
189-
watcherServer.setClient(watcherClient);
201+
const { root, watcherServer, setClient } = await generateWatcher();
202+
setClient(watcherClient);
190203

191204
const expectedAddUris = [];
192205

@@ -197,7 +210,7 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
197210

198211
expect(Array.from(addUris)).toEqual(expectedAddUris);
199212
expect(Array.from(deleteUris)).toEqual(expectedDeleteUris);
200-
watcherServerList.push(watcherServer);
213+
watcherServer.dispose();
201214
});
202215

203216
it('Delete the watched folder', async () => {
@@ -216,16 +229,17 @@ describe('unRecursively watch for folder additions, deletions, rename,and update
216229
});
217230
},
218231
};
219-
const { root, watcherServer } = await generateWatcher();
220-
watcherServer.setClient(watcherClient);
232+
const { root, watcherServer, setClient } = await generateWatcher();
233+
setClient(watcherClient);
234+
221235
const expectedDeleteUris = [];
222236
const expectedAddUris = [];
223237
await fse.remove(root.resolve('for_rename_folder').codeUri.fsPath.toString());
224238
await sleep(sleepTime);
225239

226240
expect(Array.from(addUris)).toEqual(expectedAddUris);
227241
expect(Array.from(deleteUris)).toEqual(expectedDeleteUris);
228-
watcherServerList.push(watcherServer);
242+
watcherServer.dispose();
229243
});
230244
});
231245

@@ -234,17 +248,30 @@ describe('Delete and update monitored files', () => {
234248
async function generateWatcher() {
235249
const injector = createNodeInjector([]);
236250
const root = FileUri.create(fse.realpathSync(await temp.mkdir('unRecursive-test')));
251+
252+
injector.addProviders({
253+
token: FileChangeCollectionManagerOptions,
254+
useValue: { debounceTimeout: 0 },
255+
});
256+
const fileChangeCollectionManager = injector.get(FileChangeCollectionManager);
257+
237258
const watcherServer = injector.get(UnRecursiveFileSystemWatcher);
238259
fse.writeFileSync(FileUri.fsPath(root.resolve('for_rename')), 'rename');
239-
await watcherServer.watchFileChanges(root.toString() + '/for_rename');
240-
return { root, watcherServer };
260+
const watcherId = await watcherServer.watchFileChanges(root.toString() + '/for_rename');
261+
const setClient = (client: { onDidFilesChanged: (event: DidFilesChangedParams) => void }) =>
262+
watcherServer.addDispose(fileChangeCollectionManager.setClientForTest(watcherId, client));
263+
watcherServer.addDispose(
264+
Disposable.create(() => {
265+
// eslint-disable-next-line no-console
266+
console.log('dispose watcher id', watcherId);
267+
watcherServer.unwatchFileChanges(watcherId);
268+
}),
269+
);
270+
return { root, watcherServer, setClient };
241271
}
242-
const watcherServerList: UnRecursiveFileSystemWatcher[] = [];
243-
afterAll(async () => {
272+
273+
afterAll(() => {
244274
track.cleanupSync();
245-
watcherServerList.forEach((watcherServer) => {
246-
watcherServer.dispose();
247-
});
248275
});
249276

250277
it('Delete watched files', async () => {
@@ -263,8 +290,8 @@ describe('Delete and update monitored files', () => {
263290
});
264291
},
265292
};
266-
const { root, watcherServer } = await generateWatcher();
267-
watcherServer.setClient(watcherClient);
293+
const { root, watcherServer, setClient } = await generateWatcher();
294+
setClient(watcherClient);
268295

269296
const expectedDeleteUris = [root.resolve('for_rename').toString()];
270297

@@ -273,7 +300,7 @@ describe('Delete and update monitored files', () => {
273300
await sleep(sleepTime);
274301
expect(Array.from(addUris)).toEqual(expectedAddUris);
275302
expect(Array.from(deleteUris)).toEqual(expectedDeleteUris);
276-
watcherServerList.push(watcherServer);
303+
watcherServer.dispose();
277304
});
278305

279306
it('Update watched files', async () => {
@@ -292,14 +319,14 @@ describe('Delete and update monitored files', () => {
292319
});
293320
},
294321
};
295-
const { root, watcherServer } = await generateWatcher();
296-
watcherServer.setClient(watcherClient);
322+
const { root, watcherServer, setClient } = await generateWatcher();
323+
setClient(watcherClient);
297324
const expectedDeleteUris = [];
298325
const expectedUpdatedUris = [root.resolve('for_rename').toString()];
299326
await fse.writeFile(root.resolve('for_rename').codeUri.fsPath.toString(), 'for');
300327
await sleep(sleepTime);
301328
expect(Array.from(updatedUris)).toEqual(expectedUpdatedUris);
302329
expect(Array.from(deleteUris)).toEqual(expectedDeleteUris);
303-
watcherServerList.push(watcherServer);
330+
watcherServer.dispose();
304331
});
305332
});

packages/file-service/__tests__/node/file-service-watcher.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ jest.setTimeout(10000000);
201201
watcherServer.addDispose(
202202
Disposable.create(() => {
203203
// eslint-disable-next-line no-console
204-
console.log('dispose watcher id', watcherId);
204+
console.log('terminate watcher id', watcherId);
205205
watcherServer.terminateWatcher(watcherId);
206206
}),
207207
);

packages/file-service/src/node/un-recursive/file-service-watcher.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,4 @@ export class UnRecursiveFileSystemWatcher extends Disposable implements IFileSys
207207
}
208208
return Promise.resolve();
209209
}
210-
211-
/**
212-
* @deprecated Just for test compatibility
213-
*
214-
* please use `FileChangeCollectionManager.onFileChange` instead.
215-
*/
216-
setClient(client: FileSystemWatcherClient | undefined) {
217-
this.fileChangeCollectionManager.setClient(client);
218-
}
219210
}

packages/utils/src/platform.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ if (_isNative) {
122122
}
123123

124124
export const isWindows = _isWindows;
125-
export const isMacintosh = false;
125+
export const isMacintosh = _isMacintosh;
126126
export const isOSX = _isMacintosh;
127127
export const isLinux = _isLinux;
128128
export const isNative = _isNative;

0 commit comments

Comments
 (0)