Scaffold: Fix test creation

Fixes #3167
This commit is contained in:
Abe Jellinek 2023-06-15 16:18:57 -07:00
parent 4273448b5d
commit c124ca9738

View file

@ -999,9 +999,13 @@ var Scaffold = new function () {
var translator = _getTranslatorFromPane(); var translator = _getTranslatorFromPane();
if (functionToRun.startsWith('detect')) { if (functionToRun.startsWith('detect')) {
if (isRemoteWeb) { if (isRemoteWeb) {
translate.setTranslator(translator); try {
detectHandler(translate, await translate.detect()); translate.setTranslator(translator);
translate.dispose(); detectHandler(translate, await translate.detect());
}
finally {
translate.dispose();
}
} }
else { else {
// don't let target prevent translator from operating // don't let target prevent translator from operating
@ -1016,15 +1020,19 @@ var Scaffold = new function () {
} }
} }
else if (isRemoteWeb) { else if (isRemoteWeb) {
translate.setHandler("select", selectItems); try {
translate.setTranslator(translator); translate.setHandler("select", selectItems);
let items = await translate.translate({ libraryID: false }); translate.setTranslator(translator);
if (items) { let items = await translate.translate({ libraryID: false });
for (let item of items) { if (items) {
itemDone(translate, item); for (let item of items) {
itemDone(translate, item);
}
} }
} }
translate.dispose(); finally {
translate.dispose();
}
} }
else { else {
// don't let the detectCode prevent the translator from operating // don't let the detectCode prevent the translator from operating
@ -1660,24 +1668,24 @@ var Scaffold = new function () {
let input = await _getInput(type); let input = await _getInput(type);
if (type == "web") { if (type == "web") {
let tester = new Zotero_TranslatorTester( let translate = new RemoteTranslate();
_getTranslatorFromPane(), try {
type, await translate.setBrowser(_browser);
_debug, await translate.setTranslatorProvider(_translatorProvider);
_translatorProvider translate.setTranslator(_getTranslatorFromPane());
); translate.setHandler("debug", _debug);
return new Promise( translate.setHandler("error", _error);
(resolve, reject) => tester.newTest(input, translate.setHandler("newTestDetectionFailed", _confirmCreateExpectedFailTest);
(obj, newTest) => { // "done" handler for do let newTest = await translate.newTest();
if (newTest) { if (!newTest) {
resolve(_sanitizeItemsInTest(newTest)); throw new Error('Creation failed');
} }
else { newTest = _sanitizeItemsInTest(newTest);
reject(new Error('Creation failed')); return newTest;
} }
}, finally {
_confirmCreateExpectedFailTest) translate.dispose();
); }
} }
else if (type == "import" || type == "search") { else if (type == "import" || type == "search") {
let test = { type, input: input, items: [] }; let test = { type, input: input, items: [] };
@ -2032,18 +2040,22 @@ var Scaffold = new function () {
} }
let translate = new RemoteTranslate(); let translate = new RemoteTranslate();
await translate.setBrowser(browser); try {
await translate.setTranslatorProvider(_translatorProvider); await translate.setBrowser(browser);
translate.setTranslator(_getTranslatorFromPane()); await translate.setTranslatorProvider(_translatorProvider);
translate.setHandler("debug", _debug); translate.setTranslator(_getTranslatorFromPane());
translate.setHandler("error", _error); translate.setHandler("debug", _debug);
translate.setHandler("newTestDetectionFailed", _confirmCreateExpectedFailTest); translate.setHandler("error", _error);
let newTest = await translate.newTest(); translate.setHandler("newTestDetectionFailed", _confirmCreateExpectedFailTest);
translate.dispose(); let newTest = await translate.newTest();
newTest = _sanitizeItemsInTest(newTest); newTest = _sanitizeItemsInTest(newTest);
this.newTests.push(newTest); this.newTests.push(newTest);
this.testDoneCallback(newTest); this.testDoneCallback(newTest);
this._updateTests(); this._updateTests();
}
finally {
translate.dispose();
}
} }
catch (e) { catch (e) {
Zotero.logError(e); Zotero.logError(e);