Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android'
- Manifest: devtools/client/shared/remote-debugging/test/xpcshell/xpcshell.toml
/* global equal */
"use strict";
const {
_compareVersionCompatibility,
checkVersionCompatibility,
COMPATIBILITY_STATUS,
} = require("resource://devtools/client/shared/remote-debugging/version-checker.js");
const TEST_DATA = [
{
description: "same build date and same version number",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190131000000",
runtimeVersion: "60.0",
expected: COMPATIBILITY_STATUS.COMPATIBLE,
},
{
description: "same build date and older version in range (-1)",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190131000000",
runtimeVersion: "59.0",
expected: COMPATIBILITY_STATUS.COMPATIBLE,
},
{
description: "same build date and older version in range (-2)",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190131000000",
runtimeVersion: "58.0",
expected: COMPATIBILITY_STATUS.COMPATIBLE,
},
{
description: "same build date and older version in range (-2 Nightly)",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190131000000",
runtimeVersion: "58.0a1",
expected: COMPATIBILITY_STATUS.COMPATIBLE,
},
{
description: "same build date and older version out of range (-3)",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190131000000",
runtimeVersion: "57.0",
expected: COMPATIBILITY_STATUS.TOO_OLD,
},
{
description: "same build date and newer version out of range (+1)",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190131000000",
runtimeVersion: "61.0",
expected: COMPATIBILITY_STATUS.TOO_RECENT,
},
{
description: "same major version and build date in range (-10 days)",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190121000000",
runtimeVersion: "60.0",
expected: COMPATIBILITY_STATUS.COMPATIBLE,
},
{
description: "same major version and build date in range (+2 days)",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190202000000",
runtimeVersion: "60.0",
expected: COMPATIBILITY_STATUS.COMPATIBLE,
},
{
description: "same major version and build date out of range (+8 days)",
localBuildId: "20190131000000",
localVersion: "60.0",
runtimeBuildId: "20190208000000",
runtimeVersion: "60.0",
expected: COMPATIBILITY_STATUS.TOO_RECENT,
},
{
description:
"fennec 68 compatibility error not raised for 68 -> 68 Android",
localBuildId: "20190131000000",
localVersion: "68.0",
runtimeBuildId: "20190202000000",
runtimeVersion: "68.0",
runtimeOs: "Android",
expected: COMPATIBILITY_STATUS.COMPATIBLE,
},
{
description:
"fennec 68 compatibility error not raised for 70 -> 68 Android",
localBuildId: "20190131000000",
localVersion: "70.0",
runtimeBuildId: "20190202000000",
runtimeVersion: "68.0",
runtimeOs: "Android",
expected: COMPATIBILITY_STATUS.COMPATIBLE,
},
{
description: "fennec 68 compatibility error raised for 71 -> 68 Android",
localBuildId: "20190131000000",
localVersion: "71.0",
runtimeBuildId: "20190202000000",
runtimeVersion: "68.0",
runtimeOs: "Android",
expected: COMPATIBILITY_STATUS.TOO_OLD_FENNEC,
},
{
description:
"fennec 68 compatibility error not raised for 71 -> 68 non-Android",
localBuildId: "20190131000000",
localVersion: "71.0",
runtimeBuildId: "20190202000000",
runtimeVersion: "68.0",
runtimeOs: "NotAndroid",
expected: COMPATIBILITY_STATUS.TOO_OLD,
},
];
add_task(async function testVersionChecker() {
for (const testData of TEST_DATA) {
const localDescription = {
appbuildid: testData.localBuildId,
platformversion: testData.localVersion,
};
const runtimeDescription = {
appbuildid: testData.runtimeBuildId,
platformversion: testData.runtimeVersion,
os: testData.runtimeOs,
};
const report = _compareVersionCompatibility(
localDescription,
runtimeDescription
);
equal(
report.status,
testData.expected,
"Expected status for test: " + testData.description
);
}
});
add_task(async function testVersionCheckWithVeryOldClient() {
// Use an empty object as devtools client, calling any method on it will fail.
const emptyClient = {};
const report = await checkVersionCompatibility(emptyClient);
equal(
report.status,
COMPATIBILITY_STATUS.TOO_OLD,
"Report status too old if devtools client is not implementing expected interface"
);
});