Files

50 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

import assert from 'node:assert/strict';
import test from 'node:test';
import { assertUpdaterCapability } from './updater-capability.mjs';
test('preserves updater behavior outside packaged Linux', () => {
assert.doesNotThrow(() => assertUpdaterCapability({ platform: 'darwin', packaged: true }));
assert.doesNotThrow(() => assertUpdaterCapability({ platform: 'win32', packaged: true }));
assert.doesNotThrow(() => assertUpdaterCapability({ platform: 'linux', packaged: false }));
});
test('rejects packaged Linux execution outside an AppImage', () => {
assert.throws(
() => assertUpdaterCapability({ platform: 'linux', packaged: true, appImagePath: '' }),
/Start OpenChamber from its \.AppImage file/,
);
});
test('rejects missing and non-writable AppImages with actionable errors', () => {
assert.throws(
() => assertUpdaterCapability({
platform: 'linux',
packaged: true,
appImagePath: '/opt/OpenChamber.AppImage',
stat: () => { throw new Error('missing'); },
}),
/cannot be found.*valid \.AppImage file/,
);
assert.throws(
() => assertUpdaterCapability({
platform: 'linux',
packaged: true,
appImagePath: '/opt/OpenChamber.AppImage',
stat: () => ({ isFile: () => true }),
access: () => { throw new Error('read-only'); },
}),
/not writable.*grant write permission/,
);
});
test('accepts a writable packaged AppImage', () => {
assert.doesNotThrow(() => assertUpdaterCapability({
platform: 'linux',
packaged: true,
appImagePath: '/home/user/OpenChamber.AppImage',
stat: () => ({ isFile: () => true }),
access: () => {},
}));
});