mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-17 18:25:42 +02:00
63 lines
2.8 KiB
JavaScript
63 lines
2.8 KiB
JavaScript
// Run: node --test electron/experimentalChannelDecision.test.js
|
|
//
|
|
// ENG-292. The measured failure this encodes: 1.7.8-exp.1 installed from the DMG, Settings never
|
|
// opened, quit once, and CFBundleShortVersionString came back 1.7.7. The experimental build
|
|
// uninstalled itself because a default toggle was read as a deliberate opt-out.
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { experimentalChannelDecision } = require('./experimentalChannelDecision');
|
|
|
|
const EXP = '1.7.8-exp.1';
|
|
const STABLE = '1.7.7';
|
|
|
|
test('the exact measured failure: fresh prerelease install, toggle never touched', () => {
|
|
const d = experimentalChannelDecision(EXP, undefined);
|
|
assert.equal(d.allowPrerelease, true, 'installing a prerelease is the opt-in');
|
|
assert.equal(d.allowDowngrade, false, 'this is what silently reverted the user to stable');
|
|
assert.equal(d.seedStoredTo, true, 'persist it so the renderer push does not re-assert the default');
|
|
});
|
|
|
|
test('an explicit opt-out on a prerelease still moves you to stable', () => {
|
|
const d = experimentalChannelDecision(EXP, false);
|
|
assert.equal(d.allowPrerelease, false);
|
|
assert.equal(d.allowDowngrade, true, 'the deliberate opt-out path must keep working');
|
|
assert.equal(d.seedStoredTo, null, 'never overwrite a choice the user actually made');
|
|
});
|
|
|
|
test('an explicit opt-in on a prerelease stays put', () => {
|
|
const d = experimentalChannelDecision(EXP, true);
|
|
assert.equal(d.allowPrerelease, true);
|
|
assert.equal(d.allowDowngrade, false, 'nothing to downgrade to; staying is correct');
|
|
});
|
|
|
|
test('a stable build keeps the un-ship-a-bad-release lever', () => {
|
|
for (const stored of [undefined, false]) {
|
|
const d = experimentalChannelDecision(STABLE, stored);
|
|
assert.equal(d.allowPrerelease, false);
|
|
assert.equal(d.allowDowngrade, true, 'we must still be able to re-flip GH latest and pull users back');
|
|
assert.equal(d.seedStoredTo, null);
|
|
}
|
|
});
|
|
|
|
test('a stable build with the toggle on takes prereleases, and may downgrade', () => {
|
|
const d = experimentalChannelDecision(STABLE, true);
|
|
assert.equal(d.allowPrerelease, true);
|
|
assert.equal(d.allowDowngrade, true);
|
|
});
|
|
|
|
test('garbage stored values are treated as never-set, not as false', () => {
|
|
for (const junk of [null, 0, 1, '', 'true', 'false', {}, []]) {
|
|
const d = experimentalChannelDecision(EXP, junk);
|
|
assert.equal(d.allowPrerelease, true, `stored=${JSON.stringify(junk)} must not read as an opt-out`);
|
|
assert.equal(d.allowDowngrade, false, `stored=${JSON.stringify(junk)} must not license a downgrade`);
|
|
}
|
|
});
|
|
|
|
test('a missing version string cannot be mistaken for a prerelease', () => {
|
|
for (const v of [undefined, null, '']) {
|
|
const d = experimentalChannelDecision(v, undefined);
|
|
assert.equal(d.allowPrerelease, false);
|
|
assert.equal(d.allowDowngrade, true);
|
|
}
|
|
});
|