hardhat 3.1.0 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # hardhat
2
2
 
3
+ ## 3.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 3575a52: Bumped EDR version to [`0.12.0-next.21`](https://github.com/NomicFoundation/edr/releases/tag/%40nomicfoundation%2Fedr%400.12.0-next.21).
8
+
9
+ ### Minor Changes
10
+
11
+ - NomicFoundation/edr@44e779c: Added function-level configuration overrides for Solidity tests
12
+
13
+ ### Patch Changes
14
+
15
+ - NomicFoundation/edr@b5ad15c: Added support for instrumentation of Solidity `0.8.32` and `0.8.33`
16
+
17
+ - fd70728: Bumped EDR version to [`0.12.0-next.20`](https://www.npmjs.com/package/@nomicfoundation/edr/v/0.12.0-next.20).
18
+
19
+ Patch Changes
20
+
21
+ - NomicFoundation/edr@34e1ab4: Updated base mainnet eip1559 parameters after SystemConfig update on 2025-12-18
22
+ - NomicFoundation/edr@2272bc0: Fixed excess_blob_gas calculation after Osaka
23
+
24
+ ## 3.1.1
25
+
26
+ ### Patch Changes
27
+
28
+ - b3bde25: Disable test summary when mocha is included in runners ([#7781](https://github.com/NomicFoundation/hardhat/issues/7781))
29
+ - 88fcf8b: Bumped EDR version to [`0.12.0-next.19`](https://www.npmjs.com/package/@nomicfoundation/edr/v/0.12.0-next.19).
30
+
31
+ - [faef065](https://github.com/NomicFoundation/edr/commit/faef0656f8c86c6f92c7c309d2373bbca89cbff7): Added support for EIP-7892 (Blob Parameter Only hardforks)
32
+
3
33
  ## 3.1.0
4
34
 
5
35
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"task-action.d.ts","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/test/task-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,yBAAyB,CAAC;AAUjC,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,QAAA,MAAM,WAAW,EAAE,qBAAqB,CAAC,mBAAmB,CA2K3D,CAAC;AAyEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"task-action.d.ts","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/test/task-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,yBAAyB,CAAC;AAUjC,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,QAAA,MAAM,WAAW,EAAE,qBAAqB,CAAC,mBAAmB,CAiK3D,CAAC;AAyEF,eAAe,WAAW,CAAC"}
@@ -20,7 +20,9 @@ const runAllTests = async ({ testFiles, chainType, grep, noCompile, verbosity },
20
20
  }
21
21
  const testSummaries = {};
22
22
  let failureIndex = 1;
23
- for (const subtask of thisTask.subtasks.values()) {
23
+ const subtasks = Array.from(thisTask.subtasks.values());
24
+ const hasMocha = subtasks.some((subtask) => subtask.id[subtask.id.length - 1] === "mocha");
25
+ for (const subtask of subtasks) {
24
26
  const files = getTestFilesForSubtask(subtask, testFiles, subtasksToFiles);
25
27
  if (files === undefined) {
26
28
  // This scenario occurs when `testFiles` are provided,
@@ -38,7 +40,7 @@ const runAllTests = async ({ testFiles, chainType, grep, noCompile, verbosity },
38
40
  if (subtask.options.has("verbosity")) {
39
41
  args.verbosity = verbosity;
40
42
  }
41
- if (subtask.options.has("testSummaryIndex")) {
43
+ if (!hasMocha && subtask.options.has("testSummaryIndex")) {
42
44
  args.testSummaryIndex = failureIndex;
43
45
  const summaryId = subtask.id[subtask.id.length - 1];
44
46
  testSummaries[summaryId] = await subtask.run(args);
@@ -48,74 +50,60 @@ const runAllTests = async ({ testFiles, chainType, grep, noCompile, verbosity },
48
50
  await subtask.run(args);
49
51
  }
50
52
  }
51
- const passed = [];
52
- const failed = [];
53
- const skipped = [];
54
- const todo = [];
55
- const outputLines = [];
56
- for (const [subtaskName, results] of Object.entries(testSummaries)) {
57
- if (results.passed > 0) {
58
- passed.push([subtaskName, results.passed]);
53
+ if (!hasMocha) {
54
+ const passed = [];
55
+ const failed = [];
56
+ const skipped = [];
57
+ const todo = [];
58
+ const outputLines = [];
59
+ for (const [subtaskName, results] of Object.entries(testSummaries)) {
60
+ if (results.passed > 0) {
61
+ passed.push([subtaskName, results.passed]);
62
+ }
63
+ if (results.failed > 0) {
64
+ failed.push([subtaskName, results.failed]);
65
+ }
66
+ if (results.skipped > 0) {
67
+ skipped.push([subtaskName, results.skipped]);
68
+ }
69
+ if (results.todo > 0) {
70
+ todo.push([subtaskName, results.todo]);
71
+ }
72
+ if (results.failureOutput !== "") {
73
+ const output = results.failureOutput;
74
+ if (subtaskName.includes("node")) {
75
+ outputLines.push(`\n${output}\n`);
76
+ }
77
+ else {
78
+ outputLines.push(output);
79
+ }
80
+ }
59
81
  }
60
- if (results.failed > 0) {
61
- failed.push([subtaskName, results.failed]);
82
+ if (passed.length > 0) {
83
+ logSummaryLine("passing", passed, chalk.green);
62
84
  }
63
- if (results.skipped > 0) {
64
- skipped.push([subtaskName, results.skipped]);
85
+ if (failed.length > 0) {
86
+ logSummaryLine("failing", failed, chalk.red);
65
87
  }
66
- if (results.todo > 0) {
67
- todo.push([subtaskName, results.todo]);
88
+ if (skipped.length > 0) {
89
+ logSummaryLine("skipped", skipped, chalk.cyan);
68
90
  }
69
- /**
70
- * Failure formatting test cases:
71
- *
72
- * no failures
73
- * only node
74
- * multiple node
75
- * only solidity
76
- * - 1 top
77
- * - 2 bottom but sometimes - 1 instead??? how many do we need bottom
78
- * multiple solidity
79
- * single node + single solidity
80
- * multiple node + multiple solidity
81
- * single node + multiple solidity
82
- * multiple node + single solidity
83
- *
84
- */
85
- if (results.failureOutput !== "") {
86
- const output = results.failureOutput;
87
- if (subtaskName.includes("node")) {
88
- outputLines.push(`\n${output}\n`);
89
- }
90
- else {
91
- outputLines.push(output);
92
- }
91
+ if (todo.length > 0) {
92
+ logSummaryLine("todo", todo, chalk.blue);
93
93
  }
94
+ if (outputLines.length > 0) {
95
+ console.log(outputLines
96
+ .map((o) => {
97
+ const nl = o.match(/\n+$/gm);
98
+ if (nl !== null) {
99
+ return o.replace(new RegExp(`${nl[0]}$`), "\n");
100
+ }
101
+ return o;
102
+ })
103
+ .join("\n"));
104
+ }
105
+ console.log();
94
106
  }
95
- if (passed.length > 0) {
96
- logSummaryLine("passing", passed, chalk.green);
97
- }
98
- if (failed.length > 0) {
99
- logSummaryLine("failing", failed, chalk.red);
100
- }
101
- if (skipped.length > 0) {
102
- logSummaryLine("skipped", skipped, chalk.cyan);
103
- }
104
- if (todo.length > 0) {
105
- logSummaryLine("todo", todo, chalk.blue);
106
- }
107
- if (outputLines.length > 0) {
108
- console.log(outputLines
109
- .map((o) => {
110
- const nl = o.match(/\n+$/gm);
111
- if (nl !== null) {
112
- return o.replace(new RegExp(`${nl[0]}$`), "\n");
113
- }
114
- return o;
115
- })
116
- .join("\n"));
117
- }
118
- console.log();
119
107
  if (hre.globalOptions.coverage === true) {
120
108
  assertHardhatInvariant(hre instanceof HardhatRuntimeEnvironmentImplementation, "Expected HRE to be an instance of HardhatRuntimeEnvironmentImplementation");
121
109
  const ids = Array.from(thisTask.subtasks.keys());
@@ -1 +1 @@
1
- {"version":3,"file":"task-action.js","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/test/task-action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-action.js","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/test/task-action.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hardhat",
3
- "version": "3.1.0",
3
+ "version": "3.1.2",
4
4
  "description": "Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.",
5
5
  "homepage": "https://github.com/nomicfoundation/hardhat/tree/v-next/v-next/hardhat",
6
6
  "repository": {
@@ -71,7 +71,7 @@
71
71
  "@nomicfoundation/hardhat-test-utils": "^2.0.1"
72
72
  },
73
73
  "dependencies": {
74
- "@nomicfoundation/edr": "0.12.0-next.17",
74
+ "@nomicfoundation/edr": "0.12.0-next.21",
75
75
  "@nomicfoundation/hardhat-errors": "^3.0.6",
76
76
  "@nomicfoundation/hardhat-utils": "^3.0.5",
77
77
  "@nomicfoundation/hardhat-zod-utils": "^3.0.1",
@@ -61,7 +61,11 @@ const runAllTests: NewTaskActionFunction<TestActionArguments> = async (
61
61
  > = {};
62
62
 
63
63
  let failureIndex = 1;
64
- for (const subtask of thisTask.subtasks.values()) {
64
+ const subtasks = Array.from(thisTask.subtasks.values());
65
+ const hasMocha = subtasks.some(
66
+ (subtask) => subtask.id[subtask.id.length - 1] === "mocha",
67
+ );
68
+ for (const subtask of subtasks) {
65
69
  const files = getTestFilesForSubtask(subtask, testFiles, subtasksToFiles);
66
70
 
67
71
  if (files === undefined) {
@@ -84,7 +88,7 @@ const runAllTests: NewTaskActionFunction<TestActionArguments> = async (
84
88
  args.verbosity = verbosity;
85
89
  }
86
90
 
87
- if (subtask.options.has("testSummaryIndex")) {
91
+ if (!hasMocha && subtask.options.has("testSummaryIndex")) {
88
92
  args.testSummaryIndex = failureIndex;
89
93
 
90
94
  const summaryId = subtask.id[subtask.id.length - 1];
@@ -96,87 +100,73 @@ const runAllTests: NewTaskActionFunction<TestActionArguments> = async (
96
100
  }
97
101
  }
98
102
 
99
- const passed: Array<[string, number]> = [];
100
- const failed: Array<[string, number]> = [];
101
- const skipped: Array<[string, number]> = [];
102
- const todo: Array<[string, number]> = [];
103
- const outputLines: string[] = [];
103
+ if (!hasMocha) {
104
+ const passed: Array<[string, number]> = [];
105
+ const failed: Array<[string, number]> = [];
106
+ const skipped: Array<[string, number]> = [];
107
+ const todo: Array<[string, number]> = [];
108
+ const outputLines: string[] = [];
104
109
 
105
- for (const [subtaskName, results] of Object.entries(testSummaries)) {
106
- if (results.passed > 0) {
107
- passed.push([subtaskName, results.passed]);
108
- }
110
+ for (const [subtaskName, results] of Object.entries(testSummaries)) {
111
+ if (results.passed > 0) {
112
+ passed.push([subtaskName, results.passed]);
113
+ }
109
114
 
110
- if (results.failed > 0) {
111
- failed.push([subtaskName, results.failed]);
112
- }
115
+ if (results.failed > 0) {
116
+ failed.push([subtaskName, results.failed]);
117
+ }
113
118
 
114
- if (results.skipped > 0) {
115
- skipped.push([subtaskName, results.skipped]);
116
- }
119
+ if (results.skipped > 0) {
120
+ skipped.push([subtaskName, results.skipped]);
121
+ }
117
122
 
118
- if (results.todo > 0) {
119
- todo.push([subtaskName, results.todo]);
120
- }
123
+ if (results.todo > 0) {
124
+ todo.push([subtaskName, results.todo]);
125
+ }
126
+
127
+ if (results.failureOutput !== "") {
128
+ const output = results.failureOutput;
121
129
 
122
- /**
123
- * Failure formatting test cases:
124
- *
125
- * no failures
126
- * only node
127
- * multiple node
128
- * only solidity
129
- * - 1 top
130
- * - 2 bottom but sometimes - 1 instead??? how many do we need bottom
131
- * multiple solidity
132
- * single node + single solidity
133
- * multiple node + multiple solidity
134
- * single node + multiple solidity
135
- * multiple node + single solidity
136
- *
137
- */
138
- if (results.failureOutput !== "") {
139
- const output = results.failureOutput;
140
-
141
- if (subtaskName.includes("node")) {
142
- outputLines.push(`\n${output}\n`);
143
- } else {
144
- outputLines.push(output);
130
+ if (subtaskName.includes("node")) {
131
+ outputLines.push(`\n${output}\n`);
132
+ } else {
133
+ outputLines.push(output);
134
+ }
145
135
  }
146
136
  }
147
- }
148
137
 
149
- if (passed.length > 0) {
150
- logSummaryLine("passing", passed, chalk.green);
151
- }
138
+ if (passed.length > 0) {
139
+ logSummaryLine("passing", passed, chalk.green);
140
+ }
152
141
 
153
- if (failed.length > 0) {
154
- logSummaryLine("failing", failed, chalk.red);
155
- }
142
+ if (failed.length > 0) {
143
+ logSummaryLine("failing", failed, chalk.red);
144
+ }
156
145
 
157
- if (skipped.length > 0) {
158
- logSummaryLine("skipped", skipped, chalk.cyan);
159
- }
146
+ if (skipped.length > 0) {
147
+ logSummaryLine("skipped", skipped, chalk.cyan);
148
+ }
160
149
 
161
- if (todo.length > 0) {
162
- logSummaryLine("todo", todo, chalk.blue);
163
- }
150
+ if (todo.length > 0) {
151
+ logSummaryLine("todo", todo, chalk.blue);
152
+ }
164
153
 
165
- if (outputLines.length > 0) {
166
- console.log(
167
- outputLines
168
- .map((o) => {
169
- const nl = o.match(/\n+$/gm);
170
- if (nl !== null) {
171
- return o.replace(new RegExp(`${nl[0]}$`), "\n");
172
- }
173
- return o;
174
- })
175
- .join("\n"),
176
- );
177
- }
154
+ if (outputLines.length > 0) {
155
+ console.log(
156
+ outputLines
157
+ .map((o) => {
158
+ const nl = o.match(/\n+$/gm);
159
+ if (nl !== null) {
160
+ return o.replace(new RegExp(`${nl[0]}$`), "\n");
161
+ }
162
+ return o;
163
+ })
164
+ .join("\n"),
165
+ );
166
+ }
178
167
 
179
- console.log();
168
+ console.log();
169
+ }
180
170
 
181
171
  if (hre.globalOptions.coverage === true) {
182
172
  assertHardhatInvariant(
@@ -5,7 +5,7 @@
5
5
  "description": "A TypeScript Hardhat project using Node Test Runner and Viem",
6
6
  "type": "module",
7
7
  "devDependencies": {
8
- "hardhat": "workspace:^3.1.0",
8
+ "hardhat": "workspace:^3.1.2",
9
9
  "@nomicfoundation/hardhat-toolbox-viem": "workspace:^5.0.1",
10
10
  "@nomicfoundation/hardhat-ignition": "workspace:^3.0.6",
11
11
  "@types/node": "^22.8.5",
@@ -5,7 +5,7 @@
5
5
  "description": "A TypeScript Hardhat project using Mocha and Ethers.js",
6
6
  "type": "module",
7
7
  "devDependencies": {
8
- "hardhat": "workspace:^3.1.0",
8
+ "hardhat": "workspace:^3.1.2",
9
9
  "@nomicfoundation/hardhat-toolbox-mocha-ethers": "workspace:^3.0.2",
10
10
  "@nomicfoundation/hardhat-ethers": "workspace:^4.0.2",
11
11
  "@nomicfoundation/hardhat-ignition": "workspace:^3.0.6",
@@ -5,7 +5,7 @@
5
5
  "description": "A minimal Hardhat project",
6
6
  "type": "module",
7
7
  "devDependencies": {
8
- "hardhat": "workspace:^3.1.0",
8
+ "hardhat": "workspace:^3.1.2",
9
9
  "@types/node": "^22.8.5",
10
10
  "typescript": "~5.8.0"
11
11
  }