* feat: add pytest unit tests and CI workflow
Add 67 tests covering both create_listing.py and dedup.py with shared
Pillow-based image fixtures. Add GitHub Actions workflow to run tests
on Python file changes.
* fix: address PR review feedback
- Use monkeypatch.chdir(tmp_path) so tests write to temp dirs instead
of polluting the repo's README.md and index.html
- Strengthen unicode filename test to assert URL-encoded form (%C3%A9)
- Move hashlib import to module level in test_dedup.py
- Remove unused _zero_hash helper and Path import
- Prefix unused tuple unpacking variables with underscore
* fix: add docstrings and strengthen degenerate hash test
- Add docstrings to all test classes, methods, and helper functions
to achieve 100% docstring coverage
- Strengthen test_skips_degenerate_hashes to assert groups == []
instead of only checking for no-crash
* fix: use hardcoded MD5 digests and add fixture validation
- Replace hashlib.md5() calls with known digest constants to remove
hashlib import from test module
- Add input validation to _make_gif fixture for clear error messages
on empty colors or mismatched durations length