Hardhat-deploy: `hardhat-deploy` não funciona com` cobertura de solidez`

Criado em 22 jun. 2021  ·  14Comentários  ·  Fonte: wighawag/hardhat-deploy

Reproduzir:

  1. Clone https://github.com/wighawag/template-ethereum-contracts
  2. yarn
  3. yarn coverage

E você deve obter este erro:

image

Comentários muito úteis

@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.

Todos 14 comentários

+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

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

Esta página foi útil?
0 / 5 - 0 avaliações