Verify that the refactored Repository.cs (split into partial classes) maintains all functionality without regressions.
- Application: SourceGit
- Framework: .NET 9.0 with Avalonia UI
- Refactored Files:
- Repository.cs (main)
- Repository.State.cs (shared state)
- Repository.Refresh.cs (refresh operations)
- Repository.GitOperations.cs (git operations)
- Repository.Search.cs (search functionality)
- Open existing repository
- Clone new repository
- Initialize new repository
- Open bare repository
- Handle invalid repository paths
- Repository settings persistence
- Filter states (branch/tag filters)
- Search state preservation
- UI state synchronization
- RefreshBranches() - Local and remote branches
- RefreshTags() - All tags loaded correctly
- RefreshCommits() - Commit history with graph
- RefreshWorkingCopyChanges() - Staged/unstaged files
- RefreshStashes() - Stash list
- RefreshWorktrees() - Worktree information
- RefreshSubmodules() - Submodule status
- RefreshAll() - Full repository refresh
- RefreshAfterOperation() - Post-operation updates
- Auto-refresh on file system changes
- Parallel refresh performance
- Create new branch
- Delete branch (local/remote)
- Rename branch
- Checkout branch
- Merge branches
- Rebase operations
- Cherry-pick commits
- Fetch from remote
- Pull changes
- Push changes
- Add/remove remotes
- Prune remote branches
- Stage files
- Unstage files
- Create commits
- Amend commits
- Revert commits
- Reset (soft/mixed/hard)
- Create annotated tag
- Create lightweight tag
- Delete tags
- Push tags to remote
- Create stash
- Apply stash
- Pop stash
- Drop stash
- Clear all stashes
- Search by commit message
- Search by author
- Search by file path
- Search with filters active
- Clear search results
- Search in working directory
- Search in specific revision
- Navigate search results
- Performance with large repositories
- UI updates from background threads
- Concurrent refresh operations
- Progress indicator updates
- Error message display
- Repository with 10,000+ commits
- Repository with 100+ branches
- Repository with 1,000+ files
- Memory usage monitoring
- Response time measurements
- Multiple refresh operations
- Simultaneous git operations
- File system watcher events
- UI responsiveness
- Repository → Histories view
- Repository → WorkingCopy view
- Repository → Statistics view
- Repository → Branch tree
- Repository → Submodules
- Open in terminal
- Open in file explorer
- Open in external editor
- Git flow operations
- Network disconnection during fetch/pull/push
- Merge conflicts
- Permission denied errors
- Invalid git commands
- Repository deleted while open
- Permission changes
- Disk space issues
- File locks
- Branches: main, develop, feature/, release/, hotfix/*
- Tags: v1.0.0, v1.1.0, v2.0.0-beta
- Commits: 500+ commits with various patterns
- Files: Source code, documentation, binary files
- Submodules: At least 2 submodules
- Stashes: 5+ stashed changes
- Remotes: origin, upstream
- Merge History: Including merge commits and conflicts
- Large Files: Test performance with larger files
-
Setup Phase
- Create complex demo repository
- Generate test data
- Configure test environment
-
Functional Testing
- Execute each test category
- Document results
- Capture any errors or issues
-
Performance Testing
- Measure operation times
- Monitor resource usage
- Test with large datasets
-
Regression Testing
- Compare with original behavior
- Verify no functionality lost
- Check for new issues
- ✅ All functional tests pass
- ✅ No regression from original functionality
- ✅ Performance within acceptable limits (<3s for refresh operations)
- ✅ Memory usage stable (no leaks)
- ✅ UI remains responsive during operations
- ✅ Thread safety maintained
- ✅ Error handling works correctly
- Thread safety in UI updates
- Parallel refresh operations
- State synchronization across partial classes
- Git operation error handling
- Performance with large repositories
- Memory management
- Search functionality
- Filter combinations
- Edge cases in git operations
- Rare error conditions
- Platform-specific issues
Test: [Test Name]
Date: [Date]
Status: [Pass/Fail/Blocked]
Notes: [Any observations]
Issues Found: [Issue description if any]- Document all issues found
- Prioritize fixes based on severity
- Re-test after fixes
- Update documentation
- Performance optimization if needed