Hardhat-deploy: `hardhat-deploy` не работает с` solidity-охватыванием`

Созданный на 22 июн. 2021  ·  14Комментарии  ·  Источник: wighawag/hardhat-deploy

Воспроизвести:

  1. Клонировать https://github.com/wighawag/template-ethereum-contracts
  2. yarn
  3. yarn coverage

И вы должны получить такую ​​ошибку:

image

Самый полезный комментарий

@GeekBerry Если вы посмотрите на код, на который указывает wighawag, вы поймете: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomicLabs.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);

затем выполните покрытие успешно.

Думаю, автор солидного освещения может исправить эту проблему в следующей версии.

Все 14 Комментарий

+1

@wighawag Это проблема с моей стороны? Или это проблема в hardhat-deploy?

то же самое для меня, работает:
├─ @ nomiclabs / [email protected]
├─ @ nomiclabs / [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]

+1

Похоже, это было введено в 0.8.x . У меня работает 0.7.11 .

Спасибо всем за сообщение.

Приносим извинения за поздний ответ, в настоящее время я путешествую с семьей, и у меня мало времени на ноутбуке.

Сегодня я посмотрел, и проблема в том, что solidity-охват создает здесь новый сетевой объект: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js # L136 -L141 отменяет любые изменения, сделанные другими плагинами.

Совместимость hardhat-deploy / solidity-охвата имела аналогичную проблему в прошлом по той же причине (см. https://github.com/sc-forks/solidity-coverage/issues/624), и hardhat-deploy сделал обходной путь для нее. в то время, но новейшая версия hardhat-deploy полагается на возможность добавления поля к сетевому объекту, таким образом, она также полагается на доступ к сетевому объекту во время импорта плагина, и поэтому исправление, на мой взгляд, должно быть в прочном покрытии. Вместо создания нового объекта, solidity-cover может просто изменить существующий 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;

Должен сделать это

Как ты думаешь @cgewecke ?

но что такое env ? как я могу его настроить?

@wighawag Спасибо за время,

Я надеюсь, что @cgewecke скоро сможет изменить покрытие солидности ...

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;

Должен сделать это

Протестировал и все работает.

эм ~, а что такое env ? process.env или require('hardhat').network.isHardhatEVM ?

@GeekBerry Если вы посмотрите на код, на который указывает wighawag, вы поймете: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomicLabs.utils.

@GeekBerry Если вы посмотрите на код, на который указывает wighawag, вы поймете: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomicLabs.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);

затем выполните покрытие успешно.

Думаю, автор солидного освещения может исправить эту проблему в следующей версии.

+1

Привет всем, проблема заключается в надежности покрытия, я закрою ее, так как hardhat-deploy не может многое сделать.
В моем шаблоне я исправляю покрытие solidity с помощью patch-package и оно работает, см. Https://github.com/wighawag/template-ethereum-contracts/blob/main/patches/solidity-coverage%2B0 .7.16.patch

Вот этот PR, который исправляет это в отношении солидности: https://github.com/sc-forks/solidity-coverage/pull/647

Была ли эта страница полезной?
0 / 5 - 0 рейтинги