diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f26b787..9393b641 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,7 +63,7 @@ * Update contributor list (https://github.com/sc-forks/solidity-coverage/issues/812) * Add dependabot config (https://github.com/sc-forks/solidity-coverage/issues/759) * Add a package description to package.json (https://github.com/sc-forks/solidity-coverage/issues/775) - * change .solcoverjs occurencies to .solcover.js (https://github.com/sc-forks/solidity-coverage/issues/777) + * change .solcoverjs occurrences to .solcover.js (https://github.com/sc-forks/solidity-coverage/issues/777) * Remove all mentions to buidler (https://github.com/sc-forks/solidity-coverage/issues/778) * Update HH dev dep & fix Zeppelin E2E test (https://github.com/sc-forks/solidity-coverage/issues/811) * Update mocha version to 10.2.0, fix deprecated debug package (https://github.com/sc-forks/solidity-coverage/issues/810) @@ -353,7 +353,7 @@ 0.4.0 / 2017-11-08 (Compatible with testrpc >= 6.0 / pragma 0.4.18 and above) ================== - * Bug fix to accomodate strict enforcement of constant and view modifiers in pragma 0.4.18 + * Bug fix to accommodate strict enforcement of constant and view modifiers in pragma 0.4.18 0.3.5 / 2017-11-07 (Compatible with testrpc >= 6.0 / pragma 0.4.17 and below) ================== diff --git a/README.md b/README.md index a658f45d..284fa570 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ module.exports = { | onIstanbulComplete[*][14] | *Function* | | Hook run *after* the Istanbul reports are generated, *before* the coverage task completes. Useful if you need to clean resources up. [More...][23]| | **:warning: DEPRECATED** | | | | | configureYulOptimizer | *Boolean* | false | **(Deprecated since 0.8.7)** Setting to `true` should resolve "stack too deep" compiler errors in large projects using ABIEncoderV2 | -| solcOptimizerDetails | *Object* | `undefined` |**(Deprecated since 0.8.7))** Must be used in combination with `configureYulOptimizer`. Allows you configure solc's [optimizer details][1001]. Useful if the default remedy for stack-too-deep errors doesn't work in your case (See [FAQ: Running out of stack][1002] ). | +| solcOptimizerDetails | *Object* | `undefined` |**(Deprecated since 0.8.7))** Must be used in combination with `configureYulOptimizer`. Allows you to configure solc's [optimizer details][1001]. Useful if the default remedy for stack-too-deep errors doesn't work in your case (See [FAQ: Running out of stack][1002] ). | [* Advanced use][14] @@ -143,7 +143,7 @@ hre.__SOLIDITY_COVERAGE_RUNNING === true ``` ## Example reports -+ [openzeppelin-solidity][10](Codecov) ++ [openzeppelin-contracts][10] (Codecov) ## Funding @@ -170,7 +170,7 @@ $ yarn [7]: https://github.com/sc-forks/solidity-coverage/blob/master/docs/faq.md#continuous-integration [8]: https://github.com/sc-forks/solidity-coverage/blob/master/docs/faq.md#notes-on-branch-coverage [9]: https://sc-forks.github.io/metacoin/ -[10]: https://coveralls.io/github/OpenZeppelin/openzeppelin-solidity?branch=master +[10]: https://app.codecov.io/gh/OpenZeppelin/openzeppelin-contracts [11]: https://github.com/sc-forks/solidity-coverage/tree/master/test/units [12]: https://github.com/sc-forks/solidity-coverage/issues [13]: https://github.com/sc-forks/solidity-coverage/blob/master/docs/faq.md#notes-on-gas-distortion diff --git a/package.json b/package.json index 2c149108..39e5a278 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solidity-coverage", - "version": "0.8.12", + "version": "0.8.13", "description": "Code coverage for Solidity testing", "main": "plugins/nomiclabs.plugin.js", "bin": { diff --git a/plugins/hardhat.plugin.js b/plugins/hardhat.plugin.js index c14dc82d..9bb18fb4 100644 --- a/plugins/hardhat.plugin.js +++ b/plugins/hardhat.plugin.js @@ -24,16 +24,11 @@ const ui = new PluginUI(); // Workaround for hardhat-viem-plugin and other provider redefinition conflicts extendConfig((config, userConfig) => { if (Boolean(process.env.SOLIDITY_COVERAGE)) { - const { cloneDeep } = require("lodash"); const { configureHardhatEVMGas } = require('./resources/nomiclabs.utils'); const API = require('./../lib/api'); const api = new API({}); - let hardhatNetworkForCoverage = {}; - if (userConfig.networks && userConfig.networks.hardhat) { - hardhatNetworkForCoverage = cloneDeep(userConfig.networks.hardhat); - }; - + const hardhatNetworkForCoverage = {}; configureHardhatEVMGas(hardhatNetworkForCoverage, api); config.networks.hardhat = Object.assign(config.networks.hardhat, hardhatNetworkForCoverage); } diff --git a/plugins/resources/plugin.utils.js b/plugins/resources/plugin.utils.js index 9d333db7..04c66324 100644 --- a/plugins/resources/plugin.utils.js +++ b/plugins/resources/plugin.utils.js @@ -222,7 +222,10 @@ function loadSolcoverJS(config={}){ throw new Error(error) } - // Config is optional + // Config is optional, but if passed and not found, error + } else if (config.solcoverjs) { + const message = ui.generate('solcoverjs-fail') + " --solcoverjs flag was set but no file was found"; + throw new Error(message); } else { coverageConfig = {}; } diff --git a/test/integration/errors.js b/test/integration/errors.js index b78b268f..d5938f2a 100644 --- a/test/integration/errors.js +++ b/test/integration/errors.js @@ -46,6 +46,26 @@ describe('Hardhat Plugin: error cases', function() { verify.coverageNotGenerated(hardhatConfig); }) + it('.solcover.js is not found', async function(){ + const taskArgs = { + solcoverjs: "./file-that-does-not-exist.js" + } + + mock.install('Simple', 'simple.js', solcoverConfig); + mock.hardhatSetupEnv(this); + + try { + await this.env.run("coverage", taskArgs); + assert.fail() + } catch (err) { + assert( + err.message.includes('--solcoverjs flag was set but no file was found'), + `Should error if --solcoverjs passed but not found: ${err.message}` + ); + } + }) + + it('.solcover.js has incorrectly formatted option', async function(){ solcoverConfig.port = "Antwerpen";