From 7b1a1480dc440eb1c7b1a6170ac0964bc4c7a3fa Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sat, 22 Feb 2020 13:09:18 -0500 Subject: [PATCH] Add a timeout to clearDatabase This will trigger in case something goes wrong and a database isn't closed. --- test/test-database.js | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/test/test-database.js b/test/test-database.js index 216ae5dd..6fe515e6 100644 --- a/test/test-database.js +++ b/test/test-database.js @@ -107,15 +107,25 @@ function countKanjiWithCharacter(kanji, character) { } -async function clearDatabase() { - const indexedDB = global.indexedDB; - for (const {name} of await indexedDB.databases()) { - await new Promise((resolve, reject) => { - const request = indexedDB.deleteDatabase(name); - request.onerror = (e) => reject(e); - request.onsuccess = () => resolve(); - }); - } +function clearDatabase(timeout) { + return new Promise((resolve, reject) => { + const timer = setTimeout(() => { + reject(new Error(`clearDatabase failed to resolve after ${timeout}ms`)); + }, timeout); + + (async () => { + const indexedDB = global.indexedDB; + for (const {name} of await indexedDB.databases()) { + await new Promise((resolve, reject) => { + const request = indexedDB.deleteDatabase(name); + request.onerror = (e) => reject(e); + request.onsuccess = () => resolve(); + }); + } + clearTimeout(timer); + resolve(); + })(); + }); } @@ -840,11 +850,18 @@ async function testDatabase2() { async function main() { - await testDatabase1(); - await clearDatabase(); + const clearTimeout = 5000; + try { + await testDatabase1(); + await clearDatabase(clearTimeout); - await testDatabase2(); - await clearDatabase(); + await testDatabase2(); + await clearDatabase(clearTimeout); + } catch (e) { + console.log(e); + process.exit(-1); + throw e; + } }