@vscode/js-debug-browsers
Version:
Browser launch and discovery logic used in VS Code's JavaScript Debugger
96 lines • 4.61 kB
JavaScript
;
/*---------------------------------------------------------
* Copyright (C) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const sinon_1 = require("sinon");
const chai_1 = require("chai");
const darwinEdge_1 = require("./darwinEdge");
describe('darwin: edge', () => {
const lsreturn = [
'/Applications/Microsoft Edge Beta.app',
' /Applications/Microsoft Edge Dev.app/Contents/Frameworks/Microsoft Edge Framework.framework/Versions/77.0.218.4/Helpers/Microsoft Edge Helper.app',
' /Applications/Microsoft Edge Dev.app/Contents/Frameworks/Microsoft Edge Framework.framework/Versions/77.0.197.1/Helpers/Microsoft Edge Helper.app',
' /Applications/Microsoft Edge Dev.app/Contents/Frameworks/Microsoft Edge Framework.framework/Versions/77.0.223.0/Helpers/Microsoft Edge Helper.app',
' /Applications/Microsoft Edge Dev.app',
' /Applications/Microsoft Edge Beta.localized/Microsoft Edge Beta.app',
' /Applications/Microsoft Edge Beta.app',
' /Applications/Microsoft Edge Dev.app/Contents/Frameworks/Microsoft Edge Framework.framework/Versions/77.0.211.2/Helpers/Microsoft Edge Helper.app',
' /Applications/Microsoft Edge Dev.app/Contents/Frameworks/Microsoft Edge Framework.framework/Versions/77.0.211.3/Helpers/Microsoft Edge Helper.app',
' /Applications/Microsoft Edge Beta.app/Contents/Frameworks/Microsoft Edge Framework.framework/Versions/79.0.309.65/Helpers/Microsoft Edge Helper.app',
' /Applications/Microsoft Edge Canary.app',
' /Applications/Microsoft Edge Beta.app',
];
const setup = (options) => {
const execa = {
command: (0, sinon_1.stub)().resolves({ stdout: options.lsreturn.join('\n') }),
};
const fs = {
access: (path) => {
if (!options.pathsThatExist.includes(path)) {
throw new Error('no access here!');
}
},
};
const finder = new darwinEdge_1.DarwinEdgeBrowserFinder({ EDGE_PATH: '/custom/path' }, fs, execa);
return finder;
};
it('does not return when paths dont exist', async () => {
(0, chai_1.expect)(await setup({
lsreturn,
pathsThatExist: [],
}).findAll()).to.be.empty;
});
it('returns and orders correctly', async () => {
(0, chai_1.expect)(await setup({
lsreturn,
pathsThatExist: [
'/custom/path/Contents/MacOS/Microsoft Edge Dev',
'/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta',
'/Applications/Microsoft Edge Dev.app/Contents/MacOS/Microsoft Edge Dev',
'/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
],
}).findAll()).to.deep.equal([
{
path: '/custom/path/Contents/MacOS/Microsoft Edge Dev',
quality: "custom" /* Custom */,
},
{
path: '/Applications/Microsoft Edge Dev.app/Contents/MacOS/Microsoft Edge Dev',
quality: "dev" /* Dev */,
},
{
path: '/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta',
quality: "beta" /* Beta */,
},
{
path: '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
quality: "stable" /* Stable */,
},
]);
});
it('finds well-known paths', async () => {
const s = setup({
lsreturn,
pathsThatExist: [
'/custom/path/Contents/MacOS/Microsoft Edge Dev',
'/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta',
'/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
],
});
let calls = 0;
(0, chai_1.expect)(await s.findWhere((exe) => {
calls++;
return exe.quality === "stable" /* Stable */;
})).to.deep.equal({
path: '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
quality: "stable" /* Stable */,
});
(0, chai_1.expect)(calls).to.equal(1);
(0, chai_1.expect)(await s.findWhere((exe) => {
calls++;
return exe.quality === "canary" /* Canary */;
})).to.be.undefined;
});
});
//# sourceMappingURL=darwinEdge.test.js.map