From ecf763126e858a7878b078fa94f96cee18b5900d Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 6 Aug 2020 18:16:04 +0530 Subject: improve test shutdown on errors --- packages/taler-integrationtests/src/harness.ts | 40 ++++++++++++++------------ 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'packages') diff --git a/packages/taler-integrationtests/src/harness.ts b/packages/taler-integrationtests/src/harness.ts index 21ab51ebd..17a21232a 100644 --- 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) { 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) { -- cgit v1.2.3