Skip to content

Commit 4255874

Browse files
authored
Merge pull request #7101 from NomicFoundation/regroup-test-configs-under-test-object
regroup test configs under a test object
2 parents 4ccbe1a + c1e3202 commit 4255874

File tree

18 files changed

+162
-27
lines changed

18 files changed

+162
-27
lines changed

.changeset/khaki-seahorses-develop.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"hardhat": patch
3+
---
4+
5+
Group `mocha` and `solidityTest` config under `test` property ([#7101](https://github.com/NomicFoundation/hardhat/pull/7101))

v-next/example-project/hardhat.config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,14 @@ const config: HardhatUserConfig = {
207207
typechain: {
208208
tsNocheck: false,
209209
},
210+
test: {
211+
mocha: {
212+
color: true,
213+
},
214+
solidity: {
215+
timeout: 1000,
216+
},
217+
},
210218
};
211219

212220
export default config;

v-next/hardhat-mocha/src/hookHandlers/config.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,11 @@ const mochaConfigType = z.object({
7373
});
7474

7575
const userConfigType = z.object({
76-
mocha: z.optional(mochaConfigType),
76+
test: z
77+
.object({
78+
mocha: z.optional(mochaConfigType),
79+
})
80+
.optional(),
7781
paths: z
7882
.object({
7983
test: conditionalUnionType(
@@ -110,10 +114,13 @@ export default async (): Promise<Partial<ConfigHooks>> => {
110114

111115
return {
112116
...resolvedConfig,
113-
mocha: {
114-
timeout: 40000,
115-
...resolvedConfig.mocha,
116-
...userConfig.mocha,
117+
test: {
118+
...resolvedConfig.test,
119+
mocha: {
120+
timeout: 40000,
121+
...resolvedConfig.test.mocha,
122+
...userConfig.test?.mocha,
123+
},
117124
},
118125
paths: {
119126
...resolvedConfig.paths,

v-next/hardhat-mocha/src/task-action.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ const testWithHardhat: NewTaskActionFunction<TestActionArguments> = async (
6767

6868
const { default: Mocha } = await import("mocha");
6969

70-
const mochaConfig: MochaOptions = { ...hre.config.mocha };
70+
const mochaConfig: MochaOptions = { ...hre.config.test.mocha };
7171

7272
if (grep !== "") {
7373
mochaConfig.grep = grep;

v-next/hardhat-mocha/src/type-extensions.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,22 @@ import "hardhat/types/config";
33
import type { MochaOptions } from "mocha";
44

55
declare module "hardhat/types/config" {
6-
export interface HardhatUserConfig {
7-
mocha?: MochaOptions;
8-
}
9-
106
export interface TestPathsUserConfig {
117
mocha?: string;
128
}
139

14-
export interface HardhatConfig {
15-
mocha: MochaOptions;
16-
}
17-
1810
export interface TestPathsConfig {
1911
mocha: string;
2012
}
2113
}
14+
15+
import "hardhat/types/test";
16+
declare module "hardhat/types/test" {
17+
export interface HardhatTestUserConfig {
18+
mocha?: MochaOptions;
19+
}
20+
21+
export interface HardhatTestConfig {
22+
mocha: MochaOptions;
23+
}
24+
}

v-next/hardhat-mocha/test/fixture-projects/invalid-mocha-config/hardhat.config.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import HardhatMochaPlugin from "../../../src/index.js";
44

55
const config: HardhatUserConfig = {
66
plugins: [HardhatMochaPlugin],
7-
mocha: {
8-
// @ts-expect-error -- testing config validation
9-
delay: 123,
7+
test: {
8+
mocha: {
9+
// @ts-expect-error -- testing config validation
10+
delay: 123,
11+
},
1012
},
1113
};
1214

v-next/hardhat-mocha/test/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe("Hardhat Mocha plugin", () => {
3333
const { createHardhatRuntimeEnvironment } = await import("hardhat/hre");
3434

3535
const errors =
36-
"\t* Config error in config.mocha.delay: Expected boolean, received number";
36+
"\t* Config error in config.test.mocha.delay: Expected boolean, received number";
3737

3838
const hardhatConfig = await import(
3939
"./fixture-projects/invalid-mocha-config/hardhat.config.js"

v-next/hardhat/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"./types/plugins": "./dist/src/types/plugins.js",
3232
"./types/providers": "./dist/src/types/providers.js",
3333
"./types/tasks": "./dist/src/types/tasks.js",
34+
"./types/test": "./dist/src/types/test.js",
3435
"./types/user-interruptions": "./dist/src/types/user-interruptions.js",
3536
"./types/utils": "./dist/src/types/utils.js",
3637
"./types/solidity": "./dist/src/types/solidity.js",

v-next/hardhat/src/internal/builtin-plugins/solidity-test/config.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,11 @@ const userConfigType = z.object({
7777
).optional(),
7878
})
7979
.optional(),
80-
solidityTest: solidityTestUserConfigType.optional(),
80+
test: z
81+
.object({
82+
solidityTest: solidityTestUserConfigType.optional(),
83+
})
84+
.optional(),
8185
});
8286

8387
export function validateSolidityTestUserConfig(
@@ -100,7 +104,7 @@ export async function resolveSolidityTestUserConfig(
100104

101105
const solidityTest = {
102106
rpcCachePath: defaultRpcCachePath,
103-
...userConfig.solidityTest,
107+
...userConfig.test?.solidity,
104108
};
105109

106110
return {
@@ -112,6 +116,9 @@ export async function resolveSolidityTestUserConfig(
112116
solidity: resolveFromRoot(resolvedConfig.paths.root, testsPath),
113117
},
114118
},
115-
solidityTest,
119+
test: {
120+
...resolvedConfig.test,
121+
solidity: solidityTest,
122+
},
116123
};
117124
}

v-next/hardhat/src/internal/builtin-plugins/solidity-test/helpers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { RunOptions } from "./runner.js";
22
import type { Abi } from "../../../types/artifacts.js";
3-
import type { SolidityTestConfig } from "../../../types/config.js";
43
import type { ChainType } from "../../../types/network.js";
4+
import type { SolidityTestConfig } from "../../../types/test.js";
55
import type {
66
SolidityTestRunnerConfigArgs,
77
PathPermission,

0 commit comments

Comments
 (0)