Testing
Run the test suite from the project root:
python -m pytest tests/ -v
What tests should protect
Tests should verify observable behavior rather than private implementation details. Prioritize:
- file discovery and categorization;
- preview plans and confirmed organization;
- filename conflicts and overwrite prevention;
- undo and history validation;
- duplicate-removal strategies;
- ignore rules and custom categories;
- watch-mode startup, events, and shutdown;
- failure handling and useful diagnostics.
Regression tests
Every bug fix should include a test that would have failed before the fix. Prefer small tests that isolate one behavior, then retain an integration test for important end-to-end workflows.
Cross-platform checks
FOLDR targets Linux, macOS, and Windows. For filesystem-sensitive changes, verify path handling, permissions, and watcher behavior on the platforms affected by the change.