diff --git a/.gitignore b/.gitignore index 69f91c110..aea11d993 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ **/typechain **/specification_docs **/.optyfi-sdk +out + # files *.env *.log diff --git a/.gitmodules b/.gitmodules index ff051587b..d5f926b6a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "contracts/protocol/earn-protocol-configuration"] - path = contracts/protocol/earn-protocol-configuration - url = git@github.com:Opty-Fi/earn-protocol-configuration.git [submodule "contracts/protocol/adapters/ethereum/team-defi-adapters"] path = contracts/protocol/adapters/ethereum/team-defi-adapters url = git@github.com:Opty-Fi/team-defi-adapters.git @@ -43,3 +40,18 @@ [submodule "contracts/protocol/adapters/ethereum/sushiswap-pool-adapter-ethereum"] path = contracts/protocol/adapters/ethereum/sushiswap-pool-adapter-ethereum url = git@github.com:Opty-Fi/sushiswap-pool-adapter-ethereum.git +[submodule "lib/ds-test"] + path = lib/ds-test + url = git@github.com:dapphub/ds-test +[submodule "lib/defi-legos"] + path = lib/defi-legos + url = git@github.com:Opty-Fi/defi-legos.git + branch = release-v0.1 +[submodule "lib/forge-std"] + path = lib/forge-std + url = git@github.com:foundry-rs/forge-std.git + branch = v0.3 +[submodule "contracts/protocol/earn-protocol-configuration"] + path = contracts/protocol/earn-protocol-configuration + url = git@github.com:Opty-Fi/earn-protocol-configuration.git + branch = code-size-fix diff --git a/contracts/protocol/earn-protocol-configuration b/contracts/protocol/earn-protocol-configuration index c5e9493c9..b1abdebb3 160000 --- a/contracts/protocol/earn-protocol-configuration +++ b/contracts/protocol/earn-protocol-configuration @@ -1 +1 @@ -Subproject commit c5e9493c900b276dfb6686b14ca687d5559c0308 +Subproject commit b1abdebb37ac0eddd11d49f0188b6ee5668adcbc diff --git a/foundry.toml b/foundry.toml new file mode 100644 index 000000000..77f04aebb --- /dev/null +++ b/foundry.toml @@ -0,0 +1,15 @@ +[default] +src = 'contracts' +out = 'out' +libs = ['node_modules','lib'] +remappings = [ + '@optyfi/defi-legos/=lib/defi-legos/src/', + 'forge-std/=lib/forge-std/src/', + 'earn-protocol-configuration/=contracts/protocol/earn-protocol-configuration/' +] +optimizer = true +optimizer_runs = 200 +test = "test/foundry" +gas_reports = ["*"] + +# See more config options https://github.com/gakonst/foundry/tree/master/config \ No newline at end of file diff --git a/lib/defi-legos b/lib/defi-legos new file mode 160000 index 000000000..fc557fa2a --- /dev/null +++ b/lib/defi-legos @@ -0,0 +1 @@ +Subproject commit fc557fa2a113223be4cc5eaffb76fd5de67dda48 diff --git a/lib/ds-test b/lib/ds-test new file mode 160000 index 000000000..9310e879d --- /dev/null +++ b/lib/ds-test @@ -0,0 +1 @@ +Subproject commit 9310e879db8ba3ea6d5c6489a579118fd264a3f5 diff --git a/lib/forge-std b/lib/forge-std new file mode 160000 index 000000000..9d323e30e --- /dev/null +++ b/lib/forge-std @@ -0,0 +1 @@ +Subproject commit 9d323e30e65c5f660d4b0bba07a2ea1c733ab987 diff --git a/test/foundry/Foo.t.sol b/test/foundry/Foo.t.sol new file mode 100644 index 000000000..a83b17860 --- /dev/null +++ b/test/foundry/Foo.t.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.6.12; + +import "forge-std/Test.sol"; + +contract ContractBTest is Test { + uint256 testNumber; + + function setUp() public { + testNumber = 42; + } + + function testNumberIs42() public { + assertEq(testNumber, 42); + } + + function testFailSubtract43() public { + testNumber -= 43; + } +} diff --git a/test/foundry/Vault.t.sol b/test/foundry/Vault.t.sol new file mode 100644 index 000000000..a865f24bf --- /dev/null +++ b/test/foundry/Vault.t.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.6.12; + +import "forge-std/Test.sol"; +import "earn-protocol-configuration/contracts/RegistryProxy.sol"; +import "earn-protocol-configuration/contracts/Registry.sol"; +import "earn-protocol-configuration/contracts/interfaces/opty/IRegistry.sol"; + +contract VaultTest is Test { + uint256 testNumber; + RegistryProxy registryProxy; + Registry registry; + + function setUp() public { + testNumber = 42; + registryProxy = new RegistryProxy(); + registry = new Registry(); + registryProxy.setPendingImplementation(address(registry)); + registry.become(registryProxy); + } + + function testNumberIs42() public { + assertEq(testNumber, 42); + } + + function testFailSubtract43() public { + testNumber -= 43; + } + + function testGovernanceIsThisAddress() public { + assertEq(IRegistry(address(registryProxy)).getGovernance(), address(this)); + } +}