Hardhat-deploy: `hardhat-deploy` 不适用于 `solidity-coverage`

创建于 2021-06-22  ·  14评论  ·  资料来源: wighawag/hardhat-deploy

重现:

  1. 克隆https://github.com/wigawag/template-ethereum-contracts
  2. yarn
  3. yarn coverage

你应该得到这个错误:

image

最有用的评论

@GeekBerry如果你看一下 wighawag 指向的代码,你就会明白: https: //github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.14L-js.utils.

我输入node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js并将第 136 行更改为

env.network = Object.assign({
    name: networkName,
    config: networkConfig,
    provider: provider,
    isHardhatEVM: isHardhatEVM,
}, env.network);

然后运行覆盖成功。

我猜solidity-coverage 作者可能会在下一个版本中解决这个问题。

所有14条评论

+1

@wighawag这是我这边的问题吗? 还是安全帽部署中的问题?

对我来说也是一样,运行:
├─ @nomiclabs/ [email protected]
├─ @nomiclabs/ [email protected]
├─安全帽部署
├─安全帽@
├─ [email protected]

+1

这似乎已在0.8.x引入。 使用0.7.11对我有用。

谢谢大家的举报。

抱歉回复晚了,我目前和家人一起旅行,没有太多时间在我的笔记本电脑上。

我今天看了一下,问题是solidity-coverage在这里创建了一个新的网络对象: https :

出于同样的原因,hardhat-deploy/solidity-coverage 兼容性在过去也有类似的问题(请参阅 https://github.com/sc-forks/solidity-coverage/issues/624),而 hardhat-deploy 为它做了一个解决方法当时,但最新的 hardhat-deploy 版本依赖于向网络对象添加字段的能力,因此它也依赖于在插件导入时访问网络对象,因此我认为修复应该在solidity-coverage 中。 solidity-coverage 可以简单地修改现有的hre.network而不是创建一个新对象,保留其他插件的任何其他添加。

替换这些行https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js#L136 -L141

对这些:

env.network.name = networkName;
env.network.config = networkConfig;
env.network.provider = provider;
env.network.isHardhatEVM = isHardhatEVM;

应该做

你怎么看@cgewicke

但是env什么? 我怎么能配置呢?

@wigawag感谢您花时间进行调查!!

我希望@cgewicke能够尽快修改

env.network.name = networkName;
env.network.config = networkConfig;
env.network.provider = provider;
env.network.isHardhatEVM = isHardhatEVM;

应该做

经测试,它有效。

env.network.name = networkName;
env.network.config = networkConfig;
env.network.provider = provider;
env.network.isHardhatEVM = isHardhatEVM;

应该做

经测试,它有效。

em~,但什么是envprocess.envrequire('hardhat').network.isHardhatEVM

@GeekBerry如果你看一下 wighawag 指向的代码,你就会明白: https: //github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.14L-js.utils.

@GeekBerry如果你看一下 wighawag 指向的代码,你就会明白: https: //github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.14L-js.utils.

我输入node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js并将第 136 行更改为

env.network = Object.assign({
    name: networkName,
    config: networkConfig,
    provider: provider,
    isHardhatEVM: isHardhatEVM,
}, env.network);

然后运行覆盖成功。

我猜solidity-coverage 作者可能会在下一个版本中解决这个问题。

+1

大家好,问题是在可靠性覆盖方面,我会结束这个问题,因为安全帽部署不能做太多。
在我的模板中,我用patch-package修补了solidity-coverage 并让它工作,请参阅: https :

有这个 PR 在solidity-coverage 中修复了它: https :

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jaypaik picture jaypaik  ·  13评论

gitpusha picture gitpusha  ·  10评论

freebyte picture freebyte  ·  9评论

jsidorenko picture jsidorenko  ·  3评论

tennox picture tennox  ·  4评论