commit f57659f98cf5cba0c806e87caec8d069f656a6e2
parent 18d0581dbab41f8f37262cc082752a50928f75ec
Author: Florian Dold <florian@dold.me>
Date: Mon, 28 Apr 2025 20:00:48 +0200
harness: allow specifying comma-separated list of test globs
Diffstat:
1 file changed, 23 insertions(+), 12 deletions(-)
diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts b/packages/taler-harness/src/integrationtests/testrunner.ts
@@ -41,8 +41,8 @@ import { runCurrencyScopeTest } from "./test-currency-scope.js";
import { runDenomLostTest } from "./test-denom-lost.js";
import { runDenomUnofferedTest } from "./test-denom-unoffered.js";
import { runDepositFaultTest } from "./test-deposit-fault.js";
-import { runDepositTest } from "./test-deposit.js";
import { runDepositMergeTest } from "./test-deposit-merge.js";
+import { runDepositTest } from "./test-deposit.js";
import { runExchangeDepositTest } from "./test-exchange-deposit.js";
import { runExchangeManagementFaultTest } from "./test-exchange-management-fault.js";
import { runExchangeManagementTest } from "./test-exchange-management.js";
@@ -66,6 +66,8 @@ import { runKycExchangeWalletTest } from "./test-kyc-exchange-wallet.js";
import { runKycFormWithdrawalTest } from "./test-kyc-form-withdrawal.js";
import { runKycMerchantActivateBankAccountTest } from "./test-kyc-merchant-activate-bank-account.js";
import { runKycMerchantAggregateTest } from "./test-kyc-merchant-aggregate.js";
+import { runKycMerchantDepositRewriteTest } from "./test-kyc-merchant-deposit-rewrite.js";
+import { runKycMerchantDepositTest } from "./test-kyc-merchant-deposit.js";
import { runKycNewMeasureTest } from "./test-kyc-new-measure.js";
import { runKycNewMeasuresProgTest } from "./test-kyc-new-measures-prog.js";
import { runKycPeerPullTest } from "./test-kyc-peer-pull.js";
@@ -95,16 +97,17 @@ import { runPaymentFaultTest } from "./test-payment-fault.js";
import { runPaymentForgettableTest } from "./test-payment-forgettable.js";
import { runPaymentIdempotencyTest } from "./test-payment-idempotency.js";
import { runPaymentMultipleTest } from "./test-payment-multiple.js";
+import { runPaymentShareIdempotencyTest } from "./test-payment-share-idempotency.js";
import { runPaymentShareTest } from "./test-payment-share.js";
import { runPaymentTemplateTest } from "./test-payment-template.js";
import { runPaymentTransientTest } from "./test-payment-transient.js";
import { runPaymentZeroTest } from "./test-payment-zero.js";
import { runPaymentTest } from "./test-payment.js";
import { runPaywallFlowTest } from "./test-paywall-flow.js";
-import { runPeerPullTest } from "./test-peer-pull.js";
-import { runPeerPushTest } from "./test-peer-push.js";
import { runPeerPullLargeTest } from "./test-peer-pull-large.js";
+import { runPeerPullTest } from "./test-peer-pull.js";
import { runPeerPushLargeTest } from "./test-peer-push-large.js";
+import { runPeerPushTest } from "./test-peer-push.js";
import { runPeerRepairTest } from "./test-peer-repair.js";
import { runRefundAutoTest } from "./test-refund-auto.js";
import { runRefundGoneTest } from "./test-refund-gone.js";
@@ -141,6 +144,7 @@ import { runWalletNotificationsTest } from "./test-wallet-notifications.js";
import { runWalletObservabilityTest } from "./test-wallet-observability.js";
import { runWalletRefreshErrorsTest } from "./test-wallet-refresh-errors.js";
import { runWalletRefreshTest } from "./test-wallet-refresh.js";
+import { runWalletTokensTest } from "./test-wallet-tokens.js";
import { runWalletTransactionsTest } from "./test-wallet-transactions.js";
import { runWalletWirefeesTest } from "./test-wallet-wirefees.js";
import { runWallettestingTest } from "./test-wallettesting.js";
@@ -159,10 +163,6 @@ 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 { runKycMerchantDepositRewriteTest } from "./test-kyc-merchant-deposit-rewrite.js";
-import { runKycMerchantDepositTest } from "./test-kyc-merchant-deposit.js";
-import { runWalletTokensTest } from "./test-wallet-tokens.js";
-import { runPaymentShareIdempotencyTest } from "./test-payment-share-idempotency.js";
/**
* Test runner.
@@ -321,7 +321,7 @@ const allTests: TestMainFunction[] = [
export interface TestRunSpec {
includePattern?: string;
suiteSpec?: string;
- testDir?: string,
+ testDir?: string;
dryRun?: boolean;
failFast?: boolean;
waitOnFail?: boolean;
@@ -409,11 +409,11 @@ export async function runTests(spec: TestRunSpec) {
} catch (e) {
// Ignore
}
- fs.mkdirSync(testRootDir)
+ fs.mkdirSync(testRootDir);
} else {
testRootDir = fs.mkdtempSync(
path.join(os.tmpdir(), "taler-integrationtests-"),
- )
+ );
}
updateCurrentSymlink(testRootDir);
console.log(`testsuite root directory: ${testRootDir}`);
@@ -443,10 +443,21 @@ export async function runTests(spec: TestRunSpec) {
const filteredTests: TestMainFunction[] = [];
+ const patterns = spec.includePattern?.split(",");
+
for (const [n, testCase] of allTests.entries()) {
const testName = getTestName(testCase);
- if (spec.includePattern && !minimatch(testName, spec.includePattern)) {
- continue;
+ if (patterns) {
+ let matched = false;
+ for (const pat of patterns) {
+ if (minimatch(testName, pat)) {
+ matched = true;
+ break;
+ }
+ }
+ if (!matched) {
+ continue;
+ }
}
if (testCase.experimental && !spec.includeExperimental) {