nsfwWatcherService.test.ts 2.5 KB
Newer Older
1 2 3 4 5
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

6 7
import * as assert from 'assert';
import * as platform from 'vs/base/common/platform';
R
Rob Lourens 已提交
8

9 10
import { NsfwWatcherService } from 'vs/platform/files/node/watcher/nsfw/nsfwWatcherService';
import { IWatcherRequest } from 'vs/platform/files/node/watcher/nsfw/watcher';
11 12

class TestNsfwWatcherService extends NsfwWatcherService {
13 14 15
	public normalizeRoots(roots: string[]): string[] {
		// Work with strings as paths to simplify testing
		const requests: IWatcherRequest[] = roots.map(r => {
16
			return { path: r, excludes: [] };
17
		});
18
		return this._normalizeRoots(requests).map(r => r.path);
19
	}
20 21 22 23 24
}

suite('NSFW Watcher Service', () => {
	suite('_normalizeRoots', () => {
		test('should not impacts roots that don\'t overlap', () => {
D
Daniel Imms 已提交
25
			const service = new TestNsfwWatcherService();
R
Rob Lourens 已提交
26
			if (platform.isWindows) {
D
Daniel Imms 已提交
27 28 29 30 31 32 33
				assert.deepEqual(service.normalizeRoots(['C:\\a']), ['C:\\a']);
				assert.deepEqual(service.normalizeRoots(['C:\\a', 'C:\\b']), ['C:\\a', 'C:\\b']);
				assert.deepEqual(service.normalizeRoots(['C:\\a', 'C:\\b', 'C:\\c\\d\\e']), ['C:\\a', 'C:\\b', 'C:\\c\\d\\e']);
			} else {
				assert.deepEqual(service.normalizeRoots(['/a']), ['/a']);
				assert.deepEqual(service.normalizeRoots(['/a', '/b']), ['/a', '/b']);
				assert.deepEqual(service.normalizeRoots(['/a', '/b', '/c/d/e']), ['/a', '/b', '/c/d/e']);
R
Rob Lourens 已提交
34
			}
35 36 37
		});

		test('should remove sub-folders of other roots', () => {
D
Daniel Imms 已提交
38
			const service = new TestNsfwWatcherService();
R
Rob Lourens 已提交
39
			if (platform.isWindows) {
D
Daniel Imms 已提交
40 41 42 43 44 45 46 47 48
				assert.deepEqual(service.normalizeRoots(['C:\\a', 'C:\\a\\b']), ['C:\\a']);
				assert.deepEqual(service.normalizeRoots(['C:\\a', 'C:\\b', 'C:\\a\\b']), ['C:\\a', 'C:\\b']);
				assert.deepEqual(service.normalizeRoots(['C:\\b\\a', 'C:\\a', 'C:\\b', 'C:\\a\\b']), ['C:\\a', 'C:\\b']);
				assert.deepEqual(service.normalizeRoots(['C:\\a', 'C:\\a\\b', 'C:\\a\\c\\d']), ['C:\\a']);
			} else {
				assert.deepEqual(service.normalizeRoots(['/a', '/a/b']), ['/a']);
				assert.deepEqual(service.normalizeRoots(['/a', '/b', '/a/b']), ['/a', '/b']);
				assert.deepEqual(service.normalizeRoots(['/b/a', '/a', '/b', '/a/b']), ['/a', '/b']);
				assert.deepEqual(service.normalizeRoots(['/a', '/a/b', '/a/c/d']), ['/a']);
R
Rob Lourens 已提交
49
			}
50 51 52
		});
	});
});