Hardhat-deploy: `hardhat-deploy` funktioniert nicht mit `solidity-coverage`

Erstellt am 22. Juni 2021  ·  14Kommentare  ·  Quelle: wighawag/hardhat-deploy

Fortpflanzen:

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

Und Sie sollten diesen Fehler erhalten:

image

Hilfreichster Kommentar

@GeekBerry Wenn Sie sich den Code ansehen, auf den wighawag verwiesen hat, werden Sie verstehen: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js#L136 -L141

Ich hacke node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js und ändere Zeile 136 in

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

dann die Abdeckung erfolgreich laufen lassen.

Ich denke, der Autor der Solidity-Coverage könnte dieses Problem in der nächsten Version beheben.

Alle 14 Kommentare

+1

@wighawag Ist es ein Problem auf meiner Seite? Oder ist es ein Problem bei der Hardhat-Bereitstellung?

das gleiche bei mir, läuft:
├─ @nomiclabs/ hardhat- [email protected]
├─ @nomiclabs/ [email protected]
├─ [email protected]
[email protected]
├─ [email protected]

+1

Dies scheint in 0.8.x . Die Verwendung von 0.7.11 funktioniert für mich.

Danke an alle für die Berichterstattung.

Entschuldigung für die späte Antwort, ich bin derzeit mit der Familie unterwegs und habe nicht viel Zeit an meinem Laptop.

Ich habe heute jedoch nachgesehen und das Problem ist, dass Solidity-Coverage hier ein neues Netzwerkobjekt erstellt: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js #L136 -L141 überschreibt alle Änderungen, die von anderen Plugins vorgenommen wurden.

hardhat-deploy/solidity-coveragekompatibilität hatte in der Vergangenheit aus dem gleichen Grund ein ähnliches Problem (siehe https://github.com/sc-forks/solidity-coverage/issues/624) und hardhat-deploy hat dafür eine Problemumgehung gemacht zu dieser Zeit beruht jedoch die neueste Hardhat-Deploy-Version auf der Fähigkeit, dem Netzwerkobjekt ein Feld hinzuzufügen, sie verlässt sich also auch auf den Zugriff auf das Netzwerkobjekt zum Zeitpunkt des Plugin-Imports und daher sollte der Fix meiner Meinung nach in der Solidität-Abdeckung sein. Anstatt ein neues Objekt zu erstellen, könnte Solidity-Coverage einfach das vorhandene hre.network modifizieren und alle anderen Ergänzungen von anderen Plugins beibehalten.

Ein Ersatz dieser Zeile https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js#L136 -L141

Zu diesen:

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

Sollte es tun

Was denkst du @cgewache ?

aber was ist das env ? wie könnte ich es konfigurieren?

@wighawag Vielen Dank für die Zeit, die Sie sich genommen haben, um nachzuforschen !!

Ich hoffe @cgewecke kann die

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

Sollte es tun

Getestet und es funktioniert.

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

Sollte es tun

Getestet und es funktioniert.

em~, aber was ist env ? process.env oder require('hardhat').network.isHardhatEVM ?

@GeekBerry Wenn Sie sich den Code ansehen, auf den wighawag verwiesen hat, werden Sie verstehen: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js#L136 -L141

@GeekBerry Wenn Sie sich den Code ansehen, auf den wighawag verwiesen hat, werden Sie verstehen: https://github.com/sc-forks/solidity-coverage/blob/3c0f3a5c7db26e82974873bbf61cf462072a7c6d/plugins/resources/nomiclabs.utils.js#L136 -L141

Ich hacke node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js und ändere Zeile 136 in

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

dann die Abdeckung erfolgreich laufen lassen.

Ich denke, der Autor der Solidity-Coverage könnte dieses Problem in der nächsten Version beheben.

+1

Hallo zusammen, das Problem ist auf der Seite der Solidität-Abdeckung, ich werde das Problem schließen, da Bauarbeiterhelm-Einsatz nicht viel tun kann.
In meiner Vorlage patche ich solidity-coverage mit patch-package und lasse es funktionieren, siehe: https://github.com/wighawag/template-ethereum-contracts/blob/main/patches/solidity-coverage%2B0 .7.16.patch

Es gibt diese PR, die es in Solidity-Coverage behebt: https://github.com/sc-forks/solidity-coverage/pull/647

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen