Do not rely on `console.log` for exiting tests

pull/125754/head
Alexandru Dima 2021-06-09 21:47:18 +02:00
parent 043b9fbeb6
commit b1bc7be9d1
No known key found for this signature in database
GPG Key ID: 6E58D7B045760DA0
3 changed files with 21 additions and 22 deletions

View File

@ -5,8 +5,9 @@
import { DEFAULT_LOG_LEVEL, LogLevel, AdapterLogger, ILogger } from 'vs/platform/log/common/log';
interface IAutomatedWindow {
export interface IAutomatedWindow {
codeAutomationLog(type: string, args: any[]): void;
codeAutomationExit(code: number): void;
}
function logLevelToString(level: LogLevel): string {
@ -16,7 +17,7 @@ function logLevelToString(level: LogLevel): string {
case LogLevel.Info: return 'info';
case LogLevel.Warning: return 'warn';
case LogLevel.Error: return 'error';
case LogLevel.Critical: return 'critical';
case LogLevel.Critical: return 'error';
}
return 'info';
}

View File

@ -28,6 +28,7 @@ import { IExtensionManagementService } from 'vs/platform/extensionManagement/com
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { IExtensionManifestPropertiesService } from 'vs/workbench/services/extensions/common/extensionManifestPropertiesService';
import { IUserDataInitializationService } from 'vs/workbench/services/userData/browser/userDataInit';
import { IAutomatedWindow } from 'vs/platform/log/browser/log';
export class ExtensionService extends AbstractExtensionService implements IExtensionService {
@ -220,10 +221,10 @@ export class ExtensionService extends AbstractExtensionService implements IExten
// Dispose everything associated with the extension host
this.stopExtensionHosts();
// We log the exit code to the console. Do NOT remove this
// code as the automated integration tests in browser rely
// on this message to exit properly.
console.log(`vscode:exit ${code}`);
const automatedWindow = window as unknown as IAutomatedWindow;
if (typeof automatedWindow.codeAutomationExit === 'function') {
automatedWindow.codeAutomationExit(code);
}
}
}

View File

@ -54,23 +54,20 @@ async function runTestsInBrowser(browserType: BrowserType, endpoint: url.UrlWith
console[type](...args);
});
page.on('console', async (msg: playwright.ConsoleMessage) => {
const msgText = msg.text();
if (msgText.indexOf('vscode:exit') >= 0) {
try {
await browser.close();
} catch (error) {
console.error(`Error when closing browser: ${error}`);
}
try {
await pkill(server.pid);
} catch (error) {
console.error(`Error when killing server process tree: ${error}`);
}
process.exit(msgText === 'vscode:exit 0' ? 0 : 1);
await page.exposeFunction('codeAutomationExit', async (code: number) => {
try {
await browser.close();
} catch (error) {
console.error(`Error when closing browser: ${error}`);
}
try {
await pkill(server.pid);
} catch (error) {
console.error(`Error when killing server process tree: ${error}`);
}
process.exit(code);
});
}