diff --git a/.changeset/strong-ducks-heal.md b/.changeset/strong-ducks-heal.md new file mode 100644 index 00000000000..83e684d6cb8 --- /dev/null +++ b/.changeset/strong-ducks-heal.md @@ -0,0 +1,5 @@ +--- +"hardhat": patch +--- + +Expose `gasLimit` configuration for Solidity tests [#7996](https://github.com/NomicFoundation/hardhat/pull/7996) diff --git a/v-next/hardhat/src/internal/builtin-plugins/solidity-test/config.ts b/v-next/hardhat/src/internal/builtin-plugins/solidity-test/config.ts index f9c02cf9438..52a7184187f 100644 --- a/v-next/hardhat/src/internal/builtin-plugins/solidity-test/config.ts +++ b/v-next/hardhat/src/internal/builtin-plugins/solidity-test/config.ts @@ -44,6 +44,7 @@ const solidityTestUserConfigType = z.object({ coinbase: z.string().startsWith("0x").optional(), blockTimestamp: z.bigint().optional(), prevRandao: z.bigint().optional(), + gasLimit: z.bigint().optional(), blockGasLimit: z.bigint().or(z.literal(false)).optional(), fuzz: z .object({ diff --git a/v-next/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts b/v-next/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts index b7e9947fb45..24d40c8cf2f 100644 --- a/v-next/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts +++ b/v-next/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts @@ -35,6 +35,7 @@ declare module "../../../types/test.js" { coinbase?: string; // 0x-prefixed hex string blockTimestamp?: bigint; prevRandao?: bigint; + gasLimit?: bigint; blockGasLimit?: bigint | false; fuzz?: { diff --git a/v-next/hardhat/test/internal/builtin-plugins/solidity-test/helpers.ts b/v-next/hardhat/test/internal/builtin-plugins/solidity-test/helpers.ts index 4cd38cedb44..d2c765ff94d 100644 --- a/v-next/hardhat/test/internal/builtin-plugins/solidity-test/helpers.ts +++ b/v-next/hardhat/test/internal/builtin-plugins/solidity-test/helpers.ts @@ -136,6 +136,30 @@ describe("solidityTestConfigToSolidityTestRunnerConfigArgs", () => { assert.equal(args.disableBlockGasLimit, false); }); + it("sets gasLimit when it is undefined", async () => { + const args = await solidityTestConfigToSolidityTestRunnerConfigArgs({ + chainType: GENERIC_CHAIN_TYPE, + projectRoot: process.cwd(), + config: { gasLimit: undefined }, + verbosity: 1, + generateGasReport: false, + }); + + assert.equal(args.gasLimit, undefined); + }); + + it("sets gasLimit when it is a bigint", async () => { + const args = await solidityTestConfigToSolidityTestRunnerConfigArgs({ + chainType: GENERIC_CHAIN_TYPE, + projectRoot: process.cwd(), + config: { gasLimit: 12_000_000n }, + verbosity: 1, + generateGasReport: false, + }); + + assert.equal(args.gasLimit, 12_000_000n); + }); + it("sets blockDifficulty based on prevRandao", async () => { const args = await solidityTestConfigToSolidityTestRunnerConfigArgs({ chainType: GENERIC_CHAIN_TYPE,