Skip to content

test: Added Tests for Program Release Schedules Across Upgrades to close #394#637

Open
Oluwaseyi89 wants to merge 2 commits intoJagadeeshftw:masterfrom
Oluwaseyi89:test/program-release-schedules-across-upgrades
Open

test: Added Tests for Program Release Schedules Across Upgrades to close #394#637
Oluwaseyi89 wants to merge 2 commits intoJagadeeshftw:masterfrom
Oluwaseyi89:test/program-release-schedules-across-upgrades

Conversation

@Oluwaseyi89
Copy link

Description

This PR adds comprehensive tests to ensure program release schedules remain functional across contract upgrades and optional state migrations. The changes verify that both automatic and manual releases continue to work seamlessly after upgrading from version N to N+1.

Key Changes

  • Added upgrade simulation tests that verify schedule persistence after contract upgrades
  • Implemented tests for:
    • Schedule creation on version N
    • Upgrade to version N+1
    • Continued automatic releases without data loss
    • Continued manual releases without data loss
  • Added snapshot tests to verify:
    • test_upgrade_preserves_schedule_and_allows_automatic_release
    • test_upgrade_preserves_schedule_and_allows_manual_release
  • Enhanced existing test coverage for RBAC, pause mechanisms, and emergency withdrawal scenarios

Test Coverage

  • ✅ Schedule state preservation across upgrades
  • ✅ Automatic release functionality post-upgrade
  • ✅ Manual release functionality post-upgrade
  • ✅ History and next release times remain intact
  • ✅ Integration with RBAC and pause mechanisms

Files Modified

  • program-escrow/src/lib.rs - Core test implementations
  • program-escrow/src/test.rs - Test harness updates
  • program-escrow/src/test_lifecycle.rs - Lifecycle test scenarios
  • program-escrow/src/test_pause.rs - Pause state tests
  • Various test snapshot files for verification

Testing

All program-escrow tests pass successfully. New snapshot files have been generated to verify expected behavior.

 49 files changed, 27889 insertions(+), 1143 deletions(-)
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_check_panics_when_entered.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_check_passes_when_not_entered.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_clear_when_not_set_is_safe.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_double_set_detected.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_guard_can_be_set_and_cleared.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_guard_initially_not_set.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_guard_isolation_between_envs.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_guard_isolation_between_envs.2.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_guard_state_persistence.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_multiple_set_clear_cycles.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/reentrancy_guard_standalone_test/test_sequential_protected_operations.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_lifecycle/test_upgrade_preserves_schedule_and_allows_automatic_release.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_lifecycle/test_upgrade_preserves_schedule_and_allows_manual_release.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_admin_can_emergency_withdraw_when_paused.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_admin_emergency_withdraw_requires_paused_state.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_after_emergency_withdraw_can_unpause_and_reuse.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_emergency_withdraw_drains_all_funds.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_emergency_withdraw_emits_event.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_emergency_withdraw_ignores_release_and_refund_pause.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_emergency_withdraw_on_empty_contract_is_safe.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_emergency_withdraw_requires_lock_paused_not_refund_paused.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_emergency_withdraw_requires_lock_paused_not_release_paused.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_operator_cannot_emergency_withdraw.1.json
 create mode 100644 contracts/program-escrow/test_snapshots/test_pause/test_rbac_pause_state_preserved_after_emergency_withdraw.1.json

Documentation

Updated README with guarantees around upgrade safety for program release schedules.


This PR ensures that program release schedules maintain integrity through upgrades, providing confidence in the contract's long-term reliability.

closes #394

@vercel
Copy link

vercel bot commented Feb 25, 2026

@Oluwaseyi89 is attempting to deploy a commit to the Jagadeesh B's projects Team on Vercel.

A member of the Team first needs to authorize it.

@Oluwaseyi89
Copy link
Author

Oluwaseyi89 commented Feb 25, 2026

@Jagadeeshftw please, review. All my implementations passed checks.

@Jagadeeshftw
Copy link
Owner

please resolve the conflicts

@Oluwaseyi89
Copy link
Author

@Jagadeeshftw merge conflict resolved.

@Jagadeeshftw
Copy link
Owner

please resolve the conflicts

@Jagadeeshftw
Copy link
Owner

@Oluwaseyi89 Can you please resolve the conflicts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Tests for Program Release Schedules Across Upgrades

2 participants