Skip to content

test(clock-service): add edge case tests for quarter-hour chimes and quiet hours#16

Merged
Orinks merged 7 commits intomainfrom
dev
Feb 5, 2026
Merged

test(clock-service): add edge case tests for quarter-hour chimes and quiet hours#16
Orinks merged 7 commits intomainfrom
dev

Conversation

@Orinks
Copy link
Owner

@Orinks Orinks commented Feb 5, 2026

Summary

Added 4 new tests for clock_service.py edge cases to improve coverage from 91% to 98%.

Changes

  • Quarter-hour at minute 0: Tests quarter-hour chime fires when hourly is disabled
  • Quarter-hour at minute 30: Tests quarter-hour chime fires when half-hour is disabled
  • Same-day quiet hours: Tests quiet hours that don't span midnight (e.g., 9 AM - 5 PM)
  • Overnight quiet hours boundaries: Tests boundary conditions for overnight quiet periods

Coverage

  • Before: 91% (lines 71, 74, 122, 126 uncovered)
  • After: 98% (1 line remaining due to boolean expression short-circuit)

Closes #15

Orinks and others added 7 commits February 2, 2026 02:03
Removes the old accessibletalkingclock/ directory that was left over from
the project rename. This duplicate tests/ folder caused pytest
ImportPathMismatchError during collection.

Also fixes an unused variable in scripts/generate_sounds.py.

Fixes #6
Bring audio module coverage from 65% to 96%:
- player.py: 66% → 94%
- tts_engine.py: 63% → 97%

Added comprehensive tests for:
- BASS audio init/cleanup with sound_lib
- Fallback playback via playsound3
- Volume control during active playback
- Stream lifecycle (create, stop, free)
- pyttsx3 engine init, speech, and error handling
- Voice enumeration and selection
- Rate property with engine sync
- Time formatting edge cases (midnight, noon, quarter-to)
- Error handling and graceful degradation

All external audio dependencies (sound_lib, playsound3, pyttsx3) are mocked.

Closes #8
BASS_Free doesn't exist in sound_lib. The cleanup method now just
resets the initialization flag instead of calling a non-existent
function. Updated tests accordingly.
Cover all error paths and edge cases in clock_pack_loader:
- discover_packs with nonexistent directory
- discover_packs skipping non-directory items
- discover_packs handling ClockPackError and generic exceptions
- load_pack with invalid JSON manifest
- load_pack with missing required fields
- validate_pack with unsupported audio formats
- get_pack returning None for missing IDs
- refresh clearing cache and re-discovering

Coverage: 82% → 99%
Add 9 new tests covering uncovered lines in clock_pack_loader:
- discover_packs with non-existent directory
- discover_packs skipping non-directory items
- discover_packs handling ClockPackError from invalid packs
- discover_packs handling generic exceptions (PermissionError)
- load_pack with invalid JSON manifest
- load_pack with missing version field
- validate_pack with unsupported audio format
- get_pack returning None for missing pack
- refresh clearing cache and re-discovering packs

Closes #12
…quiet hours

Cover previously uncovered lines in clock_service.py:
- Quarter-hour chimes when hourly/half-hour disabled (lines 71, 74)
- Same-day quiet hours range (line 126)
- Overnight quiet hours boundaries (line 122)

Coverage improved from 91% to 98%.

Closes #15
@Orinks Orinks merged commit 022bbfb into main Feb 5, 2026
3 checks passed
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 clock_service.py edge cases to reach 100% coverage

1 participant