Skip to content

Commit f59f094

Browse files
committed
Merge branch 'daemonPool' of github.com:DonJayamanne/pythonVSCode into daemonPool
* 'daemonPool' of github.com:DonJayamanne/pythonVSCode: Changes to how we use rewiremock
2 parents f8358de + 5e03ce3 commit f59f094

13 files changed

+41
-23
lines changed

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2882,7 +2882,7 @@
28822882
"react-json-tree": "^0.11.0",
28832883
"relative": "^3.0.2",
28842884
"retyped-diff-match-patch-tsd-ambient": "^1.0.0-0",
2885-
"rewiremock": "^3.13.0",
2885+
"rewiremock": "^3.13.9",
28862886
"sass-loader": "^7.1.0",
28872887
"shortid": "^2.2.8",
28882888
"sinon": "^7.3.2",

src/test/activation/languageServer/languageClientFactory.unit.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import { expect } from 'chai';
99
import * as path from 'path';
10-
import rewiremock from 'rewiremock';
1110
import { anything, instance, mock, verify, when } from 'ts-mockito';
1211
import * as typemoq from 'typemoq';
1312
import { Uri } from 'vscode';
@@ -21,6 +20,7 @@ import { EXTENSION_ROOT_DIR } from '../../../client/common/constants';
2120
import { IConfigurationService, IPythonSettings } from '../../../client/common/types';
2221
import { EnvironmentVariablesProvider } from '../../../client/common/variables/environmentVariablesProvider';
2322
import { EnvironmentActivationService } from '../../../client/interpreter/activation/service';
23+
import { rewiremock } from '../../common';
2424

2525
const dotNetCommand = 'dotnet';
2626
const languageClientName = 'Python Tools';

src/test/common.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
// tslint:disable:no-console no-require-imports no-var-requires
66

77
import * as assert from 'assert';
8+
import { execFileSync } from 'child_process';
89
import * as fs from 'fs-extra';
910
import * as glob from 'glob';
1011
import * as path from 'path';
12+
// tslint:disable-next-line: match-default-export-name
13+
import rewiremock from 'rewiremock';
1114
import { coerce, SemVer } from 'semver';
1215
import { ConfigurationTarget, Event, TextDocument, Uri } from 'vscode';
1316
import { IExtensionApi } from '../client/api';
@@ -19,6 +22,9 @@ import {
1922
EXTENSION_ROOT_DIR_FOR_TESTS, IS_MULTI_ROOT_TEST, IS_PERF_TEST, IS_SMOKE_TEST
2023
} from './constants';
2124
import { noop } from './core';
25+
// Based on guidelines from https://www.npmjs.com/package/rewiremock
26+
rewiremock.overrideEntryPoint(module);
27+
export { rewiremock };
2228

2329
const StreamZip = require('node-stream-zip');
2430

@@ -231,6 +237,14 @@ export function getOSType(platform: string = process.platform): OSType {
231237
}
232238
}
233239

