1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // Remove the default account from the accounts list used in tests, in order
- // to protect tests against accidentally passing due to the contract
- // deployer being used subsequently as function caller
- //
- // This operation affects:
- // - the accounts (and signersAsPromise) parameters of `contract` blocks
- // - the return of hre.ethers.getSigners()
- extendEnvironment(hre => {
- // TODO: replace with a mocha root hook.
- // (see https://github.com/sc-forks/solidity-coverage/issues/819#issuecomment-1762963679)
- if (!process.env.COVERAGE) {
- // override hre.ethers.getSigner()
- // note that we don't just discard the first signer, we also cache the value to improve speed.
- const originalGetSigners = hre.ethers.getSigners;
- const filteredSignersAsPromise = originalGetSigners().then(signers => signers.slice(1));
- hre.ethers.getSigners = () => filteredSignersAsPromise;
- }
- // override hre.contract
- const originalContract = hre.contract;
- hre.contract = function (name, body) {
- originalContract.call(this, name, accounts => {
- let snapshot;
- before(async function () {
- // reset the state of the chain in between contract test suites
- // TODO: this should be removed when migration to ethers is over
- const { takeSnapshot } = require('@nomicfoundation/hardhat-network-helpers');
- snapshot = await takeSnapshot();
- });
- after(async function () {
- // reset the state of the chain in between contract test suites
- // TODO: this should be removed when migration to ethers is over
- await snapshot.restore();
- });
- body(accounts.slice(1));
- });
- };
- });
|