Files
dj/model-bridge/test_persistent_data.cjs
T

25 lines
1.2 KiB
JavaScript

const fs = require('node:fs');
const path = require('node:path');
const vm = require('node:vm');
const assert = require('node:assert/strict');
const source = fs.readFileSync(process.argv[2] || path.join(__dirname, '../huobao-source/desktop/dist/main.js'),'utf8');
function extract(name) {
const start = source.indexOf(`function ${name}(`);
return source.slice(start,source.indexOf('\n}',start)+2);
}
let config = null;
const context = vm.createContext({
path5:path.win32,
process:{resourcesPath:'D:\\web\\dj\\HuobaoDrama\\resources'},
import_electron3:{app:{isPackaged:true,getPath:()=> 'C:\\Users\\pc\\AppData\\Roaming\\HuobaoDrama'}},
fs5:{existsSync:()=>config!==null,readFileSync:()=>config,mkdirSync:()=>{}},
console:{warn:()=>{}}
});
vm.runInContext(`const STORAGE_CONFIG_FILE='storage-config.json';${extract('storageConfigPath')}\n${extract('loadStorageConfig')}\nthis.load=loadStorageConfig;`,context);
assert.equal(context.load(),'D:\\web\\dj\\huobao-data');
config='{bad json';
assert.equal(context.load(),'D:\\web\\dj\\huobao-data');
config=JSON.stringify({version:1,dataDir:'E:\\MyDramaData'});
assert.equal(context.load(),'E:\\MyDramaData');
console.log('Persistent data: fresh profile, invalid profile config and custom directory passed.');