in testApi.ts [71:114]
export async function getCppToolsTestApi(version: Version): Promise<CppToolsTestApi | undefined> {
let cpptools: vscode.Extension<any> | undefined = vscode.extensions.getExtension("ms-vscode.cpptools");
let extension: CppToolsTestApi | CppToolsTestExtension;
let api: CppToolsTestApi | undefined;
if (cpptools) {
if (!cpptools.isActive) {
extension = await cpptools.activate();
} else {
extension = cpptools.exports;
}
if (isCppToolsTestExtension(extension)) {
// ms-vscode.cpptools > 0.17.5
try {
api = extension.getTestApi(version);
} catch (err) {
// Unfortunately, ms-vscode.cpptools [0.17.6, 0.18.1] throws a RangeError if you specify a version greater than v1.
// These versions of the extension will not be able to act on the newer interface and v2 is a superset of v1, so we can safely fall back to v1.
let e: RangeError = <RangeError>err;
if (e.message && e.message.startsWith("Invalid version")) {
api = extension.getTestApi(Version.v1);
}
}
if (version !== Version.v1) {
if (!api.getVersion) {
console.warn(`vscode-cpptools-api version ${version} requested, but is not available in the current version of the cpptools extension. Using version 1 instead.`);
} else if (version !== api.getVersion()) {
console.warn(`vscode-cpptools-api version ${version} requested, but is not available in the current version of the cpptools extension. Using version ${api.getVersion()} instead.`);
}
}
} else {
// ms-vscode.cpptools version 0.17.5
api = extension;
if (version !== Version.v0) {
console.warn(`vscode-cpptools-api version ${version} requested, but is not available in version 0.17.5 of the cpptools extension. Using version 0 instead.`);
}
}
} else {
console.warn("C/C++ extension is not installed");
}
return api;
}