blob: edb587ea2464d99a4c551c06e5936772f8780661 [file] [log] [blame]
import * as path from 'path';
import { runTests } from 'vscode-test';
async function main() {
// The folder containing the Extension Manifest package.json
// Passed to `--extensionDevelopmentPath`
const extensionDevelopmentPath = path.resolve(__dirname, '../../');
let failed = false;
try {
// The path to the extension test script
// Passed to --extensionTestsPath
const extensionTestsPath = path.resolve(__dirname, './integration/index');
// Download VS Code, unzip it and run the integration test
await runTests({
extensionDevelopmentPath,
extensionTestsPath,
launchArgs: ['--disable-extensions'], // disable all other extensions
});
} catch (err) {
console.error('Failed to run integration tests' + err);
failed = true;
}
// Integration tests using gopls.
try {
// Currently gopls requires a workspace. Code in test environment does not support
// dynamically adding folders.
// tslint:disable-next-line:max-line-length
// https://github.com/microsoft/vscode/blob/890f62dfd9f3e70198931f788c5c332b3e8b7ad7/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts#L281
// So, we start the test extension host with a dummy workspace (test/gopls/testfixtures/src/workspace)
// and copy necessary files to the workspace.
const ws = path.resolve(extensionDevelopmentPath, 'test/gopls/testfixtures/src/workspace');
await runTests({
extensionDevelopmentPath,
extensionTestsPath: path.resolve(__dirname, './gopls/index'),
launchArgs: [
'--disable-extensions', // disable all other extensions
ws // dummy workspace to start with
],
});
} catch (err) {
console.error('Failed to run gopls tests' + err);
failed = true;
}
if (failed) {
process.exit(1);
}
}
main();