test('simple file operations, ignore', async () => { let request: IWatcherRequest = { basePath: testDir, ignored: ['**/b/**', '**/*.js', '.git/**'] }; service.setRoots([request]); await wait(300); assert.equal(service.wacherCount, 1); // create various ignored files let file1 = path.join(bFolder, 'file1.txt'); // hidden await pfs.writeFile(file1, 'Hello'); let file2 = path.join(b2Folder, 'file2.txt'); // hidden await pfs.writeFile(file2, 'Hello'); let folder1 = path.join(bFolder, 'folder1'); // hidden await pfs.mkdirp(folder1); let folder2 = path.join(aFolder, 'b'); // hidden await pfs.mkdirp(folder2); let folder3 = path.join(testDir, '.git'); // hidden await pfs.mkdirp(folder3); let folder4 = path.join(testDir, '.git1'); await pfs.mkdirp(folder4); let folder5 = path.join(aFolder, '.git'); await pfs.mkdirp(folder5); let file3 = path.join(aFolder, 'file3.js'); // hidden await pfs.writeFile(file3, 'var x;'); let file4 = path.join(aFolder, 'file4.txt'); await pfs.writeFile(file4, 'Hello'); await assertFileEvents(result, [{ path: file4, type: FileChangeType.ADDED }, { path: folder4, type: FileChangeType.ADDED }, { path: folder5, type: FileChangeType.ADDED }]); // move some files let movedFile1 = path.join(folder2, 'file1.txt'); // from ignored to ignored await pfs.rename(file1, movedFile1); let movedFile2 = path.join(aFolder, 'file2.txt'); // from ignored to visible await pfs.rename(file2, movedFile2); let movedFile3 = path.join(aFolder, 'file3.txt'); // from ignored file ext to visible await pfs.rename(file3, movedFile3); await assertFileEvents(result, [{ path: movedFile2, type: FileChangeType.ADDED }, { path: movedFile3, type: FileChangeType.ADDED }]); // delete all files await pfs.del(movedFile1); // hidden await pfs.del(movedFile2); await pfs.del(movedFile3); await pfs.del(folder1); // hidden await pfs.del(folder2); // hidden await pfs.del(folder3); // hidden await pfs.del(folder4); await pfs.del(folder5); await pfs.del(file4); await assertFileEvents(result, [{ path: movedFile2, type: FileChangeType.DELETED }, { path: movedFile3, type: FileChangeType.DELETED }, { path: file4, type: FileChangeType.DELETED }, { path: folder4, type: FileChangeType.DELETED }, { path: folder5, type: FileChangeType.DELETED }]); });
test('simple file operations, nested roots', async () => { let request1: IWatcherRequest = { basePath: testDir, ignored: ['**/b2/**'] }; let request2: IWatcherRequest = { basePath: bFolder, ignored: ['**/b3/**'] }; service.setRoots([request1, request2]); await wait(300); assert.equal(service.wacherCount, 1); // create files let filePath1 = path.join(bFolder, 'file1.xml'); // visible by both await pfs.writeFile(filePath1, ''); let filePath2 = path.join(b2Folder, 'file2.xml'); // filtered by root1, but visible by root2 await pfs.writeFile(filePath2, ''); let folderPath1 = path.join(b2Folder, 'b3'); // filtered await pfs.mkdirp(folderPath1); let filePath3 = path.join(folderPath1, 'file3.xml'); // filtered await pfs.writeFile(filePath3, ''); await assertFileEvents(result, [{ path: filePath1, type: FileChangeType.ADDED }, { path: filePath2, type: FileChangeType.ADDED }]); let renamedFilePath2 = path.join(folderPath1, 'file2.xml'); // move a file await pfs.rename(filePath2, renamedFilePath2); await assertFileEvents(result, [{ path: filePath2, type: FileChangeType.DELETED }]); // delete all await pfs.del(folderPath1); await pfs.del(filePath1); await assertFileEvents(result, [{ path: filePath1, type: FileChangeType.DELETED }]); });
test('simple file operations, single root, no ignore', async () => { let request: IWatcherRequest = { basePath: testDir, ignored: [] }; service.setRoots([request]); await wait(300); assert.equal(service.wacherCount, 1); // create a file let testFilePath = path.join(testDir, 'file.txt'); await pfs.writeFile(testFilePath, ''); await assertFileEvents(result, [{ path: testFilePath, type: FileChangeType.ADDED }]); // modify a file await pfs.writeFile(testFilePath, 'Hello'); await assertFileEvents(result, [{ path: testFilePath, type: FileChangeType.UPDATED }]); // create a folder let testFolderPath = path.join(testDir, 'newFolder'); await pfs.mkdirp(testFolderPath); // copy a file let copiedFilePath = path.join(testFolderPath, 'file2.txt'); await pfs.copy(testFilePath, copiedFilePath); await assertFileEvents(result, [{ path: copiedFilePath, type: FileChangeType.ADDED }, { path: testFolderPath, type: FileChangeType.ADDED }]); // delete a file await pfs.del(copiedFilePath); let renamedFilePath = path.join(testFolderPath, 'file3.txt'); // move a file await pfs.rename(testFilePath, renamedFilePath); await assertFileEvents(result, [{ path: copiedFilePath, type: FileChangeType.DELETED }, { path: testFilePath, type: FileChangeType.DELETED }, { path: renamedFilePath, type: FileChangeType.ADDED }]); // delete a folder await pfs.del(testFolderPath); await assertFileEvents(result, [{ path: testFolderPath, type: FileChangeType.DELETED }, { path: renamedFilePath, type: FileChangeType.DELETED }]); });