Skip to content

Commit 8e1e97a

Browse files
committed
notes(TODO) Add file
1 parent 3ebc9f3 commit 8e1e97a

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

notes/TODO.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# VCSPull TODO List
2+
3+
This document outlines the tasks needed to improve the test coverage, type safety, and overall quality of the VCSPull codebase based on the test audit plan.
4+
5+
## 1. Type Safety Improvements
6+
7+
- [ ] **Enhance Exception Hierarchy**
8+
- [ ] Expand `exc.py` with specific exception types for different error scenarios
9+
- [ ] Add rich exception metadata (path, url, suggestions, risk level)
10+
- [ ] Add proper typing to all exception classes
11+
12+
- [ ] **Improve Type Definitions**
13+
- [ ] Revise `types.py` to use more specific types (avoid Any)
14+
- [ ] Create type aliases for complex types to improve readability
15+
- [ ] Add Protocols for structural typing where appropriate
16+
- [ ] Ensure all TypedDict definitions are complete and accurate
17+
18+
- [ ] **Type Annotation Completeness**
19+
- [ ] Audit all functions for missing type annotations
20+
- [ ] Add return type annotations to all functions
21+
- [ ] Use Optional and Union types appropriately
22+
- [ ] Properly annotate all class methods
23+
24+
- [ ] **Configure Strict Type Checking**
25+
- [ ] Set up `mypy.ini` with strict mode enabled
26+
- [ ] Enable all recommended type checking flags
27+
- [ ] Add CI checks for type validation
28+
29+
## 2. Test Coverage Improvements
30+
31+
- [ ] **Config Module**
32+
- [ ] Add tests for edge cases in config parsing
33+
- [ ] Test invalid configuration handling
34+
- [ ] Test environment variable expansion
35+
- [ ] Test relative path resolution
36+
37+
- [ ] **CLI Module**
38+
- [ ] Add tests for each CLI command
39+
- [ ] Test error handling and output formatting
40+
- [ ] Test interactive mode behaviors
41+
- [ ] Mock external dependencies for reliable testing
42+
43+
- [ ] **Sync Operations**
44+
- [ ] Create tests for sync operations with different VCS types
45+
- [ ] Mock VCS operations for predictable testing
46+
- [ ] Test error handling during sync operations
47+
- [ ] Test recovery mechanisms
48+
49+
- [ ] **Validator Module**
50+
- [ ] Add tests for each validation function
51+
- [ ] Test validation of malformed configurations
52+
- [ ] Ensure all validators throw appropriate exceptions
53+
54+
## 3. Test Infrastructure
55+
56+
- [ ] **Improve Test Fixtures**
57+
- [ ] Create reusable fixtures for common test scenarios
58+
- [ ] Implement typed fixtures using Protocols
59+
- [ ] Add fixtures for different repository types (git, svn, etc.)
60+
61+
- [ ] **Add Property-Based Testing**
62+
- [ ] Implement Hypothesis test strategies for configuration generation
63+
- [ ] Test config parsing with random valid and invalid inputs
64+
- [ ] Add property-based tests for path handling
65+
66+
- [ ] **Improve Test Organization**
67+
- [ ] Organize tests by module/feature
68+
- [ ] Add integration tests for end-to-end workflows
69+
- [ ] Separate unit tests from integration tests
70+
71+
## 4. Documentation
72+
73+
- [ ] **Docstring Improvements**
74+
- [ ] Ensure all public functions have complete docstrings
75+
- [ ] Add examples to docstrings where appropriate
76+
- [ ] Document possible exceptions and error conditions
77+
- [ ] Add type information to docstrings (NumPy format)
78+
79+
- [ ] **Add Type Documentation**
80+
- [ ] Document complex type behavior
81+
- [ ] Add clear explanations for TypedDict usage
82+
- [ ] Document Protocol implementations
83+
84+
## 5. Refactoring for Testability
85+
86+
- [ ] **Dependency Injection**
87+
- [ ] Refactor code to allow for dependency injection
88+
- [ ] Make external dependencies mockable
89+
- [ ] Create interfaces for key components
90+
91+
- [ ] **Pure Functions**
92+
- [ ] Extract pure functions from complex methods
93+
- [ ] Move side effects to dedicated functions
94+
- [ ] Improve function isolation
95+
96+
## 6. CI Integration
97+
98+
- [ ] **Test Automation**
99+
- [ ] Configure CI to run all tests
100+
- [ ] Add coverage reporting
101+
- [ ] Set up test matrix for different Python versions
102+
- [ ] Implement test results visualization
103+
104+
- [ ] **Type Checking in CI**
105+
- [ ] Add mypy checks to CI pipeline
106+
- [ ] Add annotations coverage reporting
107+
108+
## Prioritized Tasks
109+
110+
1. **Immediate Priorities**
111+
- Enhance exception hierarchy
112+
- Complete type annotations
113+
- Configure strict type checking
114+
- Add tests for core configuration functionality
115+
116+
2. **Medium-term Goals**
117+
- Improve test fixtures
118+
- Add tests for CLI operations
119+
- Improve docstrings
120+
- Refactor for better testability
121+
122+
3. **Long-term Objectives**
123+
- Implement property-based testing
124+
- Achieve 90%+ test coverage
125+
- Complete documentation overhaul
126+
- Integrate comprehensive CI checks
127+
128+
## Metrics and Success Criteria
129+
130+
- [ ] **Type Safety**
131+
- [ ] Pass mypy in strict mode with zero warnings
132+
- [ ] 100% of functions have type annotations
133+
- [ ] No usage of `Any` without explicit justification
134+
135+
- [ ] **Test Coverage**
136+
- [ ] Overall test coverage > 90%
137+
- [ ] Core modules coverage > 95%
138+
- [ ] All public APIs have tests
139+
140+
- [ ] **Documentation**
141+
- [ ] All public APIs documented
142+
- [ ] All complex types documented
143+
- [ ] Examples for all major features

0 commit comments

Comments
 (0)