taler-typescript-core

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

commit f2b3b5f28796d53b4f0445ce12abb66916dc25f0
parent c84ac97dc1de944834c3fa6b5c97e58b57ae1f25
Author: Florian Dold <florian@dold.me>
Date:   Sat, 14 Feb 2026 16:43:23 +0100

harness: survive bad exit code from test worker

Diffstat:
Mpackages/taler-harness/src/integrationtests/testrunner.ts | 21++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts b/packages/taler-harness/src/integrationtests/testrunner.ts @@ -16,11 +16,9 @@ import { CancellationToken, - j2s, Logger, minimatch, setGlobalLogLevelFromString, - TalerError, } from "@gnu-taler/taler-util"; import * as child_process from "child_process"; import { spawnSync } from "child_process"; @@ -51,9 +49,9 @@ import { runDenomLostTest } from "./test-denom-lost.js"; import { runDenomUnofferedTest } from "./test-denom-unoffered.js"; import { runDepositFaultTest } from "./test-deposit-fault.js"; import { runDepositLargeTest } from "./test-deposit-large.js"; -import { runDepositTwiceTest } from "./test-deposit-twice.js"; import { runDepositMergeTest } from "./test-deposit-merge.js"; import { runDepositTooLargeTest } from "./test-deposit-too-large.js"; +import { runDepositTwiceTest } from "./test-deposit-twice.js"; import { runDepositTest } from "./test-deposit.js"; import { runDonauCharityManagementTest } from "./test-donau-charity-management.js"; import { runDonauCompatTest } from "./test-donau-compat.js"; @@ -107,6 +105,7 @@ import { runKycWithdrawalVerbotenTest } from "./test-kyc-withdrawal-verboten.js" import { runLibeufinBankTest } from "./test-libeufin-bank.js"; import { runLibeufinConversionTest } from "./test-libeufin-conversion.js"; import { runMerchantAcctselTest } from "./test-merchant-acctsel.js"; +import { runMerchantBankBadWireTargetTest } from "./test-merchant-bank-bad-wire-target.js"; import { runMerchantCategoriesTest } from "./test-merchant-categories.js"; import { runMerchantExchangeConfusionTest } from "./test-merchant-exchange-confusion.js"; import { runMerchantInstancesDeleteTest } from "./test-merchant-instances-delete.js"; @@ -195,6 +194,7 @@ import { runWalletNetworkAvailabilityTest } from "./test-wallet-network-availabi import { runWalletNotificationsTest } from "./test-wallet-notifications.js"; import { runWalletObservabilityTest } from "./test-wallet-observability.js"; import { runWalletRefreshErrorsTest } from "./test-wallet-refresh-errors.js"; +import { runWalletRefreshRedenominateTest } from "./test-wallet-refresh-redenominate.js"; import { runWalletRefreshTest } from "./test-wallet-refresh.js"; import { runWalletTokensDiscountTest } from "./test-wallet-tokens-discount.js"; import { runWalletTokensTest } from "./test-wallet-tokens.js"; @@ -216,9 +216,7 @@ import { runWithdrawalHugeTest } from "./test-withdrawal-huge.js"; import { runWithdrawalIdempotentTest } from "./test-withdrawal-idempotent.js"; import { runWithdrawalManualTest } from "./test-withdrawal-manual.js"; import { runWithdrawalPrepareTest } from "./test-withdrawal-prepare.js"; -import { runMerchantBankBadWireTargetTest } from "./test-merchant-bank-bad-wire-target.js"; import { runWebMerchantLoginTest } from "./web/test-merchant-login.js"; -import { runWalletRefreshRedenominateTest } from "./test-wallet-refresh-redenominate.js"; /** * Test runner. @@ -703,9 +701,18 @@ export async function runTests(spec: TestRunSpec) { name: testName, }; currentChild.kill("SIGTERM"); + } else if (e instanceof Error) { + result = { + status: "fail", + reason: `worker error: ${e.message}`, + timeSec: testTimeoutMs / 1000, + name: testName, + }; + currentChild.kill("SIGTERM"); } else { - logger.error(`test failed: ${j2s(TalerError.fromException(e))}`); - throw Error(e); + currentChild.kill("SIGTERM"); + // Should never happen + throw Error("test failed with strange exception"); } }