提交 54603275 编写于 作者: S Sandeep Somavarapu

Use URIs instead of strings while passing environment to Extensionhost

上级 e659ffd6
......@@ -229,7 +229,7 @@ export function createApiFactory(
get sessionId() { return initData.telemetryInfo.sessionId; },
get language() { return platform.language; },
get appName() { return product.nameLong; },
get appRoot() { return initData.environment.appRoot; },
get appRoot() { return initData.environment.appRoot.fsPath; },
get logLevel() {
checkProposedApiEnabled(extension);
return extHostLogService.getLevel();
......
......@@ -46,10 +46,10 @@ import { CancellationToken } from 'vs/base/common/cancellation';
export interface IEnvironment {
isExtensionDevelopmentDebug: boolean;
appRoot: string;
appSettingsHome: string;
appRoot: URI;
appSettingsHome: URI;
extensionDevelopmentLocationURI: URI;
extensionTestsPath: string;
extensionTestsPath: URI;
}
export interface IWorkspaceData {
......
......@@ -94,7 +94,7 @@ class ExtensionStoragePath {
}
const storageName = this._workspace.id;
const storagePath = join(this._environment.appSettingsHome, 'workspaceStorage', storageName);
const storagePath = join(this._environment.appSettingsHome.fsPath, 'workspaceStorage', storageName);
const exists = await dirExists(storagePath);
......
......@@ -90,6 +90,8 @@ export class ExtensionHostMain {
private _mainThreadWorkspace: MainThreadWorkspaceShape;
constructor(protocol: IMessagePassingProtocol, initData: IInitData) {
// ensure URIs are revived
initData = this.review(initData);
this._environment = initData.environment;
const allowExit = !!this._environment.extensionTestsPath; // to support other test frameworks like Jasmin that use process.exit (https://github.com/Microsoft/vscode/issues/37708)
......@@ -98,9 +100,6 @@ export class ExtensionHostMain {
// services
const rpcProtocol = new RPCProtocol(protocol);
this._workspace = rpcProtocol.transformIncomingURIs(initData.workspace);
// ensure URIs are revived
initData.extensions.forEach((ext) => (<any>ext).extensionLocation = URI.revive(ext.extensionLocation));
initData.logsLocation = URI.revive(initData.logsLocation);
this._extHostLogService = new ExtHostLogService(initData.logLevel, initData.logsLocation.fsPath);
this.disposables.push(this._extHostLogService);
......@@ -312,7 +311,7 @@ export class ExtensionHostMain {
let testRunner: ITestRunner;
let requireError: Error;
try {
testRunner = <any>require.__$__nodeRequire(this._environment.extensionTestsPath);
testRunner = <any>require.__$__nodeRequire(this._environment.extensionTestsPath.fsPath);
} catch (error) {
requireError = error;
}
......@@ -320,7 +319,7 @@ export class ExtensionHostMain {
// Execute the runner if it follows our spec
if (testRunner && typeof testRunner.run === 'function') {
return new TPromise<void>((c, e) => {
testRunner.run(this._environment.extensionTestsPath, (error, failures) => {
testRunner.run(this._environment.extensionTestsPath.fsPath, (error, failures) => {
if (error) {
e(error.toString());
} else {
......@@ -338,7 +337,17 @@ export class ExtensionHostMain {
this.gracefulExit(1 /* ERROR */);
}
return TPromise.wrapError<void>(new Error(requireError ? requireError.toString() : nls.localize('extensionTestError', "Path {0} does not point to a valid extension test runner.", this._environment.extensionTestsPath)));
return TPromise.wrapError<void>(new Error(requireError ? requireError.toString() : nls.localize('extensionTestError', "Path {0} does not point to a valid extension test runner.", this._environment.extensionTestsPath.fsPath)));
}
private review(initData: IInitData): IInitData {
initData.extensions.forEach((ext) => (<any>ext).extensionLocation = URI.revive(ext.extensionLocation));
initData.environment.appRoot = URI.revive(initData.environment.appRoot);
initData.environment.appSettingsHome = URI.revive(initData.environment.appSettingsHome);
initData.environment.extensionDevelopmentLocationURI = URI.revive(initData.environment.extensionDevelopmentLocationURI);
initData.environment.extensionTestsPath = URI.revive(initData.environment.extensionDevelopmentLocationURI);
initData.logsLocation = URI.revive(initData.logsLocation);
return initData;
}
private gracefulExit(code: number): void {
......
......@@ -389,10 +389,10 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter {
parentPid: process.pid,
environment: {
isExtensionDevelopmentDebug: this._isExtensionDevDebug,
appRoot: this._environmentService.appRoot,
appSettingsHome: this._environmentService.appSettingsHome,
appRoot: this._environmentService.appRoot ? URI.file(this._environmentService.appRoot) : void 0,
appSettingsHome: this._environmentService.appSettingsHome ? URI.file(this._environmentService.appSettingsHome) : void 0,
extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI,
extensionTestsPath: this._environmentService.extensionTestsPath
extensionTestsPath: this._environmentService.extensionTestsPath ? URI.file(this._environmentService.extensionTestsPath) : void 0
},
workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? null : {
configuration: workspace.configuration,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册