diff --git a/packages/contracts-bedrock/scripts/checks/semver-natspec/main.go b/packages/contracts-bedrock/scripts/checks/semver-natspec/main.go index d1e2153c02ef..c6650d9bc2b7 100644 --- a/packages/contracts-bedrock/scripts/checks/semver-natspec/main.go +++ b/packages/contracts-bedrock/scripts/checks/semver-natspec/main.go @@ -63,6 +63,7 @@ func run() error { artifactsDir := filepath.Join(cwd, "forge-artifacts") srcDir := filepath.Join(cwd, "src") + testDir := filepath.Join(cwd, "test") artifactFiles, err := glob(artifactsDir, ".json") if err != nil { @@ -72,6 +73,10 @@ func run() error { if err != nil { return fmt.Errorf("failed to get contract files: %w", err) } + testFiles, err := glob(testDir, ".sol") + if err != nil { + return fmt.Errorf("failed to get test files: %w", err) + } var hasErr int32 var outMtx sync.Mutex @@ -129,8 +134,12 @@ func run() error { return } - contractPath := contractFiles[contractName] - if contractPath == "" { + var contractPath string + if path, ok := contractFiles[contractName]; ok { + contractPath = path + } else if path, ok := testFiles[contractName]; ok { + contractPath = path + } else { fail("%s: Source file not found", contractName) return } diff --git a/packages/contracts-bedrock/test/L2/SuperchainERC20.t.sol b/packages/contracts-bedrock/test/L2/SuperchainERC20.t.sol index bc5785901d14..b4909bf26134 100644 --- a/packages/contracts-bedrock/test/L2/SuperchainERC20.t.sol +++ b/packages/contracts-bedrock/test/L2/SuperchainERC20.t.sol @@ -18,16 +18,7 @@ import { BeaconProxy } from "@openzeppelin/contracts-v5/proxy/beacon/BeaconProxy // Target contract import { SuperchainERC20, ISuperchainERC20Extension } from "src/L2/SuperchainERC20.sol"; import { ISuperchainERC20Errors } from "src/L2/interfaces/ISuperchainERC20.sol"; - -contract SuperchainERC20Implementation is SuperchainERC20 { - function name() public pure override returns (string memory) { - return "SuperchainERC20"; - } - - function symbol() public pure override returns (string memory) { - return "SCE"; - } -} +import { SuperchainERC20ImplementationMock } from "test/mocks/SuperchainERC20ImplementationMock.sol"; /// @title SuperchainERC20Test /// @notice Contract for testing the SuperchainERC20 contract. @@ -40,7 +31,7 @@ contract SuperchainERC20Test is Test { /// @notice Sets up the test suite. function setUp() public { - superchainERC20 = new SuperchainERC20Implementation(); + superchainERC20 = new SuperchainERC20ImplementationMock(); } /// @notice Helper function to setup a mock and expect a call to it. diff --git a/packages/contracts-bedrock/test/mocks/SuperchainERC20ImplementationMock.sol b/packages/contracts-bedrock/test/mocks/SuperchainERC20ImplementationMock.sol new file mode 100644 index 000000000000..c4eb67259e38 --- /dev/null +++ b/packages/contracts-bedrock/test/mocks/SuperchainERC20ImplementationMock.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.25; + +import { SuperchainERC20 } from "src/L2/SuperchainERC20.sol"; + +/// @title SuperchainERC20ImplementationMock +/// @notice Mock contract just to create tests over an implementation of the SuperchainERC20 abstract contract. +contract SuperchainERC20ImplementationMock is SuperchainERC20 { + /// @notice Semantic version. + /// @custom:semver 1.0.0-beta.1 + string public constant override version = "1.0.0-beta.1"; + + function name() public pure override returns (string memory) { + return "SuperchainERC20"; + } + + function symbol() public pure override returns (string memory) { + return "SCE"; + } +}