diff --git a/.changeset/violet-walls-decide.md b/.changeset/violet-walls-decide.md new file mode 100644 index 00000000000..82c1241f04f --- /dev/null +++ b/.changeset/violet-walls-decide.md @@ -0,0 +1,6 @@ +--- +"@nomicfoundation/hardhat-errors": patch +"hardhat": patch +--- + +Breaking change: removed `timeout` option for Solidity tests in `hardhat.config.ts` file. diff --git a/packages/hardhat-errors/src/descriptors.ts b/packages/hardhat-errors/src/descriptors.ts index f011801c9b6..c06eadaf63f 100644 --- a/packages/hardhat-errors/src/descriptors.ts +++ b/packages/hardhat-errors/src/descriptors.ts @@ -1097,6 +1097,7 @@ Please double check your transactions' parameters.`, websiteDescription: `Build info not found for contract while compiling Solidity test contracts.`, }, RUNNER_TIMEOUT: { + // [DEPRECATED] number: 801, messageTemplate: `Runner timed out after {duration} ms. diff --git a/packages/hardhat/src/internal/builtin-plugins/solidity-test/config.ts b/packages/hardhat/src/internal/builtin-plugins/solidity-test/config.ts index 7753867ea6c..cbe77c861c4 100644 --- a/packages/hardhat/src/internal/builtin-plugins/solidity-test/config.ts +++ b/packages/hardhat/src/internal/builtin-plugins/solidity-test/config.ts @@ -28,7 +28,6 @@ export const DEFAULT_FUZZ_SEED = "0x7727ea51af0441c20da14dcd68a15dac8c9ebd589c5be8fa8c87c1d3720450bc"; const solidityTestUserConfigType = z.object({ - timeout: z.number().optional(), fsPermissions: z .object({ readWriteFile: z.array(z.string()).optional(), diff --git a/packages/hardhat/src/internal/builtin-plugins/solidity-test/helpers.ts b/packages/hardhat/src/internal/builtin-plugins/solidity-test/helpers.ts index f9b7158087e..43c71a2b5e8 100644 --- a/packages/hardhat/src/internal/builtin-plugins/solidity-test/helpers.ts +++ b/packages/hardhat/src/internal/builtin-plugins/solidity-test/helpers.ts @@ -1,4 +1,3 @@ -import type { RunOptions } from "./runner.js"; import type { Abi } from "../../../types/artifacts.js"; import type { ChainType } from "../../../types/network.js"; import type { SolidityTestConfig } from "../../../types/test.js"; @@ -41,12 +40,6 @@ interface SolidityTestConfigParams { testFunctionOverrides?: TestFunctionOverride[]; } -export function solidityTestConfigToRunOptions( - config: SolidityTestConfig, -): RunOptions { - return config; -} - export async function solidityTestConfigToSolidityTestRunnerConfigArgs({ chainType, projectRoot, diff --git a/packages/hardhat/src/internal/builtin-plugins/solidity-test/runner.ts b/packages/hardhat/src/internal/builtin-plugins/solidity-test/runner.ts index 59119fe2c8f..e5f41302735 100644 --- a/packages/hardhat/src/internal/builtin-plugins/solidity-test/runner.ts +++ b/packages/hardhat/src/internal/builtin-plugins/solidity-test/runner.ts @@ -17,13 +17,6 @@ import { getGlobalEdrContext } from "../../edr/context.js"; import { formatArtifactId } from "./formatters.js"; -export interface RunOptions { - /** - * The maximum time in milliseconds to wait for all the test suites to finish. - */ - timeout?: number; -} - /** * Run all the given solidity tests and returns the stream of results. * @@ -47,7 +40,6 @@ export function run( testRunnerConfig: SolidityTestRunnerConfigArgs, tracingConfig: TracingConfigWithBuffers, sourceNameToUserSourceName: Map, - options?: RunOptions, ): TestsStream { const stream = new ReadableStream({ async start(controller) { @@ -63,21 +55,6 @@ export function run( ), ); - let timeout: NodeJS.Timeout | undefined; - if (options?.timeout !== undefined) { - timeout = setTimeout(() => { - controller.error( - new HardhatError( - HardhatError.ERRORS.CORE.SOLIDITY_TESTS.RUNNER_TIMEOUT, - { - duration: options.timeout, - suites: Array.from(remainingSuites).join(", "), - }, - ), - ); - }, options.timeout); - } - // TODO: Add support for predeploys once EDR supports them. try { const edrContext = await getGlobalEdrContext(); @@ -96,8 +73,6 @@ export function run( formatArtifactId(suiteResult.id, sourceNameToUserSourceName), ); if (remainingSuites.size === 0) { - clearTimeout(timeout); - if (runCompleted) { controller.close(); } @@ -116,8 +91,6 @@ export function run( } catch (error) { ensureError(error); - clearTimeout(timeout); - controller.error( new HardhatError( HardhatError.ERRORS.CORE.SOLIDITY_TESTS.UNHANDLED_EDR_ERROR_SOLIDITY_TESTS, diff --git a/packages/hardhat/src/internal/builtin-plugins/solidity-test/task-action.ts b/packages/hardhat/src/internal/builtin-plugins/solidity-test/task-action.ts index d3a4bcb0f31..a1963e71c0f 100644 --- a/packages/hardhat/src/internal/builtin-plugins/solidity-test/task-action.ts +++ b/packages/hardhat/src/internal/builtin-plugins/solidity-test/task-action.ts @@ -33,7 +33,6 @@ import { import { isTestSuiteArtifact, warnDeprecatedTestFail, - solidityTestConfigToRunOptions, solidityTestConfigToSolidityTestRunnerConfigArgs, } from "./helpers.js"; import { getTestFunctionOverrides } from "./inline-config/index.js"; @@ -195,8 +194,6 @@ const runSolidityTests: NewTaskActionFunction = async ( })), ignoreContracts: false, }; - const runOptions = solidityTestConfigToRunOptions(solidityTestConfig); - await hre.hooks.runHandlerChain( "test", "onTestRunStart", @@ -211,7 +208,6 @@ const runSolidityTests: NewTaskActionFunction = async ( testRunnerConfig, tracingConfig, sourceNameToUserSourceName, - runOptions, ); let failed = 0; diff --git a/packages/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts b/packages/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts index a6fa998ac75..ce6b0ab232e 100644 --- a/packages/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts +++ b/packages/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts @@ -31,7 +31,6 @@ declare module "../../../types/test.js" { } export interface SolidityTestConfigBase { - timeout?: number; fsPermissions?: { readWriteFile?: string[]; readFile?: string[]; diff --git a/packages/hardhat/test/internal/builtin-plugins/solidity-test/config-validation.ts b/packages/hardhat/test/internal/builtin-plugins/solidity-test/config-validation.ts index dabe84d808b..90e548147a0 100644 --- a/packages/hardhat/test/internal/builtin-plugins/solidity-test/config-validation.ts +++ b/packages/hardhat/test/internal/builtin-plugins/solidity-test/config-validation.ts @@ -20,14 +20,14 @@ describe("config validation", () => { { test: { solidity: { - timeout: 5000, + isolate: true, }, }, }, solidityTestPlugin, ); - assert.equal(hre.config.test.solidity.timeout, 5000); + assert.equal(hre.config.test.solidity.isolate, true); }); it("should not throw when the `test.solidity` config is not set by the user", async () => { @@ -45,7 +45,7 @@ describe("config validation", () => { /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- intentionally violating the types for the test */ solidity: { - timeout: "not a number", + isolate: "not a boolean", } as any, }, }; @@ -58,7 +58,7 @@ describe("config validation", () => { HardhatError.ERRORS.CORE.GENERAL.INVALID_CONFIG, { errors: - "\t* Config error in config.test.solidity.timeout: Expected number, received string", + "\t* Config error in config.test.solidity.isolate: Expected boolean, received string", }, ); }); diff --git a/packages/hardhat/test/internal/builtin-plugins/test/config.ts b/packages/hardhat/test/internal/builtin-plugins/test/config.ts index 15156fa2bfb..f7126a36c44 100644 --- a/packages/hardhat/test/internal/builtin-plugins/test/config.ts +++ b/packages/hardhat/test/internal/builtin-plugins/test/config.ts @@ -19,7 +19,7 @@ describe("test/config", function () { it("should keep the existing `test` config provided", async () => { const existingTestConfig = { solidity: { - timeout: 123, + isolate: true, }, }; @@ -29,8 +29,8 @@ describe("test/config", function () { }); assert.equal( - hre.config.test.solidity.timeout, - existingTestConfig.solidity.timeout, + hre.config.test.solidity.isolate, + existingTestConfig.solidity.isolate, ); }); });