enzymefinance / protocol

Enzyme Protocol Implementation
https://enzyme.finance
GNU General Public License v3.0
375 stars 156 forks source link

How to Resolve Issue After Running make test Command? #1056

Open Ansellmo opened 10 months ago

Ansellmo commented 10 months ago

Hello,

I encountered an issue after executing the make test command. Could you please assist me in resolving this problem? (I am using an Ubuntu 22.04 machine. The version of bun is 1.0.20. Make: 4.3 direnv 2.33.0 Nix 2.19.2 Foundry 0.2.0) And I ran make build without problem ~/protocol$ make test [⠑] Compiling... [⠘] Compiling 60 files with 0.7.6 [⠃] Compiling 505 files with 0.8.19 [⠔] Compiling 290 files with 0.6.12 [⠘] Solc 0.7.6 finished in 932.80ms [⠘] Solc 0.8.19 finished in 5.71s [⠊] Solc 0.6.12 finished in 10.82s Error: Compiler run failed: Error (9574): Type IIntegrationAdapter.SpendAssetsHandleType is not implicitly convertible to expected type uint8. --> tests/utils/core/AdapterUtils.sol:92:9: | 92 | ( | ^ (Relevant source part starts here and spans across multiple lines).

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from uint8[] memory to IValueInterpreter.RateAsset[] memory requested. --> tests/utils/core/AssetUniverseUtils.sol:81:26: | 81 | _rateAssets: rateAssetsUint8 | ^^^^^^^^^^^^^^^

Error (7398): Explicit type conversion not allowed from non-payable "address" to "contract IVaultLib", which has a payable fallback function. --> tests/utils/core/ExternalPositionUtils.sol:57:32: | 57 | IVaultLib vaultProxy = IVaultLib(_comptrollerProxy.getVaultProxy()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Error (7398): Explicit type conversion not allowed from non-payable "address" to "contract IVaultLib", which has a payable fallback function. --> tests/utils/core/VaultUtils.sol:55:23: 55 vaultProxy_ = IVaultLib(vaultProxy); ^^^^^^^^^^^^^^^^^^^^^ Note: Did you mean to declare this variable as "address payable"? --> tests/utils/core/VaultUtils.sol:47:36:
47 (address comptrollerProxy, address vaultProxy) = _fundDeployer.createNewFund({
^^^^^^^^^^^^^^^^^^
Error (7398): Explicit type conversion not allowed from non-payable "address" to "contract IVaultLib", which has a payable fallback function. --> tests/tests/core/fund-deployer/FundDeployer.t.sol:113:18: 113 assertEq(IVaultLib(vaultProxy).getAccessor(), comptrollerProxy); ^^^^^^^^^^^^^^^^^^^^^ Note: Did you mean to declare this variable as "address payable"? --> tests/tests/core/fund-deployer/FundDeployer.t.sol:100:36:
100 (address comptrollerProxy, address vaultProxy) = core.release.fundDeployer.createNewFund({
^^^^^^^^^^^^^^^^^^
Error (7398): Explicit type conversion not allowed from non-payable "address" to "contract IVaultLib", which has a payable fallback function. --> tests/tests/core/fund-deployer/FundDeployer.t.sol:114:18: 114 assertEq(IVaultLib(vaultProxy).getOwner(), fundOwner); ^^^^^^^^^^^^^^^^^^^^^ Note: Did you mean to declare this variable as "address payable"? --> tests/tests/core/fund-deployer/FundDeployer.t.sol:100:36:
100 (address comptrollerProxy, address vaultProxy) = core.release.fundDeployer.createNewFund({
^^^^^^^^^^^^^^^^^^

Error (7398): Explicit type conversion not allowed from non-payable "address" to "contract IVaultLib", which has a payable fallback function. --> tests/tests/core/fund-deployer/FundDeployerMigrationIn.t.sol:33:9: | 33 | IVaultLib(address(vaultProxyCore)).setMigrator(migrator); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from uint8 to IAddressListRegistry.UpdateType requested. --> tests/tests/peripheral/DepositWrapper.t.sol:40:26: | 40 | _updateType: uint8(AddressListUpdateType.AddAndRemove), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Error (7398): Explicit type conversion not allowed from non-payable "address" to "contract IDepositWrapper", which has a payable fallback function. --> tests/tests/peripheral/DepositWrapper.t.sol:67:16: | 67 | return IDepositWrapper(deployCode("DepositWrapper.sol", args)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from uint8 to IAddressListRegistry.UpdateType requested. --> tests/tests/policies/CumulativeSlippageTolerancePolicy.t.sol:68:26: | 68 | _updateType: uint8(UpdateType.AddAndRemove) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from int_const 0 to INoDepegOnRedeemSharesForSpecificAssetsPolicy.PolicyHook requested. --> tests/tests/policies/NoDepegOnRedeemSharesForSpecificAssetsPolicy.t.sol:259:65: | 259 | assertTrue(policy.validateRule(comptrollerProxyAddress, 0, ""), "control case"); | ^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from int_const 0 to INoDepegOnRedeemSharesForSpecificAssetsPolicy.PolicyHook requested. --> tests/tests/policies/NoDepegOnRedeemSharesForSpecificAssetsPolicy.t.sol:266:65: | 266 | assertTrue(policy.validateRule(comptrollerProxyAddress, 0, ""), "within lower bound"); | ^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from int_const 0 to INoDepegOnRedeemSharesForSpecificAssetsPolicy.PolicyHook requested. --> tests/tests/policies/NoDepegOnRedeemSharesForSpecificAssetsPolicy.t.sol:270:66: | 270 | assertFalse(policy.validateRule(comptrollerProxyAddress, 0, ""), "outside of lower bound"); | ^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from int_const 0 to INoDepegOnRedeemSharesForSpecificAssetsPolicy.PolicyHook requested. --> tests/tests/policies/NoDepegOnRedeemSharesForSpecificAssetsPolicy.t.sol:275:65: | 275 | assertTrue(policy.validateRule(comptrollerProxyAddress, 0, ""), "within upper bound"); | ^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from int_const 0 to INoDepegOnRedeemSharesForSpecificAssetsPolicy.PolicyHook requested. --> tests/tests/policies/NoDepegOnRedeemSharesForSpecificAssetsPolicy.t.sol:279:66: | 279 | assertFalse(policy.validateRule(comptrollerProxyAddress, 0, ""), "outside of upper bound"); | ^

Error (7398): Explicit type conversion not allowed from non-payable "address" to "contract ICompoundAdapter", which has a payable fallback function. --> tests/tests/protocols/compound/CompoundV2Adapter.t.sol:64:16: | 64 | return ICompoundAdapter(deployCode("CompoundAdapter.sol", args)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from uint8 to IAddressListRegistry.UpdateType requested. --> tests/tests/protocols/kiln/KilnStakingPosition.t.sol:145:26: | 145 | _updateType: uint8(AddressListUpdateType.AddAndRemove), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Error (9553): Invalid type for argument in function call. Invalid implicit conversion from uint8 to IAddressListRegistry.UpdateType requested. --> tests/tests/protocols/zeroex/ZeroExV4Adapter.t.sol:70:26: | 70 | _updateType: uint8(AddressListUpdateType.None), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

make: *** [Makefile:55: test] Error 1

PS: I created .env file, and the is no problem with that

Ansellmo commented 10 months ago

And I use the V4 Branch

SeanJCasey commented 10 months ago

Those errors are caused by a "new" (past couple months) Foundry release.

For now, we pinned the repo's CI to use this nightly release: https://github.com/enzymefinance/protocol/blob/dev/.github/workflows/ci.yaml#L37

You can either update your local Foundry to use that same release, or if you use nix, I think you should be able to use the flake file in this repo (assuming it's up-to-date). If that doesn't work, please report back.