7.5 KiB
Test Failures Analysis - Gaps and Missing Code
Date: 2025-12-24
Status: ⚠️ 38 FAILING TESTS IDENTIFIED
🔴 Critical Issues: Missing Code or Implementation Gaps
1. Error Message Mismatches (Custom Errors vs String Errors)
Problem: Contracts use custom errors, but tests expect string error messages.
DebtRegistry (4 failing tests)
- Contract uses: Custom errors (
DebtZeroDebtor(),DebtZeroAmount(),DebtLienNotActive(),DebtReduceByExceedsAmount()) - Tests expect: String errors like
"DebtRegistry: zero amount","DebtRegistry: zero debtor", etc. - Files affected:
test/emoney/unit/DebtRegistryTest.t.soltest/emoney/fuzz/DebtRegistryFuzz.t.sol
Fix Required: Update tests to use vm.expectRevert(abi.encodeWithSelector(DebtZeroAmount.selector)) instead of string errors.
PolicyManager (1 failing test)
- Contract uses: Custom error
PolicyInvalidLienMode(uint8 mode) - Test expects: String error
"PolicyManager: invalid lien mode" - File affected:
test/emoney/unit/PolicyManagerTest.t.sol
Fix Required: Update test to use custom error selector.
TokenFactory138 (2 failing tests)
- Contract uses: Custom error
ZeroIssuer()fromFactoryErrors.sol - Tests expect: String error
"TokenFactory138: zero issuer" - File affected:
test/emoney/unit/TokenFactoryTest.t.sol
Fix Required: Update tests to use custom error selector.
eMoneyToken (1 failing test)
- Contract uses: Custom error
ToNotCompliant(address account) - Test expects: String error
"eMoneyToken: to not compliant" - File affected:
test/emoney/unit/eMoneyTokenTest.t.sol
Fix Required: Update test to use custom error selector.
2. Missing Validation Logic
RailTriggerRegistry - Duplicate InstructionId Check
- Issue: Test
test_createTrigger_duplicateInstructionId()expects revert, but contract DOES check for duplicates (line 43:require(!instructionIdExists(t.instructionId), ...)) - Problem: Test may be incorrectly structured or
instructionIdExists()function may have a bug - Files affected:
test/emoney/unit/RailTriggerRegistryTest.t.soltest/emoney/fuzz/RailTriggerFuzz.t.sol
Action Required: Review instructionIdExists() implementation and test logic.
3. Test Setup Issues (Missing Configuration)
CCIPReceiver Tests (2 failing tests)
- Error:
"CCIPReceiver: zero aggregator address" - Problem: Tests don't set up
ORACLE_AGGREGATOR_ADDRESSin setUp - Files affected:
test/ccip/CCIPErrorHandling.t.soltest/ccip/CCIPIntegration.t.sol
Fix Required: Add oracle aggregator address setup in test setUp functions.
CCIPSender Tests (5 failing tests)
- Error:
"CCIPSender: destination not enabled" - Problem: Tests don't configure CCIP destinations before testing
- File affected:
test/ccip/CCIPFees.t.sol
Fix Required: Add destination configuration in test setup.
ReserveSystem Test (1 failing test)
- Error:
AccessControlUnauthorizedAccountin setUp - Problem: Test doesn't grant required roles before setup
- File affected:
test/reserve/ReserveSystemTest.t.sol
Fix Required: Grant necessary roles in setUp function.
SettlementOrchestrator Tests (3 failing tests)
- Error:
AccessControlUnauthorizedAccountand log mismatches - Problem: Missing role grants or incorrect event expectations
- File affected:
test/emoney/unit/SettlementOrchestratorTest.t.sol
Fix Required: Review role grants and event helper definitions.
4. Test Logic Errors
CompliantUSDT Burn Test (1 failing test)
- Error:
assertion failed: 999000000000 != 1000000000000 - Problem: Test transfers 1000 * 10^6 to user1, then burns it, but assertion checks wrong balance
- File affected:
test/compliance/CompliantUSDTTest.t.sol - Line 79:
assertEq(usdt.totalSupply(), 1000000 * 10**6 - amount);- This is correct - Line 80:
assertEq(usdt.balanceOf(user1), 0);- This should pass if burn worked
Action Required: Review test logic - the assertion may be checking the wrong value.
5. Missing Functionality or Implementation Gaps
WETH/WETH10 Withdraw Tests (3 failing tests)
- Error:
EvmError: RevertintestWithdraw() - Problem: Withdraw functionality may be missing or incorrectly implemented
- Files affected:
test/WETH.t.soltest/WETH10.t.sol
Action Required: Review WETH/WETH10 withdraw implementation.
Bridge Cross-Chain Tests (2 failing tests)
- Error:
EvmError: RevertintestSendCrossChain() - Problem: Bridge may not be properly configured or missing functionality
- Files affected:
test/CCIPWETH9Bridge.t.soltest/CCIPWETH10Bridge.t.sol
Action Required: Review bridge configuration and cross-chain send functionality.
Payment Rails Flow Tests (4 failing tests)
- Errors: Various state and validation errors
- Problem: Integration tests may have incorrect state setup or missing validations
- File affected:
test/emoney/integration/PaymentRailsFlowTest.t.sol
Action Required: Review integration test setup and state management.
6. Fuzz Test Edge Cases
AggregatorFuzz Test (1 failing test)
- Error:
assertion failed: 25100000000 != 25000000000 - Problem: Fuzz test found edge case where price deviation logic may not work as expected
- File affected:
test/AggregatorFuzz.t.sol
Action Required: Review price deviation threshold logic in Aggregator contract.
NetworkResilience Test (1 failing test)
- Error:
Oracle should recover after unpause: 25000000000 != 25100000000 - Problem: Oracle may not properly recover state after unpause
- File affected:
test/e2e/NetworkResilience.t.sol
Action Required: Review oracle pause/unpause state recovery logic.
✅ Summary of Issues by Category
| Category | Count | Severity | Action Required |
|---|---|---|---|
| Error Message Mismatches | 8 | 🔴 High | Update tests to use custom error selectors |
| Missing Test Setup | 11 | 🟡 Medium | Add proper configuration in setUp functions |
| Missing Validation Logic | 2 | 🟡 Medium | Review validation implementations |
| Test Logic Errors | 1 | 🟢 Low | Fix test assertions |
| Missing Functionality | 9 | 🔴 High | Review contract implementations |
| Fuzz Test Edge Cases | 2 | 🟡 Medium | Review edge case handling |
| Other | 5 | 🟡 Medium | Various issues |
🎯 Priority Fixes
Immediate (High Priority)
- Fix error message mismatches - Update all tests to use custom error selectors (8 tests)
- Review missing functionality - WETH withdraw, bridge cross-chain, payment rails (9 tests)
- Fix test setup issues - CCIPReceiver, CCIPSender, ReserveSystem, SettlementOrchestrator (11 tests)
Short Term (Medium Priority)
- Review validation logic - RailTriggerRegistry duplicate check (2 tests)
- Fix fuzz test edge cases - Aggregator and NetworkResilience (2 tests)
Low Priority
- Fix test logic errors - CompliantUSDT burn test (1 test)
📝 Notes
- 165 tests passing - Good coverage overall
- 38 tests failing - Mostly test setup and error message mismatches
- No compilation errors - All contracts compile successfully
- Most issues are test-related - Not necessarily missing code, but missing test configuration
Last Updated: 2025-12-24