33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import vm from 'node:vm';
|
|
|
|
const source = fs.readFileSync(path.resolve('frontend/src/lib/log/debug.js'), 'utf8');
|
|
const values = new Map();
|
|
const localStorage = {
|
|
getItem(key) { return values.has(key) ? values.get(key) : null; },
|
|
setItem(key, value) { values.set(key, String(value)); },
|
|
removeItem(key) { values.delete(key); },
|
|
};
|
|
const context = vm.createContext({
|
|
console: { log() {} },
|
|
localStorage,
|
|
window: { location: { search: '' } },
|
|
});
|
|
const module = new vm.SourceTextModule(source, { context, identifier: 'debug.js' });
|
|
await module.link(() => { throw new Error('debug.js must not import modules'); });
|
|
await module.evaluate();
|
|
|
|
const { debug } = module.namespace;
|
|
debug.enable({ persist: false });
|
|
|
|
assert.equal(debug.isEnabled(), true, 'session debug should enable diagnostics');
|
|
assert.equal(
|
|
localStorage.getItem('verstak-debug'),
|
|
null,
|
|
'a --debug session must not make diagnostics persist into ordinary launches',
|
|
);
|
|
|
|
console.log('debug mode smoke passed');
|