Hardhat-deploy: `hardhat-deploy` no funciona con` solidity -cover`

Creado en 22 jun. 2021  ·  14Comentarios  ·  Fuente: wighawag/hardhat-deploy

Reproducir:

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

Y debería recibir este error:

image

Comentario más útil

@GeekBerry Si miras el código al que apunta wighawag, comprenderás: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js141L136-

Hackeo node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js y cambio la línea 136 a

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

luego ejecute la cobertura con éxito.

Supongo que el autor de la cobertura de solidez podría solucionar este problema en la próxima versión.

Todos 14 comentarios

+1

@wighawag ¿Es un problema de mi parte? ¿O es un problema en el despliegue de casco?

lo mismo para mí, corriendo:
├─ @ nomiclabs / [email protected]
├─ @ nomiclabs / [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]

+1

Esto parece haber sido introducido en 0.8.x . Usar 0.7.11 funciona para mí.

Gracias a todos por informar.

Perdón por la respuesta tardía, actualmente estoy viajando con mi familia y no tengo mucho tiempo en mi computadora portátil.

Sin embargo, eché un vistazo hoy y el problema es que la cobertura de solidez crea un nuevo objeto de red aquí: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js # L136 -L141 anula cualquier modificación realizada por otros complementos.

La compatibilidad de hardhat-deploy / solidity -cover tuvo un problema similar en el pasado por la misma razón (consulte https://github.com/sc-forks/solidity-coverage/issues/624) y hardhat-deploy hizo una solución para ello. en ese momento, pero la versión más reciente de implementación de casco se basa en la capacidad de agregar un campo al objeto de red, por lo que también se basa en acceder al objeto de red en el momento de la importación del complemento y, por lo tanto, la solución, en mi opinión, debería estar en cobertura de solidez. En lugar de crear un nuevo objeto, la cobertura de solidez podría simplemente modificar el hre.network manteniendo cualquier otra adición de otros complementos.

Un reemplazo de estas líneas https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js#L136 -L141

A estos:

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

Deberías hacerlo

¿Qué opinas @cgewecke ?

pero ¿cuál es el env ? ¿Cómo puedo configurarlo?

@wighawag ¡¡ Gracias por el tiempo que se tomó para investigar !!

Espero que @cgewecke pueda modificar la cobertura de solidez pronto ...

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

Deberías hacerlo

Probado y funciona.

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

Deberías hacerlo

Probado y funciona.

em ~, pero ¿qué es env ? process.env o require('hardhat').network.isHardhatEVM ?

@GeekBerry Si miras el código al que apunta wighawag, comprenderás: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js141L136-

Hackeo node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js y cambio la línea 136 a

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

luego ejecute la cobertura con éxito.

Supongo que el autor de la cobertura de solidez podría solucionar este problema en la próxima versión.

+1

Hola a todos, el problema está en el lado de la cobertura de solidez, cerraré el problema ya que el despliegue de casco no puede hacer mucho.
En mi plantilla, parcheo la cobertura de solidez con patch-package y lo hago funcionar, consulte: https://github.com/wighawag/template-ethereum-contracts/blob/main/patches/solidity-coverage%2B0 .7.16.parche

Existe este PR que lo corrige en cobertura de solidez: https://github.com/sc-forks/solidity-coverage/pull/647

¿Fue útil esta página
0 / 5 - 0 calificaciones