• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Geoffery10 / Discord-Role-Manager / 27889910644
90%

Build:
DEFAULT BRANCH: main
Ran 21 Jun 2026 01:40AM UTC
Jobs 1
Files 21
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 Jun 2026 01:38AM UTC coverage: 59.308% (+11.1%) from 48.192%
27889910644

push

github

Geoffery10
Add test_birthday.py additions — birthday.py now at 100% coverage

birthday.py went from 57% to 100%. 16 new tests + 3 kept existing,
covering every branch of check_user, find_next_birthday, and the
check_birthday orchestrator (which had never been called in tests
before — the function the line-57 truthiness bug lived in).

check_user branches now covered:
  - 00-00 unset sentinel early return
  - YYYY-MM-DD fallback format
  - role_id == -1 skips add/remove but still sends message
  - add_role exception is swallowed and message still sent
  - get_channel exception bails out cleanly
  - channel.send exception is swallowed
  - remove_role exception on non-birthday branch logs error

find_next_birthday branches:
  - empty user list
  - skips users with 00-00
  - returns ALL users sharing the next upcoming birthday
  - wraps to next year for January birthdays seen in December
  - today's birthday is treated as upcoming (not past)

check_birthday orchestrator (regression coverage for line 57):
  - happy path: json loads, users filtered by guild, check_user called
    once per guild member
  - json load failure: error logged, no crash
  - guild not in json: warning logged, no crash
  - filters out users not in the guild

Conftest changes:
  - birthday_json now function-scoped with teardown so tests that
    don't request it don't see leftover state (caught a real
    flake where the json load-failure test was silently passing
    because a previous test had created the file)
  - new no_birthday_json fixture explicitly guarantees the file
    is absent
  - last_update_json now also function-scoped with teardown

Logger mocking note:
  birthday.py does 'from utils.logger import log', binding the
  symbol at import time. Patching utils.logger.log alone doesn't
  affect birthday.log. The mock_logger fixture now patches both
  locations with the same AsyncMock.

257 of 264 new or added lines in 2 files covered. (97.35%)

1252 of 2111 relevant lines covered (59.31%)

0.59 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
91.3
1.3% tests/conftest.py
3
98.95
3.5% tests/test_birthday.py
Jobs
ID Job ID Ran Files Coverage
1 27889910644.1 21 Jun 2026 01:40AM UTC 21
59.31
GitHub Action Run
Source Files on build 27889910644
  • Tree
  • List 21
  • Changed 4
  • Source Changed 2
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #27889910644
  • 3c67d711 on github
  • Prev Build on main (#27889600890)
  • Next Build on main (#27889998957)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc