forked from DonJayamanne/pythonVSCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexcludeFiles.ls.test.ts
More file actions
94 lines (76 loc) · 3.89 KB
/
excludeFiles.ls.test.ts
File metadata and controls
94 lines (76 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import * as assert from 'assert';
import { Container } from 'inversify';
import * as path from 'path';
import { commands, ConfigurationTarget, languages, Position, TextDocument, window, workspace } from 'vscode';
import { ConfigurationService } from '../../client/common/configuration/service';
import '../../client/common/extensions';
import { IConfigurationService } from '../../client/common/types';
import { ServiceContainer } from '../../client/ioc/container';
import { ServiceManager } from '../../client/ioc/serviceManager';
import { IServiceContainer, IServiceManager } from '../../client/ioc/types';
import { IsLanguageServerTest } from '../constants';
import { activateExtension, closeActiveWindows } from '../initialize';
const wksPath = path.join(__dirname, '..', '..', '..', 'src', 'test', 'pythonFiles', 'exclusions');
const fileOne = path.join(wksPath, 'one.py');
// tslint:disable-next-line:max-func-body-length
suite('Exclude files (Language Server)', () => {
let textDocument: TextDocument;
let serviceManager: IServiceManager;
let serviceContainer: IServiceContainer;
let configService: IConfigurationService;
suiteSetup(async function () {
if (!IsLanguageServerTest()) {
// tslint:disable-next-line:no-invalid-this
this.skip();
}
});
setup(async () => {
const cont = new Container();
serviceContainer = new ServiceContainer(cont);
serviceManager = new ServiceManager(cont);
serviceManager.addSingleton<IConfigurationService>(IConfigurationService, ConfigurationService);
configService = serviceManager.get<IConfigurationService>(IConfigurationService);
});
suiteTeardown(closeActiveWindows);
teardown(closeActiveWindows);
async function openFile(file: string): Promise<void> {
await activateExtension();
textDocument = await workspace.openTextDocument(file);
await window.showTextDocument(textDocument);
// Make sure LS completes file loading and analysis.
// In test mode it awaits for the completion before trying
// to fetch data for completion, hover.etc.
await commands.executeCommand('vscode.executeCompletionItemProvider', textDocument.uri, new Position(0, 0));
}
async function setSetting(name: string, value: {} | undefined): Promise<void> {
await configService.updateSettingAsync(name, value, undefined, ConfigurationTarget.Global);
}
test('Default exclusions', async () => {
await openFile(fileOne);
const diag = languages.getDiagnostics();
const main = diag.filter(d => d[0].fsPath.indexOf('one.py') >= 0);
assert.equal(main.length > 0, true);
const subdir = diag.filter(d => d[0].fsPath.indexOf('three.py') >= 0);
assert.equal(subdir.length > 0, true);
const node_modules = diag.filter(d => d[0].fsPath.indexOf('node.py') >= 0);
assert.equal(node_modules.length, 0);
const lib = diag.filter(d => d[0].fsPath.indexOf('fileLib.py') >= 0);
assert.equal(lib.length, 0);
const sitePackages = diag.filter(d => d[0].fsPath.indexOf('sitePackages.py') >= 0);
assert.equal(sitePackages.length, 0);
});
test('Exclude subfolder', async () => {
await setSetting('linting.ignorePatterns', ['**/dir1/**']);
await openFile(fileOne);
const diag = languages.getDiagnostics();
const main = diag.filter(d => d[0].fsPath.indexOf('one.py') >= 0);
assert.equal(main.length > 0, true);
const subdir1 = diag.filter(d => d[0].fsPath.indexOf('dir1file.py') >= 0);
assert.equal(subdir1.length, 0);
const subdir2 = diag.filter(d => d[0].fsPath.indexOf('dir2file.py') >= 0);
assert.equal(subdir2.length, 0);
await setSetting('linting.ignorePatterns', undefined);
});
});