From 3574fb02d42bfdcb76fc44334becc12491f9c826 Mon Sep 17 00:00:00 2001 From: djole Date: Tue, 15 Sep 2026 12:48:57 +0200 Subject: [PATCH] conformance: match SolDB's numbered breakpoint output and pin to v0.3.0 The source-line breakpoint check parsed for `Breakpoint set at , PC` and `Breakpoint hit at step`, but SolDB numbers its breakpoints and prints `Breakpoint #1 set at Counter.sol:8` and `Breakpoint #1 hit at step 88, Counter.sol:8, PC 558`. The `#1` broke both substring matches, so the observer reported the breakpoint neither set nor hit even though SolDB stopped at the line. Match the stable fragments instead. The consumer conformance also built SolDB from `main`; pin it to the v0.3.0 release so the check runs against a stable, published debugger. --- .github/workflows/ethdebug.yml | 4 ++-- packages/conformance/src/adapters/soldb.ts | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ethdebug.yml b/.github/workflows/ethdebug.yml index c90884c1de..9ee0788c60 100644 --- a/.github/workflows/ethdebug.yml +++ b/.github/workflows/ethdebug.yml @@ -18,7 +18,7 @@ on: required: true soldb_ref: description: SolDB ref to build - default: main + default: v0.3.0 required: true concurrency: @@ -28,7 +28,7 @@ concurrency: env: FOUNDRY_VERSION: v1.0.0 SOLIDITY_REF: ${{ github.event.inputs.solidity_ref || 'develop' }} - SOLDB_REF: ${{ github.event.inputs.soldb_ref || 'main' }} + SOLDB_REF: ${{ github.event.inputs.soldb_ref || 'v0.3.0' }} jobs: conformance: diff --git a/packages/conformance/src/adapters/soldb.ts b/packages/conformance/src/adapters/soldb.ts index bf319791dc..ff2f2401ee 100644 --- a/packages/conformance/src/adapters/soldb.ts +++ b/packages/conformance/src/adapters/soldb.ts @@ -76,8 +76,11 @@ export function observeSourceBreakpoint( target: string, ): { set: boolean; hit: boolean; stoppedAtTarget: boolean } { return { - set: result.stdout.includes(`Breakpoint set at ${target}, PC`), - hit: result.stdout.includes("Breakpoint hit at step"), + // 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. + set: result.stdout.includes(`set at ${target}`), + hit: /Breakpoint #\d+ hit at step/.test(result.stdout), stoppedAtTarget: result.stdout.includes(`${target}, PC`), }; }