Bug 1626210 - Add a test for devtools prepare-tcp-connection r=daisuke

Depends on D68982

Differential Revision: https://phabricator.services.mozilla.com/D68987

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Julian Descottes 2020-04-01 09:10:08 +00:00
Родитель c5bbdbffa6
Коммит 68b8fef105
2 изменённых файлов: 80 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,79 @@
"use strict";
const DEVICE_ID = "FAKE_DEVICE_ID";
const SOCKET_PATH = "fake/socket/path";
/**
* Test the prepare-tcp-connection command in isolation.
*/
add_task(async function testParseFileUri() {
info("Enable devtools.testing for this test to allow mocked modules");
const Services = require("Services");
Services.prefs.setBoolPref("devtools.testing", true);
registerCleanupFunction(() => {
Services.prefs.clearUserPref("devtools.testing");
});
// Mocks are not supported for the regular DevTools loader.
info("Create a BrowserLoader to enable mocks in the test");
const { BrowserLoader } = ChromeUtils.import(
"resource://devtools/client/shared/browser-loader.js"
);
const mockedRequire = BrowserLoader({
baseURI: "resource://devtools/client/shared/remote-debugging/adb",
window: {},
}).require;
// Prepare a mocked version of the run-command.js module to test
// prepare-tcp-connection in isolation.
info("Create a run-command module mock");
let createdPort;
const mock = {
runCommand: command => {
// Check that we only receive the expected command and extract the port
// number.
// The command should follow the pattern
// `host-serial:${deviceId}:forward:tcp:${localPort};${devicePort}`
// with devicePort = `localfilesystem:${socketPath}`
const socketPathRe = SOCKET_PATH.replace(/\//g, "\\/");
const regexp = new RegExp(
`host-serial:${DEVICE_ID}:forward:tcp:(\\d+);localfilesystem:${socketPathRe}`
);
const matches = regexp.exec(command);
equal(matches.length, 2, "The command is the expected");
createdPort = matches[1];
// Finally return a Promise-like object.
return {
then: () => {},
};
},
};
info("Enable the mocked run-command module");
const { setMockedModule, removeMockedModule } = mockedRequire(
"devtools/client/shared/browser-loader-mocks"
);
setMockedModule(
mock,
"devtools/client/shared/remote-debugging/adb/commands/run-command"
);
registerCleanupFunction(() => {
removeMockedModule(
"devtools/client/shared/remote-debugging/adb/commands/run-command"
);
});
const { prepareTCPConnection } = mockedRequire(
"devtools/client/shared/remote-debugging/adb/commands/prepare-tcp-connection"
);
const port = await prepareTCPConnection(DEVICE_ID, SOCKET_PATH);
ok(!Number.isNaN(port), "prepareTCPConnection returned a valid port");
equal(
port,
Number(createdPort),
"prepareTCPConnection returned the port sent to the host-serial command"
);
});

Просмотреть файл

@ -8,3 +8,4 @@ support-files =
[test_adb.js]
run-sequentially = An extension having the same id is installed/uninstalled in different tests
[test_prepare-tcp-connection.js]