Skip to content

[do not merge]: Test breaking interface change.#7642

Closed
larryob wants to merge 13 commits into
mainfrom
test-interface-checker-breaking
Closed

[do not merge]: Test breaking interface change.#7642
larryob wants to merge 13 commits into
mainfrom
test-interface-checker-breaking

Conversation

@larryob
Copy link
Copy Markdown
Contributor

@larryob larryob commented Dec 17, 2025

N/A

larryob and others added 4 commits December 11, 2025 00:06
Add a new CI workflow to detect interface (ABI) changes in Solidity contracts,
similar to the existing bytecode checker. This helps catch unintended breaking
changes to contract interfaces during PRs.

- Add interface.sh script using `forge inspect <Contract> abi`
- Add interface-analysis.yml workflow to compare interfaces between PR and base
- Add `interface` npm script to package.json

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update the interface analysis workflow to only fail when functions are
removed from contract interfaces (breaking changes). Function additions
are now reported as non-breaking and don't cause failures.

- Add comparison mode to interface.sh using jq to parse ABIs
- Extract and compare function signatures between base and HEAD
- Report additions as info, fail only on removals

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This is a breaking change that modifies the function signature from
processor(bytes32) to processor(bytes32,bool) to verify that the
interface checker correctly detects and fails on function removals.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Dec 17, 2025

⚠️ No Changeset found

Latest commit: 9c7672a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

larryob and others added 4 commits December 17, 2025 12:34
…rIsm

- Migrate interface-analysis.yml from yarn to pnpm
- Update checkout action to v6
- Fix TrustedRelayerIsm.sol to pass required second arg to processor()

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Migrate interface-analysis.yml from yarn to pnpm
- Update checkout action to v6

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
larryob and others added 5 commits December 17, 2025 14:24
Include output types in function signature comparison so that changes
to return types are detected as breaking changes.

Format: functionName(inputs)->(outputs)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Now checks for breaking changes in:
- Functions (with inputs and outputs)
- Events
- Errors
- Constructor signature changes
- Fallback/receive function removals

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tests cover detection of all ABI breaking changes:
- Function removals
- Return type changes
- Event removals
- Error removals
- Constructor changes
- Receive function removals
- Fallback function removals
- No changes (should pass)
- Additions only (should pass)

Run with: pnpm -C solidity test:interface

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update contract extraction regex to also capture abstract contracts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@hyper-gonk
Copy link
Copy Markdown
Contributor

hyper-gonk Bot commented Dec 17, 2025

🐳 Monorepo Docker Image Built Successfully

Image Tags:

gcr.io/abacus-labs-dev/hyperlane-monorepo:pr-7642
gcr.io/abacus-labs-dev/hyperlane-monorepo:9c7672a-20251217-204457

@larryob larryob closed this Jan 23, 2026
@github-project-automation github-project-automation Bot moved this from In Review to Done in Hyperlane Tasks Jan 23, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Jan 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.01%. Comparing base (b3027cf) to head (9c7672a).
⚠️ Report is 137 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##           main    #7642       +/-   ##
=========================================
+ Coverage      0   77.01%   +77.01%     
=========================================
  Files         0      117      +117     
  Lines         0     2649     +2649     
  Branches      0      244      +244     
=========================================
+ Hits          0     2040     +2040     
- Misses        0      593      +593     
- Partials      0       16       +16     
Components Coverage Δ
core 87.65% <ø> (∅)
hooks 71.86% <ø> (∅)
isms 81.06% <ø> (∅)
token 86.67% <ø> (∅)
middlewares 84.98% <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

1 participant