240+
let pythonVersion: SemVer | undefined;
241+
export function getPythonVersion(): SemVer {
242+
if (!pythonVersion) {
243+
const output = execFileSync(PYTHON_PATH, ['--version'], {encoding: 'utf8'});
244+
pythonVersion = new SemVer(output.toString().trim());
245+
}
246+
return pythonVersion;
247+
}
234248
/**
235249
* Update a string that represents a path in any OS to the string representation of
236250
* that same path in a different OS. Note: Does not handle drive letter if the path

src/test/common/net/fileDownloader.unit.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { expect } from 'chai';
99
import * as fsExtra from 'fs-extra';
1010
import * as nock from 'nock';
1111
import * as path from 'path';
12-
import rewiremock from 'rewiremock';
1312
import * as sinon from 'sinon';
1413
import { Readable, Writable } from 'stream';
1514
import { anything, instance, mock, verify, when } from 'ts-mockito';
@@ -24,6 +23,7 @@ import { IFileSystem } from '../../../client/common/platform/types';
2423
import { IHttpClient } from '../../../client/common/types';
2524
import { Http } from '../../../client/common/utils/localize';
2625
import { EXTENSION_ROOT_DIR } from '../../../client/constants';
26+
import { rewiremock } from '../../common';
2727
import { noop } from '../../core';
2828
import { MockOutputChannel } from '../../mockClasses';
2929
const requestProgress = require('request-progress');

src/test/common/net/httpClient.unit.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77

88
import * as assert from 'assert';
99
import { expect } from 'chai';
10-
// tslint:disable-next-line: match-default-export-name
11-
import rewiremock from 'rewiremock';
1210
import * as TypeMoq from 'typemoq';
1311
import { WorkspaceConfiguration } from 'vscode';
1412
import { IWorkspaceService } from '../../../client/common/application/types';
1513
import { HttpClient } from '../../../client/common/net/httpClient';
1614
import { IServiceContainer } from '../../../client/ioc/types';
15+
import { rewiremock } from '../../common';
1716

1817
// tslint:disable-next-line: max-func-body-length
1918
suite('Http Client', () => {

src/test/common/process/pythonDaemon.functional.test.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { createTemporaryFile } from '../../../client/common/utils/fs';
2020
import { Architecture } from '../../../client/common/utils/platform';
2121
import { parsePythonVersion } from '../../../client/common/utils/version';
2222
import { EXTENSION_ROOT_DIR } from '../../../client/constants';
23-
import { PYTHON_PATH } from '../../common';
23+
import { getPythonVersion, PYTHON_PATH } from '../../common';
2424
use(chaiPromised);
2525

2626
// tslint:disable-next-line: max-func-body-length
@@ -42,7 +42,12 @@ suite('Daemon', () => {
4242
.trim();
4343
}
4444
});
45-
setup(() => {
45+
setup(function () {
46+
const pyVersion = getPythonVersion();
47+
if (pyVersion.major === 2) {
48+
// tslint:disable-next-line: no-invalid-this
49+
return this.skip();
50+
}
4651
// Enable the following to log everything going on at pyton end.
4752
// pythonProc = spawn(fullyQualifiedPythonPath, ['-m', 'datascience.daemon', '-v', `--log-file=${path.join(EXTENSION_ROOT_DIR, 'test.log')}`], { env });
4853
pythonProc = spawn(fullyQualifiedPythonPath, ['-m', 'datascience.daemon'], { env });

src/test/common/process/pythonDaemonPool.functional.test.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { Architecture } from '../../../client/common/utils/platform';
2626
import { parsePythonVersion } from '../../../client/common/utils/version';
2727
import { EXTENSION_ROOT_DIR } from '../../../client/constants';
2828
import { PythonDaemonModule } from '../../../client/datascience/constants';
29-
import { PYTHON_PATH, waitForCondition } from '../../common';
29+
import { getPythonVersion, PYTHON_PATH, waitForCondition } from '../../common';
3030
use(chaiPromised);
3131

3232
// tslint:disable: max-func-body-length
@@ -53,7 +53,12 @@ suite('Daemon - Python Daemon Pool', () => {
5353
.trim();
5454
}
5555
});
56-
setup(async () => {
56+
setup(async function () {
57+
const pyVersion = getPythonVersion();
58+
if (pyVersion.major === 2){
59+
// tslint:disable-next-line: no-invalid-this
60+
return this.skip();
61+
}
5762
createDaemonServicesSpy = sinon.spy(DaemonPool.prototype, 'createDaemonServices');
5863
pythonExecutionService = mock(PythonExecutionService);
5964
when(pythonExecutionService.execModuleObservable('datascience.daemon', anything(), anything())).thenCall(() => {

src/test/datascience/shiftEnterBanner.unit.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
'use strict';
44
//tslint:disable:max-func-body-length match-default-export-name no-any no-multiline-string no-trailing-whitespace
55
import { expect } from 'chai';
6-
import rewiremock from 'rewiremock';
76
import * as typemoq from 'typemoq';
8-
97
import { IApplicationShell } from '../../client/common/application/types';
108
import {
119
IConfigurationService,
@@ -18,6 +16,7 @@ import { Telemetry } from '../../client/datascience/constants';
1816
import { InteractiveShiftEnterBanner, InteractiveShiftEnterStateKeys } from '../../client/datascience/shiftEnterBanner';
1917
import { IJupyterExecution } from '../../client/datascience/types';
2018
import { clearTelemetryReporter } from '../../client/telemetry';
19+
import { rewiremock } from '../common';
2120

2221
suite('Interactive Shift Enter Banner', () => {
2322
const oldValueOfVSC_PYTHON_UNIT_TEST = process.env.VSC_PYTHON_UNIT_TEST;

src/test/debugger/extension/adapter/activator.unit.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
'use strict';
55

66
import * as assert from 'assert';
7-
// tslint:disable-next-line: match-default-export-name
8-
import rewiremock from 'rewiremock';
97
import { anything, instance, mock, spy, verify, when } from 'ts-mockito';
108
import { IExtensionSingleActivationService } from '../../../../client/activation/types';
119
import { ApplicationEnvironment } from '../../../../client/common/application/applicationEnvironment';
@@ -26,6 +24,7 @@ import { DebugSessionLoggingFactory } from '../../../../client/debugger/extensio
2624
import { IDebugAdapterDescriptorFactory, IDebugSessionLoggingFactory } from '../../../../client/debugger/extension/types';
2725
import { clearTelemetryReporter } from '../../../../client/telemetry';
2826
import { EventName } from '../../../../client/telemetry/constants';
27+
import { rewiremock } from '../../../common';
2928
import { noop } from '../../../core';
3029
import { MockOutputChannel } from '../../../mockClasses';
3130

src/test/debugger/extension/adapter/factory.unit.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import * as assert from 'assert';
77
import { expect, use } from 'chai';
88
import * as chaiAsPromised from 'chai-as-promised';
99
import * as path from 'path';
10-
// tslint:disable-next-line: match-default-export-name
11-
import rewiremock from 'rewiremock';
1210
import { SemVer } from 'semver';
1311
import { anyString, anything, instance, mock, spy, verify, when } from 'ts-mockito';
1412
import { DebugAdapterExecutable, DebugAdapterServer, DebugConfiguration, DebugSession, WorkspaceFolder } from 'vscode';
@@ -32,6 +30,7 @@ import { IInterpreterService, InterpreterType } from '../../../../client/interpr
3230
import { InterpreterService } from '../../../../client/interpreter/interpreterService';
3331
import { clearTelemetryReporter } from '../../../../client/telemetry';
3432
import { EventName } from '../../../../client/telemetry/constants';
33+
import { rewiremock } from '../../../common';
3534
import { MockOutputChannel } from '../../../mockClasses';
3635

3736
use(chaiAsPromised);

src/test/telemetry/importTracker.unit.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33
'use strict';
44
//tslint:disable:max-func-body-length match-default-export-name no-any no-multiline-string no-trailing-whitespace
55
import { expect } from 'chai';
6-
import rewiremock from 'rewiremock';
76
import * as TypeMoq from 'typemoq';
87
import { EventEmitter, TextDocument } from 'vscode';
9-
108
import { IDocumentManager } from '../../client/common/application/types';
119
import { EventName } from '../../client/telemetry/constants';
1210
import { ImportTracker } from '../../client/telemetry/importTracker';
11+
import { rewiremock } from '../common';
1312
import { createDocument } from '../datascience/editor-integration/helpers';
1413

1514
suite('Import Tracker', () => {

src/test/telemetry/index.unit.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44

55
//tslint:disable:max-func-body-length match-default-export-name no-any
66
import { expect } from 'chai';
7-
import rewiremock from 'rewiremock';
8-
import * as TypeMoq from 'typemoq';
9-
107
import { instance, mock, verify, when } from 'ts-mockito';
8+
import * as TypeMoq from 'typemoq';
119
import { WorkspaceConfiguration } from 'vscode';
1210
import { IWorkspaceService } from '../../client/common/application/types';
1311
import { WorkspaceService } from '../../client/common/application/workspace';
1412
import { EXTENSION_ROOT_DIR } from '../../client/constants';
1513
import { clearTelemetryReporter, isTelemetryDisabled, sendTelemetryEvent } from '../../client/telemetry';
14+
import { rewiremock } from '../common';
1615

1716
suite('Telemetry', () => {
1817
let workspaceService: IWorkspaceService;

0 commit comments

Comments
 (0)