85 lines
2.4 KiB
JavaScript
85 lines
2.4 KiB
JavaScript
const path = require('path');
|
|
|
|
const {
|
|
normalizeUpdateVersion,
|
|
compareUpdateVersions,
|
|
isNewerUpdateVersion
|
|
} = require(path.join(process.cwd(), 'dist', 'update-version-utils.js'));
|
|
|
|
function run() {
|
|
const failures = [];
|
|
|
|
const assert = (condition, message) => {
|
|
if (!condition) failures.push(message);
|
|
};
|
|
|
|
const comparisons = [
|
|
{ left: '4.1.18', right: '4.1.10', expected: 1 },
|
|
{ left: '4.1.10', right: '4.1.18', expected: -1 },
|
|
{ left: 'v4.1.12', right: '4.1.12', expected: 0 },
|
|
{ left: '4.1.12', right: '4.1.12.1', expected: -1 },
|
|
{ left: '4.2.0', right: '4.1.999', expected: 1 },
|
|
{ left: '4.1.12-beta', right: '4.1.12', expected: 0 }
|
|
];
|
|
|
|
const compareResults = comparisons.map((testCase) => {
|
|
const actual = compareUpdateVersions(testCase.left, testCase.right);
|
|
const pass = actual === testCase.expected;
|
|
assert(pass, `compare failed: ${testCase.left} vs ${testCase.right} expected ${testCase.expected}, got ${actual}`);
|
|
return { ...testCase, actual, pass };
|
|
});
|
|
|
|
const skipVersionScenarios = [
|
|
{
|
|
name: 'old downloaded, newer available',
|
|
downloaded: '4.1.11',
|
|
latestKnown: '4.1.18',
|
|
expectedNeedsNewer: true
|
|
},
|
|
{
|
|
name: 'already latest downloaded',
|
|
downloaded: '4.1.18',
|
|
latestKnown: '4.1.18',
|
|
expectedNeedsNewer: false
|
|
},
|
|
{
|
|
name: 'downgrade should not trigger',
|
|
downloaded: '4.1.18',
|
|
latestKnown: '4.1.11',
|
|
expectedNeedsNewer: false
|
|
}
|
|
];
|
|
|
|
const scenarioResults = skipVersionScenarios.map((scenario) => {
|
|
const needsNewer = isNewerUpdateVersion(scenario.latestKnown, scenario.downloaded);
|
|
const pass = needsNewer === scenario.expectedNeedsNewer;
|
|
assert(pass, `${scenario.name} expected ${scenario.expectedNeedsNewer}, got ${needsNewer}`);
|
|
return { ...scenario, needsNewer, pass };
|
|
});
|
|
|
|
const normalizationChecks = {
|
|
fromVPrefix: normalizeUpdateVersion('v4.1.12') === '4.1.12',
|
|
trimmed: normalizeUpdateVersion(' 4.1.12 ') === '4.1.12'
|
|
};
|
|
|
|
assert(normalizationChecks.fromVPrefix, 'normalize did not remove v prefix');
|
|
assert(normalizationChecks.trimmed, 'normalize did not trim whitespace');
|
|
|
|
const summary = {
|
|
checks: {
|
|
compareResults,
|
|
scenarioResults,
|
|
normalizationChecks
|
|
},
|
|
failures
|
|
};
|
|
|
|
console.log(JSON.stringify(summary, null, 2));
|
|
|
|
if (failures.length) {
|
|
process.exitCode = 1;
|
|
}
|
|
}
|
|
|
|
run();
|