diff --git a/src/client/extension.ts b/src/client/extension.ts index 867d2ab113b6..615f63d13b41 100644 --- a/src/client/extension.ts +++ b/src/client/extension.ts @@ -1,6 +1,7 @@ 'use strict'; import * as vscode from 'vscode'; +import { createDeferred } from './common/helpers'; import { PythonCompletionItemProvider } from './providers/completionProvider'; import { PythonHoverProvider } from './providers/hoverProvider'; import { PythonDefinitionProvider } from './providers/definitionProvider'; @@ -39,6 +40,8 @@ let unitTestOutChannel: vscode.OutputChannel; let formatOutChannel: vscode.OutputChannel; let lintingOutChannel: vscode.OutputChannel; let jupMain: jup.Jupyter; +const activationDeferred = createDeferred(); +export const activated = activationDeferred.promise; export async function activate(context: vscode.ExtensionContext) { const pythonSettings = settings.PythonSettings.getInstance(); const pythonExt = new PythonExt(); @@ -153,6 +156,7 @@ export async function activate(context: vscode.ExtensionContext) { context.subscriptions.push(hepProvider); context.subscriptions.push(vscode.debug.registerDebugConfigurationProvider('python', new SimpleConfigurationProvider())); + activationDeferred.resolve(); } class PythonExt implements vscode.Disposable { diff --git a/src/test/initialize.ts b/src/test/initialize.ts index a298c234c4a9..9ed43c77eb96 100644 --- a/src/test/initialize.ts +++ b/src/test/initialize.ts @@ -7,20 +7,24 @@ process.env['PYTHON_DONJAYAMANNE_TEST'] = "1"; // The module 'assert' provides assertion methods from node -import * as assert from "assert"; +import * as assert from 'assert'; import * as fs from 'fs'; // You can import and use all API from the 'vscode' module // as well as import your extension to test it -import * as vscode from "vscode"; -import * as path from "path"; +import * as vscode from 'vscode'; +import * as path from 'path'; let dummyPythonFile = path.join(__dirname, "..", "..", "src", "test", "pythonFiles", "dummy.py"); -export function initialize(): Promise { +let extensionActivated: boolean = false; +export async function initialize(): Promise { // Opening a python file activates the extension - return new Promise((resolve, reject) => { - vscode.workspace.openTextDocument(dummyPythonFile).then(() => resolve(), reject); - }); + await vscode.workspace.openTextDocument(dummyPythonFile); + if (!extensionActivated) { + const ext = require('../client/extension'); + await ext.activated; + extensionActivated = true; + } } export async function wait(timeoutMilliseconds: number) {