зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
c5bbdbffa6
Коммит
68b8fef105
|
@ -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]
|
||||
|
|
Загрузка…
Ссылка в новой задаче