taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit ecf763126e858a7878b078fa94f96cee18b5900d
parent 710f8ade3372975612fbce65dc87a256805c6a3b
Author: Florian Dold <florian.dold@gmail.com>
Date:   Thu,  6 Aug 2020 18:16:04 +0530

improve test shutdown on errors

Diffstat:
Mpackages/taler-integrationtests/src/harness.ts | 40++++++++++++++++++++++------------------
1 file changed, 22 insertions(+), 18 deletions(-)

diff --git a/packages/taler-integrationtests/src/harness.ts b/packages/taler-integrationtests/src/harness.ts @@ -869,33 +869,37 @@ export interface MerchantInstanceConfig { defaultPayDelay?: time.Duration; } +function shouldLinger(): boolean { + return process.env["TALER_TEST_KEEP"] == "1"; +} + export function runTest(testMain: (gc: GlobalTestState) => Promise<void>) { const main = async () => { - const gc = new GlobalTestState({ - testDir: await makeTempDir(), - }); + let gc: GlobalTestState | undefined; + let ret = 0; try { + gc = new GlobalTestState({ + testDir: await makeTempDir(), + }); await testMain(gc); + } catch (e) { + console.error("FATAL: test failed with exception", e); + ret = 1; } finally { - await gc.terminate(); - if (process.env["TALER_TEST_KEEP"] !== "1") { - console.log("test logs and config can be found under", gc.testDir); + if (gc) { + if (shouldLinger()) { + console.log("test logs and config can be found under", gc.testDir); + console.log("keeping test environment running"); + } else { + await gc.terminate(); + console.log("test logs and config can be found under", gc.testDir); + process.exit(ret); + } } } }; - main().catch((e) => { - console.error("FATAL: test failed with exception"); - if (e instanceof Error) { - console.error(e); - } else { - console.error(e); - } - - if (process.env["TALER_TEST_KEEP"] !== "1") { - process.exit(1); - } - }); + main(); } function shellWrap(s: string) {