Test updates (#1763)

* Allow passing of globals to custom VMs

* Add _serializeError

* Expose document to VM
This commit is contained in:
toasted-nutbread 2021-06-26 17:05:59 -04:00 committed by GitHub
parent f9167c8fdd
commit 73caeac0fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 6 deletions

View File

@ -101,8 +101,8 @@ function atob(data) {
}
class DatabaseVM extends VM {
constructor() {
super({
constructor(globals={}) {
super(Object.assign({
chrome,
Image,
Blob,
@ -111,7 +111,7 @@ class DatabaseVM extends VM {
IDBKeyRange: global.IDBKeyRange,
JSZip,
atob
});
}, globals));
this.context.window = this.context;
this.indexedDB = global.indexedDB;
}

View File

@ -26,8 +26,8 @@ function clone(value) {
}
class TranslatorVM extends DatabaseVM {
constructor() {
super();
constructor(globals) {
super(globals);
this._japaneseUtil = null;
this._translator = null;
this._ankiNoteDataCreator = null;

View File

@ -18,6 +18,7 @@
const fs = require('fs');
const path = require('path');
const assert = require('assert');
const {JSDOM} = require('jsdom');
const {testMain} = require('../dev/util');
const {TranslatorVM} = require('../dev/translator-vm');
@ -27,7 +28,10 @@ function clone(value) {
}
async function createVM() {
const vm = new TranslatorVM();
const dom = new JSDOM();
const {document} = dom.window;
const vm = new TranslatorVM({document});
const dictionaryDirectory = path.join(__dirname, 'data', 'dictionaries', 'valid-dictionary1');
await vm.prepare(dictionaryDirectory, 'Test Dictionary 2');
@ -68,6 +72,25 @@ async function createVM() {
return this._serializeMulti(this._templateRenderer.renderMulti(items));
}
_serializeError(error) {
try {
if (typeof error === 'object' && error !== null) {
return {
name: error.name,
message: error.message,
stack: error.stack,
data: error.data
};
}
} catch (e) {
// NOP
}
return {
value: error,
hasValue: true
};
}
_serializeMulti(array) {
for (let i = 0, ii = array.length; i < ii; ++i) {
const value = array[i];