diff --git a/hardhat.config.ts b/hardhat.config.ts index 5224744..a5d4950 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -38,6 +38,7 @@ const soliditySettings = SOLIDITY_SETTINGS ? JSON.parse(SOLIDITY_SETTINGS) : { evmVersion: 'paris', + viaIR: true, optimizer: { enabled: true, runs: 10_000_000, diff --git a/package-lock.json b/package-lock.json index f724259..887e24e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2915,16 +2915,6 @@ "node": ">=0.4.0" } }, - "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/adm-zip": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", @@ -4108,21 +4098,6 @@ "node": ">= 0.8" } }, - "node_modules/detect-port": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", - "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", - "dev": true, - "peer": true, - "dependencies": { - "address": "^1.0.1", - "debug": "4" - }, - "bin": { - "detect": "bin/detect-port.js", - "detect-port": "bin/detect-port.js" - } - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -8735,17 +8710,16 @@ "dev": true }, "node_modules/solidity-coverage": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.5.tgz", - "integrity": "sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.8.tgz", + "integrity": "sha512-7RN6/8YAFMQNeMdSulARtE0VC5JitBAUMwvkr10FkOK+nux5q+WykrgSZntkWrX/VHzRa096P4OOViO0T9Q9Cw==", "dev": true, "peer": true, "dependencies": { "@ethersproject/abi": "^5.0.9", - "@solidity-parser/parser": "^0.16.0", + "@solidity-parser/parser": "^0.18.0", "chalk": "^2.4.2", "death": "^1.1.0", - "detect-port": "^1.3.0", "difflib": "^0.2.4", "fs-extra": "^8.1.0", "ghost-testrpc": "^0.0.2", @@ -8753,7 +8727,7 @@ "globby": "^10.0.1", "jsonschema": "^1.2.4", "lodash": "^4.17.15", - "mocha": "10.2.0", + "mocha": "^10.2.0", "node-emoji": "^1.10.0", "pify": "^4.0.1", "recursive-readdir": "^2.2.2", @@ -8770,14 +8744,11 @@ } }, "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", - "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", "dev": true, - "peer": true, - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } + "peer": true }, "node_modules/solidity-coverage/node_modules/fs-extra": { "version": "8.1.0", diff --git a/package.json b/package.json index 5064c99..77de490 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "test": "hardhat test", "test:e2e": "HARDHAT_FORK=1 hardhat test", "test:all": "npm run test && npm run test:e2e", - "coverage": "hardhat coverage --network hardhat", + "coverage": "hardhat coverage", "coverage:check": "istanbul check-coverage ./coverage.json --statements 100 --branches 100 --functions 100 --lines 100", "deploy-all": "hardhat deploy-contracts --network", "deploy": "hardhat deploy --network", diff --git a/test/SafeTokenLock.spec.ts b/test/SafeTokenLock.spec.ts index e04e0e9..225b32e 100644 --- a/test/SafeTokenLock.spec.ts +++ b/test/SafeTokenLock.spec.ts @@ -963,22 +963,7 @@ describe('SafeTokenLock', function () { }) describe('Token Rescue', function () { - it('Should not allow non-owner to recover', async () => { - const { safeTokenLock, alice } = await setupTests() - expect(safeTokenLock.connect(alice).rescueToken(ZeroAddress, ZeroAddress, 0)) - .to.be.revertedWithCustomError(safeTokenLock, 'OwnableUnauthorizedAccount') - .withArgs(alice) - }) - - it('Should not allow Safe token recovery', async () => { - const { safeToken, safeTokenLock, owner } = await setupTests() - expect(safeTokenLock.connect(owner).rescueToken(safeToken, ZeroAddress, 0)).to.be.revertedWithCustomError( - safeTokenLock, - 'CannotRecoverSafeToken', - ) - }) - - it('Should allow ERC20 recovery other than Safe token', async () => { + it('Should allow rescuing tokens other other than Safe token', async () => { const { safeToken, safeTokenLock, owner, alice } = await setupTests() const erc20 = await (await ethers.getContractFactory('TestERC20')).deploy('TEST', 'TEST') @@ -1012,6 +997,21 @@ describe('SafeTokenLock', function () { await expect(safeTokenLock.connect(owner).rescueToken(erc20ReturnFalseOnFailure, owner, 1)).to.be.reverted await expect(safeTokenLock.connect(owner).rescueToken(erc20ReturnNothingOnSuccess, owner, 1)).to.not.be.reverted }) + + it('Should not allow rescuing Safe token', async () => { + const { safeToken, safeTokenLock, owner } = await setupTests() + expect(safeTokenLock.connect(owner).rescueToken(safeToken, ZeroAddress, 0)).to.be.revertedWithCustomError( + safeTokenLock, + 'CannotRecoverSafeToken', + ) + }) + + it('Should not allow rescuing as non-owner', async () => { + const { safeTokenLock, alice } = await setupTests() + expect(safeTokenLock.connect(alice).rescueToken(ZeroAddress, ZeroAddress, 0)) + .to.be.revertedWithCustomError(safeTokenLock, 'OwnableUnauthorizedAccount') + .withArgs(alice) + }) }) describe('Operations', function () {