Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c4b5112

Browse files
committed
fix unit tests with linters
1 parent 46f8966 commit c4b5112

24 files changed

+283
-308
lines changed

src/client/common/installer.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,16 @@ switch (os.platform()) {
7373
}
7474
}
7575

76-
const Linters: Product[] = [Product.flake8, Product.pep8, Product.pylama, Product.prospector, Product.pylint, Product.mypy, Product.pydocstyle];
76+
export const Linters: Product[] = [
77+
Product.flake8,
78+
Product.pep8,
79+
Product.pylama,
80+
Product.prospector,
81+
Product.pylint,
82+
Product.mypy,
83+
Product.pydocstyle
84+
];
85+
7786
const Formatters: Product[] = [Product.autopep8, Product.yapf];
7887
const TestFrameworks: Product[] = [Product.pytest, Product.nosetest, Product.unittest];
7988

src/client/common/utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ function handlePythonModuleResponse(includeErrorAsResponse: boolean, error: Erro
178178
if (token && token.isCancellationRequested) {
179179
return Promise.resolve(undefined);
180180
}
181-
if (isNotInstalledError(error) || !!error) {
181+
if (isNotInstalledError(error)) {
182182
return Promise.reject(error);
183183
}
184184

src/client/linters/baseLinter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export abstract class BaseLinter {
5656
protected get workspaceRootPath(): string {
5757
return typeof this._workspaceRootPath === 'string' ? this._workspaceRootPath : vscode.workspace.rootPath;
5858
}
59-
constructor(id: string, product: Product, protected outputChannel: OutputChannel, workspaceRootPath: string) {
59+
constructor(id: string, public product: Product, protected outputChannel: OutputChannel, workspaceRootPath: string) {
6060
this.Id = id;
6161
this._workspaceRootPath = workspaceRootPath;
6262
this.pythonSettings = settings.PythonSettings.getInstance();

src/test/.vscode/tags

+12-12
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Foo ../pythonFiles/autocomp/four.py /^class Foo(object):$/;" kind:class line:7
4444
Foo ../pythonFiles/linting/file.py /^class Foo(object):$/;" kind:class line:5
4545
Foo ../pythonFiles/linting/flake8config/file.py /^class Foo(object):$/;" kind:class line:5
4646
Foo ../pythonFiles/linting/pep8config/file.py /^class Foo(object):$/;" kind:class line:5
47-
Foo ../pythonFiles/linting/pydocstyleconfig/file.py /^class Foo(object):$/;" kind:class line:5
47+
Foo ../pythonFiles/linting/pydocstyleconfig27/file.py /^class Foo(object):$/;" kind:class line:5
4848
Foo ../pythonFiles/linting/pylintconfig/file.py /^class Foo(object):$/;" kind:class line:5
4949
Gaussian ../pythonFiles/jupyter/cells.py /^class Gaussian(object):$/;" kind:class line:100
5050
HTML ../pythonFiles/jupyter/cells.py /^from IPython.core.display import HTML$/;" kind:namespace line:53
@@ -149,7 +149,7 @@ __init__ ../pythonFiles/jupyter/cells.py /^ def __init__(self, mean=0.0, std=
149149
__init__ ../pythonFiles/linting/file.py /^ def __init__(self):$/;" kind:member line:8
150150
__init__ ../pythonFiles/linting/flake8config/file.py /^ def __init__(self):$/;" kind:member line:8
151151
__init__ ../pythonFiles/linting/pep8config/file.py /^ def __init__(self):$/;" kind:member line:8
152-
__init__ ../pythonFiles/linting/pydocstyleconfig/file.py /^ def __init__(self):$/;" kind:member line:8
152+
__init__ ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def __init__(self):$/;" kind:member line:8
153153
__init__ ../pythonFiles/linting/pylintconfig/file.py /^ def __init__(self):$/;" kind:member line:8
154154
__init__ ../pythonFiles/refactoring/standAlone/refactor.py /^ def __init__(self):$/;" kind:member line:164
155155
__init__ ../pythonFiles/refactoring/standAlone/refactor.py /^ def __init__(self, filePath, fileMode=ChangeType.EDIT, diff=""):$/;" kind:member line:48
@@ -166,7 +166,7 @@ __repr__ ../pythonFiles/autocomp/misc.py /^ def __repr__(self):$/;" kind:memb
166166
__revision__ ../pythonFiles/linting/file.py /^__revision__ = None$/;" kind:variable line:3
167167
__revision__ ../pythonFiles/linting/flake8config/file.py /^__revision__ = None$/;" kind:variable line:3
168168
__revision__ ../pythonFiles/linting/pep8config/file.py /^__revision__ = None$/;" kind:variable line:3
169-
__revision__ ../pythonFiles/linting/pydocstyleconfig/file.py /^__revision__ = None$/;" kind:variable line:3
169+
__revision__ ../pythonFiles/linting/pydocstyleconfig27/file.py /^__revision__ = None$/;" kind:variable line:3
170170
__revision__ ../pythonFiles/linting/pylintconfig/file.py /^__revision__ = None$/;" kind:variable line:3
171171
__setstate__ ../pythonFiles/autocomp/misc.py /^ def __setstate__(self, state): # for pickle$/;" kind:member line:1425
172172
__stop ../pythonFiles/autocomp/misc.py /^ def __stop(self):$/;" kind:member line:866
@@ -310,7 +310,7 @@ figure ../pythonFiles/jupyter/cells.py /^from bokeh.plotting import figure, show
310310
file.py ../pythonFiles/linting/file.py 1;" kind:file line:1
311311
file.py ../pythonFiles/linting/flake8config/file.py 1;" kind:file line:1
312312
file.py ../pythonFiles/linting/pep8config/file.py 1;" kind:file line:1
313-
file.py ../pythonFiles/linting/pydocstyleconfig/file.py 1;" kind:file line:1
313+
file.py ../pythonFiles/linting/pydocstyleconfig27/file.py 1;" kind:file line:1
314314
file.py ../pythonFiles/linting/pylintconfig/file.py 1;" kind:file line:1
315315
fileToFormat.py ../pythonFiles/formatting/fileToFormat.py 1;" kind:file line:1
316316
five.py ../pythonFiles/autocomp/five.py 1;" kind:file line:1
@@ -372,42 +372,42 @@ matplotlib ../pythonFiles/jupyter/cells.py /^import matplotlib.pyplot as plt$/;"
372372
meth1 ../pythonFiles/linting/file.py /^ def meth1(self, arg):$/;" kind:member line:11
373373
meth1 ../pythonFiles/linting/flake8config/file.py /^ def meth1(self, arg):$/;" kind:member line:11
374374
meth1 ../pythonFiles/linting/pep8config/file.py /^ def meth1(self, arg):$/;" kind:member line:11
375-
meth1 ../pythonFiles/linting/pydocstyleconfig/file.py /^ def meth1(self, arg):$/;" kind:member line:11
375+
meth1 ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def meth1(self, arg):$/;" kind:member line:11
376376
meth1 ../pythonFiles/linting/pylintconfig/file.py /^ def meth1(self, arg):$/;" kind:member line:11
377377
meth2 ../pythonFiles/linting/file.py /^ def meth2(self, arg):$/;" kind:member line:15
378378
meth2 ../pythonFiles/linting/flake8config/file.py /^ def meth2(self, arg):$/;" kind:member line:15
379379
meth2 ../pythonFiles/linting/pep8config/file.py /^ def meth2(self, arg):$/;" kind:member line:15
380-
meth2 ../pythonFiles/linting/pydocstyleconfig/file.py /^ def meth2(self, arg):$/;" kind:member line:15
380+
meth2 ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def meth2(self, arg):$/;" kind:member line:15
381381
meth2 ../pythonFiles/linting/pylintconfig/file.py /^ def meth2(self, arg):$/;" kind:member line:15
382382
meth3 ../pythonFiles/linting/file.py /^ def meth3(self):$/;" kind:member line:21
383383
meth3 ../pythonFiles/linting/flake8config/file.py /^ def meth3(self):$/;" kind:member line:21
384384
meth3 ../pythonFiles/linting/pep8config/file.py /^ def meth3(self):$/;" kind:member line:21
385-
meth3 ../pythonFiles/linting/pydocstyleconfig/file.py /^ def meth3(self):$/;" kind:member line:21
385+
meth3 ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def meth3(self):$/;" kind:member line:21
386386
meth3 ../pythonFiles/linting/pylintconfig/file.py /^ def meth3(self):$/;" kind:member line:21
387387
meth4 ../pythonFiles/linting/file.py /^ def meth4(self):$/;" kind:member line:28
388388
meth4 ../pythonFiles/linting/flake8config/file.py /^ def meth4(self):$/;" kind:member line:28
389389
meth4 ../pythonFiles/linting/pep8config/file.py /^ def meth4(self):$/;" kind:member line:28
390-
meth4 ../pythonFiles/linting/pydocstyleconfig/file.py /^ def meth4(self):$/;" kind:member line:28
390+
meth4 ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def meth4(self):$/;" kind:member line:28
391391
meth4 ../pythonFiles/linting/pylintconfig/file.py /^ def meth4(self):$/;" kind:member line:28
392392
meth5 ../pythonFiles/linting/file.py /^ def meth5(self):$/;" kind:member line:38
393393
meth5 ../pythonFiles/linting/flake8config/file.py /^ def meth5(self):$/;" kind:member line:38
394394
meth5 ../pythonFiles/linting/pep8config/file.py /^ def meth5(self):$/;" kind:member line:38
395-
meth5 ../pythonFiles/linting/pydocstyleconfig/file.py /^ def meth5(self):$/;" kind:member line:38
395+
meth5 ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def meth5(self):$/;" kind:member line:38
396396
meth5 ../pythonFiles/linting/pylintconfig/file.py /^ def meth5(self):$/;" kind:member line:38
397397
meth6 ../pythonFiles/linting/file.py /^ def meth6(self):$/;" kind:member line:53
398398
meth6 ../pythonFiles/linting/flake8config/file.py /^ def meth6(self):$/;" kind:member line:53
399399
meth6 ../pythonFiles/linting/pep8config/file.py /^ def meth6(self):$/;" kind:member line:53
400-
meth6 ../pythonFiles/linting/pydocstyleconfig/file.py /^ def meth6(self):$/;" kind:member line:53
400+
meth6 ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def meth6(self):$/;" kind:member line:53
401401
meth6 ../pythonFiles/linting/pylintconfig/file.py /^ def meth6(self):$/;" kind:member line:53
402402
meth7 ../pythonFiles/linting/file.py /^ def meth7(self):$/;" kind:member line:68
403403
meth7 ../pythonFiles/linting/flake8config/file.py /^ def meth7(self):$/;" kind:member line:68
404404
meth7 ../pythonFiles/linting/pep8config/file.py /^ def meth7(self):$/;" kind:member line:68
405-
meth7 ../pythonFiles/linting/pydocstyleconfig/file.py /^ def meth7(self):$/;" kind:member line:68
405+
meth7 ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def meth7(self):$/;" kind:member line:68
406406
meth7 ../pythonFiles/linting/pylintconfig/file.py /^ def meth7(self):$/;" kind:member line:68
407407
meth8 ../pythonFiles/linting/file.py /^ def meth8(self):$/;" kind:member line:80
408408
meth8 ../pythonFiles/linting/flake8config/file.py /^ def meth8(self):$/;" kind:member line:80
409409
meth8 ../pythonFiles/linting/pep8config/file.py /^ def meth8(self):$/;" kind:member line:80
410-
meth8 ../pythonFiles/linting/pydocstyleconfig/file.py /^ def meth8(self):$/;" kind:member line:80
410+
meth8 ../pythonFiles/linting/pydocstyleconfig27/file.py /^ def meth8(self):$/;" kind:member line:80
411411
meth8 ../pythonFiles/linting/pylintconfig/file.py /^ def meth8(self):$/;" kind:member line:80
412412
method1 ../pythonFiles/autocomp/one.py /^ def method1(self):$/;" kind:member line:18
413413
method2 ../pythonFiles/autocomp/one.py /^ def method2(self):$/;" kind:member line:24
File renamed without changes.

src/test/extension.autocomplete.test.ts

+20-16
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
// Place this right on top
7-
import { initialize, PYTHON_PATH, closeActiveWindows } from './initialize';
7+
import { initialize, PYTHON_PATH, closeActiveWindows, setPythonExecutable } from './initialize';
88
// The module 'assert' provides assertion methods from node
99
import * as assert from 'assert';
1010
import { EOL } from 'os';
@@ -15,6 +15,8 @@ import * as path from 'path';
1515
import * as settings from '../client/common/configSettings';
1616

1717
let pythonSettings = settings.PythonSettings.getInstance();
18+
let disposable: vscode.Disposable;
19+
1820
let autoCompPath = path.join(__dirname, '..', '..', 'src', 'test', 'pythonFiles', 'autocomp');
1921
const fileOne = path.join(autoCompPath, 'one.py');
2022
const fileTwo = path.join(autoCompPath, 'two.py');
@@ -25,17 +27,17 @@ const fileHover = path.join(autoCompPath, 'hoverTest.py');
2527

2628
suite('Autocomplete', () => {
2729
suiteSetup(done => {
30+
disposable = setPythonExecutable(pythonSettings);
2831
initialize().then(() => {
29-
pythonSettings.pythonPath = PYTHON_PATH;
3032
done();
3133
}, done);
3234
});
33-
3435
suiteTeardown(done => {
35-
closeActiveWindows().then(done, done);
36+
disposable.dispose();
37+
closeActiveWindows().then(() => done(), () => done());
3638
});
3739
teardown(done => {
38-
closeActiveWindows().then(done, done);
40+
closeActiveWindows().then(() => done(), () => done());
3941
});
4042

4143
test('For "sys."', done => {
@@ -115,17 +117,18 @@ suite('Autocomplete', () => {
115117

116118
suite('Code Definition', () => {
117119
suiteSetup(done => {
120+
disposable = setPythonExecutable(pythonSettings);
118121
initialize().then(() => {
119-
pythonSettings.pythonPath = PYTHON_PATH;
120122
done();
121123
}, done);
122124
});
123125

124126
suiteTeardown(done => {
125-
closeActiveWindows().then(done, done);
127+
disposable.dispose();
128+
closeActiveWindows().then(() => done(), () => done());
126129
});
127130
teardown(done => {
128-
closeActiveWindows().then(done, done);
131+
closeActiveWindows().then(() => done(), () => done());
129132
});
130133

131134
test('Go to method', done => {
@@ -206,17 +209,18 @@ suite('Code Definition', () => {
206209

207210
suite('Hover Definition', () => {
208211
suiteSetup(done => {
212+
disposable = setPythonExecutable(pythonSettings);
209213
initialize().then(() => {
210-
pythonSettings.pythonPath = PYTHON_PATH;
211214
done();
212215
}, done);
213216
});
214217

215218
suiteTeardown(done => {
216-
closeActiveWindows().then(done, done);
219+
disposable.dispose();
220+
closeActiveWindows().then(() => done(), () => done());
217221
});
218222
teardown(done => {
219-
closeActiveWindows().then(done, done);
223+
closeActiveWindows().then(() => done(), () => done());
220224
});
221225

222226
test('Method', done => {
@@ -458,10 +462,10 @@ suite('Hover Definition', () => {
458462
assert.equal(def.length, 1, 'Definition length is incorrect');
459463
assert.equal(def[0].contents.length, 1, 'Only expected one result');
460464
assert.equal(def[0].contents[0],
461-
'```python' + EOL +
462-
'Random' + EOL +
463-
'```' + EOL +
464-
`Random(self, x=None)
465+
'```python' + EOL +
466+
'Random' + EOL +
467+
'```' + EOL +
468+
`Random(self, x=None)
465469
466470
Random number generator base class used by bound module functions.
467471
@@ -475,7 +479,7 @@ generator of your own devising: in that case, override the following
475479
476480
Optionally, implement a getrandbits() method so that randrange()
477481
can cover arbitrarily large ranges.`,
478-
'Invalid content items');
482+
'Invalid content items');
479483
}).then(done, done);
480484
});
481485
});

src/test/extension.common.installer.test.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Note: This example test is leveraging the Mocha test framework.
33
// Please refer to their documentation on https://mochajs.org/ for help.
44
// Place this right on top
5-
import { PYTHON_PATH, closeActiveWindows } from './initialize';
5+
import { closeActiveWindows, setPythonExecutable } from './initialize';
66
// The module \'assert\' provides assertion methods from node
77
import * as assert from 'assert';
88

@@ -12,23 +12,26 @@ import * as settings from '../client/common/configSettings';
1212
import { MockOutputChannel } from './mockClasses';
1313
import { Installer, Product } from '../client/common/installer';
1414
import { EnumEx } from '../client/common/enumUtils';
15+
import { Disposable } from 'vscode';
1516

1617
let pythonSettings = settings.PythonSettings.getInstance();
1718

1819
suite('Installer', () => {
1920
let outputChannel: MockOutputChannel;
2021
let installer: Installer;
22+
let setPythonPathDisposable: Disposable;
2123

2224
suiteSetup(() => {
23-
pythonSettings.pythonPath = PYTHON_PATH;
25+
setPythonPathDisposable = setPythonExecutable(pythonSettings);
2426
outputChannel = new MockOutputChannel('Installer');
2527
installer = new Installer(outputChannel);
2628
});
2729
suiteTeardown(done => {
28-
closeActiveWindows().then(done, done);
30+
setPythonPathDisposable.dispose();
31+
closeActiveWindows().then(() => done(), () => done());
2932
});
3033
teardown(done => {
31-
closeActiveWindows().then(done, done);
34+
closeActiveWindows().then(() => done(), () => done());
3235
});
3336

3437
async function testUninstallingProduct(product: Product) {

src/test/extension.format.test.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
// Place this right on top
7-
import { initialize, IS_TRAVIS, PYTHON_PATH, closeActiveWindows } from './initialize';
7+
import { initialize, IS_TRAVIS, closeActiveWindows, setPythonExecutable } from './initialize';
88
// The module 'assert' provides assertion methods from node
99
import * as assert from 'assert';
1010

@@ -19,6 +19,8 @@ import * as fs from 'fs-extra';
1919
import { execPythonFile } from '../client/common/utils';
2020

2121
let pythonSettings = settings.PythonSettings.getInstance();
22+
let disposable = setPythonExecutable(pythonSettings);
23+
2224
let ch = vscode.window.createOutputChannel('Tests');
2325
let pythoFilesPath = path.join(__dirname, '..', '..', 'src', 'test', 'pythonFiles', 'formatting');
2426
const originalUnformattedFile = path.join(pythoFilesPath, 'fileToFormat.py');
@@ -34,7 +36,6 @@ let formattedAutoPep8 = '';
3436
suite('Formatting', () => {
3537
suiteSetup(done => {
3638
initialize().then(() => {
37-
pythonSettings.pythonPath = PYTHON_PATH;
3839
[autoPep8FileToFormat, autoPep8FileToAutoFormat, yapfFileToFormat, yapfFileToAutoFormat].forEach(file => {
3940
if (fs.existsSync(file)) { fs.unlinkSync(file); }
4041
fs.copySync(originalUnformattedFile, file);
@@ -50,10 +51,11 @@ suite('Formatting', () => {
5051
}).then(done).catch(done);
5152
});
5253
suiteTeardown(done => {
53-
closeActiveWindows().then(done, done);
54+
disposable.dispose();
55+
closeActiveWindows().then(() => done(), () => done());
5456
});
5557
teardown(done => {
56-
closeActiveWindows().then(done, done);
58+
closeActiveWindows().then(() => done(), () => done());
5759
});
5860

5961
function testFormatting(formatter: AutoPep8Formatter | YapfFormatter, formattedContents: string, fileToFormat: string): PromiseLike<void> {

src/test/extension.jupyter.comms.jupyter.codeHelper.test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// Please refer to their documentation on https://mochajs.org/ for help.
44
//
55
// Place this right on top
6-
import { initialize, IS_TRAVIS, PYTHON_PATH, closeActiveWindows } from './initialize';
6+
import { initialize, IS_TRAVIS, closeActiveWindows, setPythonExecutable } from './initialize';
77
// The module 'assert' provides assertion methods from node
88
import * as assert from 'assert';
99
import * as vscode from 'vscode';
@@ -13,25 +13,25 @@ import { CodeHelper } from '../client/jupyter/common/codeHelper';
1313
import { JupyterCodeLensProvider } from '../client/jupyter/editorIntegration/codeLensProvider';
1414

1515
let pythonSettings = settings.PythonSettings.getInstance();
16+
let disposable = setPythonExecutable(pythonSettings);
17+
1618
const FILE_WITH_CELLS = path.join(__dirname, '..', '..', 'src', 'test', 'pythonFiles', 'jupyter', 'cells.py');
1719

1820
suite('Jupyter Code Helper', () => {
1921
suiteSetup(done => {
2022
initialize().then(() => {
21-
if (IS_TRAVIS) {
22-
pythonSettings.pythonPath = PYTHON_PATH;
23-
}
2423
done();
2524
});
2625
});
2726

2827
const codeLensProvider = new JupyterCodeLensProvider();
2928
const codeHelper = new CodeHelper(codeLensProvider);
3029
setup(done => {
31-
closeActiveWindows().then(done).catch(done);
30+
closeActiveWindows().then(() => done()).catch(() => done());
3231
});
3332
teardown(done => {
34-
closeActiveWindows().then(done).catch(done);
33+
disposable.dispose();
34+
closeActiveWindows().then(() => done()).catch(() => done());
3535
});
3636

3737
test('Get Line (without any selection)', done => {

0 commit comments

Comments
 (0)