Воспроизвести:
yarn
yarn coverage
И вы должны получить такую ошибку:
+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
Самый полезный комментарий
Я взламываю
node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js
и меняю строку 136 назатем выполните покрытие успешно.
Думаю, автор солидного освещения может исправить эту проблему в следующей версии.