Skip to content

use forge std from npm - #533

Merged
RensR merged 9 commits into
developfrom
use-forge-std-from-npm
Aug 21, 2026
Merged

use forge std from npm#533
RensR merged 9 commits into
developfrom
use-forge-std-from-npm

Conversation

@RensR

@RensR RensR commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Removes the vendor forge-std (20k+ lines) and replaces it with an NPM ref. The PR also updates it, which is significantly easier/safer using the ref.

uses: ./.github/actions/setup-nodejs
with:
prod: "true"
prod: "false"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needed because forge-std is a dev dependency

Comment thread contracts/GNUmakefile
@@ -1,6 +1,6 @@
# ALL_FOUNDRY_PRODUCTS contains a list of all products that have a foundry
# profile defined and use the Foundry snapshots.
ALL_FOUNDRY_PRODUCTS = automation-cre keystone l2ep llo-feeds operatorforwarder payments shared workflow data-feeds

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These have been moved out a while ago, fixing tech debt

@RensR
RensR marked this pull request as ready for review August 21, 2026 10:12
Copilot AI lite review requested due to automatic review settings August 21, 2026 10:12
@RensR
RensR requested review from a team as code owners August 21, 2026 10:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the vendored forge-std Solidity sources and switches the project to consume forge-std via an NPM-installed GitHub reference, updating remappings/CI accordingly. It also adjusts Solidity pragmas and regenerates related gas snapshots to reflect the updated toolchain/dependency state.

Changes:

  • Replace vendored contracts/src/v0.8/vendor/forge-std usage with node_modules/forge-std via updated Foundry remappings and NPM devDependencies.
  • Relax several pragma solidity 0.8.6; declarations to ^0.8.6 for compatibility with Foundry profiles that compile with newer solc versions.
  • Update CI and regenerate gas snapshot artifacts to match the new dependency source and resulting compilation/gas deltas.

Reviewed changes

Copilot reviewed 22 out of 54 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
contracts/src/v0.8/vrf/VRFSubscriptionBalanceMonitor.sol Relax Solidity pragma to allow newer 0.8.x compilers.
contracts/src/v0.8/vrf/testhelpers/VRFv2Consumer.sol Relax Solidity pragma to allow newer 0.8.x compilers.
contracts/src/v0.8/vrf/testhelpers/VRFSubscriptionBalanceMonitorExposed.sol Relax Solidity pragma and normalize header formatting.
contracts/src/v0.8/vrf/test/VRFCoordinatorV2Mock.t.sol Relax pragma and update expected emitted payment values.
contracts/src/v0.8/vrf/test/ChainSpecificUtil.t.sol Relax Solidity pragma to allow newer 0.8.x compilers.
contracts/src/v0.8/vrf/ChainSpecificUtil_v0_8_6.sol Relax Solidity pragma to allow newer 0.8.x compilers.
contracts/src/v0.8/vrf/BatchVRFCoordinatorV2.sol Relax Solidity pragma to allow newer 0.8.x compilers.
contracts/src/v0.8/vendor/forge-std/src/Test.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdUtils.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdToml.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdStyle.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdStorage.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdMath.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdJson.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdInvariant.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdError.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdConstants.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdCheats.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdChains.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/StdAssertions.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/Script.sol Remove vendored forge-std source (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IMulticall3.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC7575.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC7540.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC721.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC6909.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC4626.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC20.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC165.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC1155.sol Remove vendored forge-std interface (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/console2.sol Remove vendored forge-std helper (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/forge-std/src/Base.sol Remove vendored forge-std base contracts (migrate to NPM-provided copy).
contracts/src/v0.8/vendor/@eth-optimism/contracts/v0.8.6/contracts/L2/predeploys/OVM_GasPriceOracle.sol Relax Solidity pragma to allow newer 0.8.x compilers.
contracts/snapshots/DataFeedsCacheGasTest.json Add/update gas snapshot JSON output for data-feeds cache tests.
contracts/remappings.txt Point forge-std/ remapping at node_modules/forge-std/src/.
contracts/pnpm-lock.yaml Lock forge-std dependency fetched from GitHub tarball.
contracts/package.json Add forge-std as a devDependency via GitHub ref.
contracts/GNUmakefile Update Foundry products list used for snapshot generation.
contracts/gas-snapshots/shared.gas-snapshot Update shared gas snapshot values.
contracts/gas-snapshots/payments.gas-snapshot Update payments gas snapshot values.
contracts/gas-snapshots/operatorforwarder.gas-snapshot Update operatorforwarder gas snapshot values.
contracts/gas-snapshots/l2ep.gas-snapshot Update l2ep gas snapshot values.
contracts/gas-snapshots/data-feeds.gas-snapshot Update data-feeds gas snapshot values.
contracts/cre/remappings.txt Point CRE forge-std/ remapping at node_modules/forge-std/src/.
contracts/cre/pnpm-lock.yaml Lock CRE forge-std dependency fetched from GitHub tarball.
contracts/cre/package.json Add forge-std to CRE devDependencies via GitHub ref.
contracts/cre/gas-snapshots/v1.gas-snapshot Update CRE v1 gas snapshot values.
contracts/cre/gas-snapshots/dev.gas-snapshot Update CRE dev gas snapshot values.
.github/workflows/solidity-foundry.yml Ensure Node install includes devDependencies (so forge-std is available).
Files not reviewed (2)
  • contracts/cre/pnpm-lock.yaml: Generated file
  • contracts/pnpm-lock.yaml: Generated file

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread contracts/GNUmakefile
@RensR
RensR enabled auto-merge (squash) August 21, 2026 11:41
@RensR
RensR merged commit 928326b into develop Aug 21, 2026
58 of 60 checks passed
@RensR
RensR deleted the use-forge-std-from-npm branch August 21, 2026 11:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants