Skip to content

Commit 82cc3c6

Browse files
committed
split tests into separate files
1 parent 4cc631f commit 82cc3c6

59 files changed

Lines changed: 3099 additions & 3083 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/solidity.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@ jobs:
3636
- name: Run Forge lint
3737
run: FOUNDRY_PROFILE=ci forge lint
3838

39-
# Remove until we create proper gas tests
40-
# - name: Run Forge gas snapshot test
41-
# run: FOUNDRY_PROFILE=ci forge snapshot --check
39+
- name: Run Forge gas snapshot test
40+
run: FOUNDRY_PROFILE=ci forge snapshot --match-path test/gas/*.sol --check
4241

4342
- name: Run Forge build
4443
run: FOUNDRY_PROFILE=ci forge build --sizes

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ cadence-test:
2929
solidity-fmt-fix:
3030
cd solidity && forge fmt
3131

32+
.PHONY:
33+
snapshot:
34+
cd solidity && FOUNDRY_PROFILE=ci forge snapshot --match-path test/gas/*.sol
3235

3336
# ---------------------------------------------------------------------------
3437
# Pyth oracle maintenance (Flow EVM mainnet — MANUAL ONLY)

solidity/.gas-snapshot

Lines changed: 4 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -1,153 +1,4 @@
1-
FCMVaultFactoryTest:test_ComputeAddress_DifferentSaltDifferentAddress() (gas: 92597)
2-
FCMVaultFactoryTest:test_ComputeAddress_MatchesDeployed() (gas: 4369712)
3-
FCMVaultFactoryTest:test_CreateVault_DeploysVault() (gas: 4345697)
4-
FCMVaultFactoryTest:test_CreateVault_EmitsEvent() (gas: 4372107)
5-
FCMVaultFactoryTest:test_CreateVault_SameSaltReverts() (gas: 1040565031)
6-
FCMVaultTest:test_AdminCanGrantRole() (gas: 42890)
7-
FCMVaultTest:test_AdminCanRevokeRole() (gas: 33352)
8-
FCMVaultTest:test_DepositRevertsForNonAllowlistedReceiver() (gas: 310248)
9-
FCMVaultTest:test_Deposit_DepositDoesNotRebalanceProtocol() (gas: 592302)
10-
FCMVaultTest:test_Deposit_FirstDepositMintsShares() (gas: 356698)
11-
FCMVaultTest:test_Deposit_LandsAtBandMidpoint() (gas: 367137)
12-
FCMVaultTest:test_Deposit_NavRoundsToOriginalAssets() (gas: 363496)
13-
FCMVaultTest:test_Deposit_NoBorrowWhenPositionUnhealthy() (gas: 496335)
14-
FCMVaultTest:test_Deposit_NoSlippageProtection_AcceptsAnyPrice() (gas: 402485)
15-
FCMVaultTest:test_Deposit_PullsCollateralAndBorrowsDebt() (gas: 358665)
16-
FCMVaultTest:test_Deposit_RevertsOnZeroApproval() (gas: 128151)
17-
FCMVaultTest:test_Deposit_RevertsWhenMorphoMarketIlliquid() (gas: 214333)
18-
FCMVaultTest:test_Deposit_RevertsWhenUnderwaterWithHolders() (gas: 495084)
19-
FCMVaultTest:test_Deposit_TwoDepositorsProRata() (gas: 531815)
20-
FCMVaultTest:test_Fees_AccruePermissionlessSettersGated() (gas: 376155)
21-
FCMVaultTest:test_Fees_AccruesOnRebalance() (gas: 573894)
22-
FCMVaultTest:test_Fees_AccruesOnRedeemAndDeAllowlistDoesNotBrick() (gas: 748064)
23-
FCMVaultTest:test_Fees_AccruesOnRedeemInKind() (gas: 675566)
24-
FCMVaultTest:test_Fees_CombinedAccrual() (gas: 574929)
25-
FCMVaultTest:test_Fees_GrossUpDeliversTrueRate() (gas: 536750)
26-
FCMVaultTest:test_Fees_ManagementAccrual() (gas: 536753)
27-
FCMVaultTest:test_Fees_ManagementClampedAtOneYear() (gas: 536619)
28-
FCMVaultTest:test_Fees_NoAccrualAfterRecovered() (gas: 643368)
29-
FCMVaultTest:test_Fees_NoPerfInDrawdown() (gas: 559858)
30-
FCMVaultTest:test_Fees_NoPerfOnFirstDeposit() (gas: 484227)
31-
FCMVaultTest:test_Fees_NoRetroactiveChargeOnEnable() (gas: 533782)
32-
FCMVaultTest:test_Fees_OffByDefault() (gas: 371179)
33-
FCMVaultTest:test_Fees_PerformanceAccrualAndHWM() (gas: 571124)
34-
FCMVaultTest:test_Fees_RecipientNotAllowlistedSkips() (gas: 478338)
35-
FCMVaultTest:test_Fees_SetAccessAndCaps() (gas: 142682)
36-
FCMVaultTest:test_Fuzz_Redeem_WithDebtDust(uint256) (runs: 10000, μ: 686023, ~: 686397)
37-
FCMVaultTest:test_Harvest_FrozenDuringPendingRecovery() (gas: 465030)
38-
FCMVaultTest:test_Harvest_NoopOnDustSurplus() (gas: 4752025)
39-
FCMVaultTest:test_InitialRoles() (gas: 25519)
40-
FCMVaultTest:test_Integration_DepositRebalanceRedeem() (gas: 691019)
41-
FCMVaultTest:test_MaxDepositNonZeroForAllowlisted() (gas: 66660)
42-
FCMVaultTest:test_MaxDepositZeroForNonAllowlisted() (gas: 16681)
43-
FCMVaultTest:test_MaxMintZeroForNonAllowlisted() (gas: 10148)
44-
FCMVaultTest:test_Mint_Reverts() (gas: 12867)
45-
FCMVaultTest:test_NonAdminCannotGrantRole() (gas: 18908)
46-
FCMVaultTest:test_PriceLimit_OracleMathMatchesOracleAndSlippage() (gas: 4368207)
47-
FCMVaultTest:test_PriceLimit_SkipFlagTracksSpot() (gas: 4361879)
48-
FCMVaultTest:test_Rebalance_ConstructorValidatesBands() (gas: 583465)
49-
FCMVaultTest:test_Rebalance_DeleverSkipsWhenSpotPastBound() (gas: 513516)
50-
FCMVaultTest:test_Rebalance_DeleversWhenBelowMin() (gas: 508206)
51-
FCMVaultTest:test_Rebalance_FullLiquidation_ZeroesDebtWithoutReverting() (gas: 534605)
52-
FCMVaultTest:test_Rebalance_HarvestDoesNotBlockDelever() (gas: 604689)
53-
FCMVaultTest:test_Rebalance_HarvestNoopBelowYieldFactorMax() (gas: 442729)
54-
FCMVaultTest:test_Rebalance_HarvestNoopOnDepeg() (gas: 444838)
55-
FCMVaultTest:test_Rebalance_HarvestNoopWhenNoSurplus() (gas: 454921)
56-
FCMVaultTest:test_Rebalance_HarvestPartialCollateralLegRepaysRemainder() (gas: 1099786)
57-
FCMVaultTest:test_Rebalance_HarvestRepaysPartialDebtWhenLeftoverWithinDebt() (gas: 611364)
58-
FCMVaultTest:test_Rebalance_HarvestRevertsInsteadOfStrandingSurplusWhenCollateralLegMispriced() (gas: 628321)
59-
FCMVaultTest:test_Rebalance_HarvestSkipsMispricedCollateralLeg() (gas: 519711)
60-
FCMVaultTest:test_Rebalance_HarvestThenLeversWhenSurplusLarge() (gas: 601616)
61-
FCMVaultTest:test_Rebalance_HarvestsSurplusAsCollateral() (gas: 576044)
62-
FCMVaultTest:test_Rebalance_LeverRevertsWhenMorphoMarketIlliquid() (gas: 434152)
63-
FCMVaultTest:test_Rebalance_LeverSkipsWhenSpotPastBound() (gas: 512303)
64-
FCMVaultTest:test_Rebalance_LeversWhenAboveMax() (gas: 507152)
65-
FCMVaultTest:test_Rebalance_LiquidationRecoveryDoesNotRevert() (gas: 521020)
66-
FCMVaultTest:test_Rebalance_NoopInsideBand() (gas: 458112)
67-
FCMVaultTest:test_Rebalance_NoopWhenOffCenterButInBand() (gas: 461150)
68-
FCMVaultTest:test_Rebalance_PartialDeleverMakesProgress() (gas: 1075268)
69-
FCMVaultTest:test_Rebalance_PartialLeverMakesProgress() (gas: 1084440)
70-
FCMVaultTest:test_Rebalance_RespectsLoosenedSlippage() (gas: 617519)
71-
FCMVaultTest:test_Recovery_AccessControl() (gas: 47513)
72-
FCMVaultTest:test_Recovery_AfterLiquidation_BoundedExtraLossRestoringHealth() (gas: 533940)
73-
FCMVaultTest:test_Recovery_BlocksDepositsAfterExecute() (gas: 596515)
74-
FCMVaultTest:test_Recovery_BlocksDepositsWhilePending() (gas: 119863)
75-
FCMVaultTest:test_Recovery_DeleverStaysLiveWhilePending() (gas: 512950)
76-
FCMVaultTest:test_Recovery_ExecuteRevertsBeforeDelay() (gas: 41072)
77-
FCMVaultTest:test_Recovery_ExecuteSweepsPositionToOwner() (gas: 556420)
78-
FCMVaultTest:test_Recovery_NoLeverUpWhilePending() (gas: 468558)
79-
FCMVaultTest:test_Recovery_OwnerCanCancel() (gas: 31698)
80-
FCMVaultTest:test_Recovery_RedeemInKindStaysOpenWhilePending() (gas: 553257)
81-
FCMVaultTest:test_Recovery_RedeemStaysOpenWhilePending() (gas: 523480)
82-
FCMVaultTest:test_RedeemInKind_FullExit() (gas: 537424)
83-
FCMVaultTest:test_RedeemInKind_PartialExitDoesNotDiluteRemainingHolder() (gas: 758339)
84-
FCMVaultTest:test_RedeemInKind_WorksWhenDeAllowlisted() (gas: 544554)
85-
FCMVaultTest:test_Redeem_BlockedWhileUnderwater_ThenRebalanceUnblocksIt() (gas: 671204)
86-
FCMVaultTest:test_Redeem_BurnsSharesAndTransfersToReceiver() (gas: 506440)
87-
FCMVaultTest:test_Redeem_CaseB_DeepImpairmentFlashCoversAnyHF() (gas: 519675)
88-
FCMVaultTest:test_Redeem_CaseB_FillsShortfallFromCollateral() (gas: 521719)
89-
FCMVaultTest:test_Redeem_CaseB_SelfCollateralizedNoIdleLoanLiquidity() (gas: 521784)
90-
FCMVaultTest:test_Redeem_NoSlippageProtection_AcceptsAnyPrice() (gas: 540878)
91-
FCMVaultTest:test_Redeem_PartialRedeemUnwindsProportionalSlice() (gas: 508052)
92-
FCMVaultTest:test_Redeem_RevertsIfNotOwnerAndNoAllowance() (gas: 359148)
93-
FCMVaultTest:test_Redeem_RoundTripReturnsApproximatelyDeposited() (gas: 502774)
94-
FCMVaultTest:test_Redeem_SpendsAllowanceWhenOperatorRedeems() (gas: 526033)
95-
FCMVaultTest:test_Redeem_SurplusPyusdReconciledToWeth() (gas: 495633)
96-
FCMVaultTest:test_Redeem_TwoDepositorsIndependentRedeem() (gas: 707494)
97-
FCMVaultTest:test_Redeem_ZeroSharesIsNoop() (gas: 369595)
98-
FCMVaultTest:test_SetMaxSlippageBps() (gas: 30940)
99-
FCMVaultTest:test_TransferBetweenAllowlistedHoldersSucceeds() (gas: 405193)
100-
FCMVaultTest:test_TransferRevertsForDeAllowlistedSender() (gas: 388160)
101-
FCMVaultTest:test_TransferRevertsForNonAllowlistedRecipient() (gas: 360303)
102-
FCMVaultTest:test_VaultState_DepositEmitsSnapshot() (gas: 394396)
103-
FCMVaultTest:test_VaultState_PricesReflectOracles() (gas: 375203)
104-
FCMVaultTest:test_VaultState_RebalanceLeverEmitsUpdatedSnapshot() (gas: 515273)
105-
FCMVaultTest:test_VaultState_RebalanceNoopStillEmitsSnapshot() (gas: 460481)
106-
FCMVaultTest:test_VaultState_RedeemEmitsSnapshot() (gas: 540132)
107-
FCMVaultTest:test_VaultState_RedeemInKindEmitsSnapshot() (gas: 572658)
108-
FCMVaultTest:test_YieldBacking_FloorUnderBacksButCeilCovers() (gas: 3022)
109-
FeesLibTest:testFuzz_FeesToMint_UnreachableNeverHit(uint256,uint256,uint16,uint16,uint256,uint256) (runs: 10000, μ: 10249, ~: 10271)
110-
FeesLibTest:test_FeesToMintBiggerNav_ManagementFeeOnly() (gas: 8337)
111-
FeesLibTest:test_FeesToMintBiggerNav_PerformanceFeeOnly() (gas: 4913)
112-
FeesLibTest:test_FeesToMintMax() (gas: 9110)
113-
FeesLibTest:test_FeesToMint_BothFeeTypes() (gas: 9048)
114-
FeesLibTest:test_FeesToMint_Compounding() (gas: 26556840)
115-
FeesLibTest:test_FeesToMint_ManagementFeeOnly() (gas: 8760)
116-
FeesLibTest:test_FeesToMint_PerformanceFeeOnlyNoGain() (gas: 4072)
117-
FeesLibTest:test_FeesToMint_PerformanceFeeOnlyWithGain() (gas: 7838)
118-
FeesLibTest:test_FeesToMint_USDC() (gas: 8106)
119-
FeesLibTest:test_FeesToMint_ZeroBeforeElapsed() (gas: 4425)
120-
FeesLibTest:test_FeesToMint_ZeroWhenMgmtAndPerfAreZero() (gas: 7215)
121-
FeesLibTest:test_FeesToMint_ZeroWhenNavIsZero() (gas: 7717)
122-
IntegrationForkTest:test_Integration_FullLifecycle_Realistic() (gas: 57439737)
123-
SandwichForkTest:test_Sandwich_HardDOS_Push1Percent_100Times() (gas: 40288885)
124-
SandwichForkTest:test_Sandwich_SingleSweep_VaultLossBounded() (gas: 7612413)
125-
SandwichForkTest:test_Sandwich_SoftDOS_RebalanceUntilNormal() (gas: 418626792)
126-
TvlLimitTest:testFuzz_Deposit_RespectsLimit(uint96,uint96) (runs: 10000, μ: 244958, ~: 362284)
127-
TvlLimitTest:test_Deposit_BelowLimitSucceeds() (gas: 361949)
128-
TvlLimitTest:test_Deposit_ExactlyAtLimitSucceeds() (gas: 361810)
129-
TvlLimitTest:test_Deposit_LimitIsGlobalAcrossUsers() (gas: 530546)
130-
TvlLimitTest:test_Deposit_OneOverLimitReverts() (gas: 109467)
131-
TvlLimitTest:test_LimitStartsAtZero_DepositReverts() (gas: 83553)
132-
TvlLimitTest:test_LimitStartsAtZero_MaxDepositIsZero() (gas: 36131)
133-
TvlLimitTest:test_MaxDeposit_ClampsToZeroWhenLimitLoweredBelowTvl() (gas: 419324)
134-
TvlLimitTest:test_MaxDeposit_ReturnsRemainingCapacity() (gas: 395699)
135-
TvlLimitTest:test_MaxDeposit_TracksLimitChanges() (gas: 493213)
136-
TvlLimitTest:test_MaxDeposit_ZeroWhenAtLimit() (gas: 363514)
137-
TvlLimitTest:test_MaxMint_AlwaysZero() (gas: 39358)
138-
TvlLimitTest:test_MaxTvlDefaultsToZero() (gas: 8516)
139-
TvlLimitTest:test_Mint_AlwaysReverts() (gas: 39884)
140-
TvlLimitTest:test_OwnerDefaultsToAdmin() (gas: 10706)
141-
TvlLimitTest:test_RenounceOwnership_LocksLimitForever() (gas: 46579)
142-
TvlLimitTest:test_SetMaxTvl_EmitsEvent() (gas: 45835)
143-
TvlLimitTest:test_SetMaxTvl_OnlyOwner() (gas: 15204)
144-
TvlLimitTest:test_SetMaxTvl_OwnerCanRaiseAndLower() (gas: 36654)
145-
TvlLimitTest:test_TransferOwnership_EmitsEvent() (gas: 35601)
146-
TvlLimitTest:test_TransferOwnership_OnlyOwner() (gas: 15756)
147-
TvlLimitTest:test_TransferOwnership_TransfersControl() (gas: 60698)
148-
YieldTokenOracleTest:test_constructorRejectsAssetMismatch() (gas: 43816)
149-
YieldTokenOracleTest:test_constructorRejectsZeroConversionSample() (gas: 38335)
150-
YieldTokenOracleTest:test_conversionSampleBoundsPricingError() (gas: 887719)
151-
YieldTokenOracleTest:test_priceAtParity() (gas: 500382)
152-
YieldTokenOracleTest:test_priceTracksExchangeRate() (gas: 950013)
153-
YieldTokenOracleTest:test_priceWithEqualDecimals() (gas: 672386)
1+
FCMGasSnapshotsTest:test_gas_deposit() (gas: 312994)
2+
FCMGasSnapshotsTest:test_gas_harvest() (gas: 37281)
3+
FCMGasSnapshotsTest:test_gas_rebalance() (gas: 45223)
4+
FCMGasSnapshotsTest:test_gas_redeem() (gas: 204611)

solidity/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Compiler files
22
cache/
33
out/
4+
coverage/
5+
lcov.info
46

57
# Ignores development broadcast logs
68
!/broadcast

solidity/foundry.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ remappings = [
1111
]
1212
optimizer_runs = 200
1313
fs_permissions = [{ access = "read", path = "./deployments"}]
14-
no_match_contract = "ForkTest"
14+
no_match_path = "test/fork/*"
15+
no_match_coverage = "script|test"
1516

1617
[rpc_endpoints]
1718
flow_mainnet = "https://mainnet.evm.nodes.onflow.org"
1819

1920
[profile.ci]
20-
no_match_contract = "^$"
21+
no_match_path = "^$"
2122
via_ir = true
2223
optimizer_runs = 3_000
2324
verbosity = 3

solidity/script/ConfiguredScript.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: UNLICENSED
2-
pragma solidity ^0.8.20;
2+
pragma solidity ^0.8.24;
33

44
import {MarketLib} from "../src/libraries/MarketLib.sol";
55
import {IUniswapV3Factory} from "./interfaces/IUniswapV3Factory.sol";

solidity/script/DeployVault.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: UNLICENSED
2-
pragma solidity ^0.8.20;
2+
pragma solidity ^0.8.24;
33

44
import {Id, Market} from "@morpho-blue/interfaces/IMorpho.sol";
55
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

solidity/script/GrantEarlyAccess.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: UNLICENSED
2-
pragma solidity ^0.8.20;
2+
pragma solidity ^0.8.24;
33

44
import {console} from "forge-std/Script.sol";
55

solidity/script/LiveCheck.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: UNLICENSED
2-
pragma solidity ^0.8.20;
2+
pragma solidity ^0.8.24;
33

44
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
55
import {Script, console} from "forge-std/Script.sol";

solidity/script/Rebalance.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: UNLICENSED
2-
pragma solidity ^0.8.20;
2+
pragma solidity ^0.8.24;
33

44
import {Script, console} from "forge-std/Script.sol";
55

0 commit comments

Comments
 (0)