From 6d1e60975687c88f17bc22650dbe154098ecbe8b Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Tue, 6 Oct 2026 02:02:06 -0400 Subject: [PATCH 1/3] ci: run conformance on main and weekly; soldb v0.4.0 --- .github/workflows/ethdebug.yml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ethdebug.yml b/.github/workflows/ethdebug.yml index 9ee0788c60..c039183151 100644 --- a/.github/workflows/ethdebug.yml +++ b/.github/workflows/ethdebug.yml @@ -10,6 +10,18 @@ on: - "schemas/**" - "packages/format/**" - "packages/conformance/**" + push: + branches: [main] + paths: + - ".github/workflows/ethdebug.yml" + - "package.json" + - "yarn.lock" + - "tsconfig*.json" + - "schemas/**" + - "packages/format/**" + - "packages/conformance/**" + schedule: + - cron: "0 6 * * 1" workflow_dispatch: inputs: solidity_ref: @@ -18,17 +30,17 @@ on: required: true soldb_ref: description: SolDB ref to build - default: v0.3.0 + default: v0.4.0 required: true concurrency: - group: ethdebug-${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true + group: ethdebug-${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} env: FOUNDRY_VERSION: v1.0.0 SOLIDITY_REF: ${{ github.event.inputs.solidity_ref || 'develop' }} - SOLDB_REF: ${{ github.event.inputs.soldb_ref || 'v0.3.0' }} + SOLDB_REF: ${{ github.event.inputs.soldb_ref || 'v0.4.0' }} jobs: conformance: From 2b8258997838a1b39618dc52025100beb19cdc04 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Tue, 6 Oct 2026 02:07:29 -0400 Subject: [PATCH 2/3] conformance: match SolDB v0.4.0's breakpoint hit line, which drops the PC --- packages/conformance/src/adapters/soldb.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/conformance/src/adapters/soldb.ts b/packages/conformance/src/adapters/soldb.ts index 7616dc9fd8..493f1c519c 100644 --- a/packages/conformance/src/adapters/soldb.ts +++ b/packages/conformance/src/adapters/soldb.ts @@ -73,17 +73,23 @@ export function sourceBreakpointScript(target: string): string { return `break ${target}\ncontinue\nq\n`; } +function escapeRegExp(text: string): string { + return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + export function observeSourceBreakpoint( result: SoldbResult, target: string, ): { set: boolean; hit: boolean; stoppedAtTarget: boolean } { return { // SolDB numbers breakpoints, e.g. `Breakpoint #1 set at Counter.sol:8` and - // `Breakpoint #1 hit at step 88, Counter.sol:8, PC 558`, so match the stable - // fragments rather than an exact, unnumbered prefix. + // `Breakpoint #1 hit at step 88, Counter.sol:8` (older releases append + // `, PC 558`), so match the stable fragments rather than an exact prefix. set: result.stdout.includes(`set at ${target}`), hit: /Breakpoint #\d+ hit at step/.test(result.stdout), - stoppedAtTarget: result.stdout.includes(`${target}, PC`), + stoppedAtTarget: new RegExp(`hit at step \\d+, ${escapeRegExp(target)}\\b`).test( + result.stdout, + ), }; } From c73b0494daeaf2807906554beefc27074eaa920d Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Tue, 6 Oct 2026 02:07:36 -0400 Subject: [PATCH 3/3] conformance: format --- packages/conformance/src/adapters/soldb.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/conformance/src/adapters/soldb.ts b/packages/conformance/src/adapters/soldb.ts index 493f1c519c..ecc1b96468 100644 --- a/packages/conformance/src/adapters/soldb.ts +++ b/packages/conformance/src/adapters/soldb.ts @@ -87,9 +87,9 @@ export function observeSourceBreakpoint( // `, PC 558`), so match the stable fragments rather than an exact prefix. set: result.stdout.includes(`set at ${target}`), hit: /Breakpoint #\d+ hit at step/.test(result.stdout), - stoppedAtTarget: new RegExp(`hit at step \\d+, ${escapeRegExp(target)}\\b`).test( - result.stdout, - ), + stoppedAtTarget: new RegExp( + `hit at step \\d+, ${escapeRegExp(target)}\\b`, + ).test(result.stdout), }; }