Reproduzir:
yarn
yarn coverage
E você deve obter este erro:
+1
@wighawag É um problema da minha parte? Ou é um problema no uso do capacete?
o mesmo para mim, executando:
├─ @ nomiclabs / [email protected]
├─ @ nomiclabs / [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
+1
Isso parece ter sido introduzido em 0.8.x
. Usar 0.7.11
funciona para mim.
Obrigado a todos por relatar.
Desculpe pelo atraso na resposta, no momento estou viajando com a família e não tenho muito tempo no meu laptop.
Dei uma olhada hoje e o problema é que a cobertura de solidez cria um novo objeto de rede aqui: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js # L136 -L141 substituindo quaisquer modificações feitas por outros plug-ins.
A compatibilidade do hardhat-deploy / solidity-Cover teve um problema semelhante no passado pelo mesmo motivo (consulte https://github.com/sc-forks/solidity-coverage/issues/624) e o hardhat-deploy resolveu o problema naquele momento, mas a versão mais recente do hardhat-deploy depende da capacidade de adicionar campo ao objeto de rede, portanto, também depende do acesso ao objeto de rede no momento da importação do plug-in e, portanto, a correção deve, em minha opinião, ser de cobertura de solidez. Em vez de criar um novo objeto, a cobertura de solidez poderia simplesmente modificar o hre.network
mantendo qualquer outra adição de outros plug-ins a ele.
Uma substituição desta linha https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js#L136 -L141
Para estes:
env.network.name = networkName;
env.network.config = networkConfig;
env.network.provider = provider;
env.network.isHardhatEVM = isHardhatEVM;
Deveria fazer isso
O que você acha @cgewecke ?
mas o que é env
? como eu poderia configurá-lo?
@wighawag Obrigado pelo tempo que você gastou para investigar !!
Espero que @cgewecke consiga modificar a cobertura de solidez em breve ...
env.network.name = networkName; env.network.config = networkConfig; env.network.provider = provider; env.network.isHardhatEVM = isHardhatEVM;
Deveria fazer isso
Testado e funciona.
env.network.name = networkName; env.network.config = networkConfig; env.network.provider = provider; env.network.isHardhatEVM = isHardhatEVM;
Deveria fazer isso
Testado e funciona.
em ~, mas o que é env
? process.env
ou require('hardhat').network.isHardhatEVM
?
@GeekBerry Se você olhar para o código wighawag apontado, você entenderá: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclab1s.utils.js14136
@GeekBerry Se você olhar para o código wighawag apontado, você entenderá: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclab1s.utils.js14136
Eu invoco node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js
e mudo a linha 136 para
env.network = Object.assign({
name: networkName,
config: networkConfig,
provider: provider,
isHardhatEVM: isHardhatEVM,
}, env.network);
em seguida, execute a cobertura com êxito.
Eu acho que o autor da cobertura de solidez pode corrigir esse problema na próxima versão.
+1
Olá a todos, o problema está no lado da cobertura de solidez. Vou encerrar o problema, pois o uso de capacete de segurança não pode fazer muito.
No meu modelo, eu remendo a cobertura de solidez com patch-package
e a coloco funcionando, consulte: https://github.com/wighawag/template-ethereum-contracts/blob/main/patches/solidity-coverage%2B0 .7.16.patch
Existe este PR que corrige isso na cobertura de solidez: https://github.com/sc-forks/solidity-coverage/pull/647
Comentários muito úteis
Eu invoco
node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js
e mudo a linha 136 paraem seguida, execute a cobertura com êxito.
Eu acho que o autor da cobertura de solidez pode corrigir esse problema na próxima versão.