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

Tatsh / instagram-archiver / 24951109970
100%

Build:
DEFAULT BRANCH: master
Ran 26 Apr 2026 07:24AM UTC
Jobs 5
Files 12
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

26 Apr 2026 07:09AM UTC coverage: 100.0%. Remained the same
24951109970

push

github

Tatsh
tests: drive 100% coverage through public-API end-to-end tests

Bring the suite back to 100% line + branch + partial-branch coverage
without importing any private (`_`-prefixed) symbol from the package.

Strategy:

- New `_FakeScraper` substitute is patched in at the public
  `instagram_archiver.main.ProfileScraper` /
  `instagram_archiver.main.SavedScraper` boundary by
  `_install_fake_scraper`. Each test parameterises the substitute via
  the `process_impl` coroutine and the `cookies` tuple, letting
  `runner.invoke(main, ...)` actually drive `_drive_scraper`,
  `_async_*_main`, the StatusDisplay refresh task, the signal
  handlers, and `_register_termination_signal_handlers` end-to-end.
- Signal-handler paths are exercised with real
  `os.kill(os.getpid(), signal.SIGINT)` calls from inside the fake
  process body (idle, busy, force-quit). The Windows fallback path is
  hit by patching `_UnixSelectorEventLoop.add_signal_handler` to raise
  `NotImplementedError`, then delivering a real signal so
  `_windows_signal_handler` runs.
- Scraper-side branches that the existing tests missed are now
  covered: producer cancellation with and without an `on_cleanup`
  callback, the late-exception path where `stop_event` was already
  set, the natural-exit branch of pagination
  (`while page_info['has_next_page']` evaluating False), the profile
  pic write-vs-skip branches, and the `yt_dlp_state.total_urls`
  increment for highlight URLs.
- `dispatch_edges` gains a test exercising both the `stats` and
  `yt_dlp_state` increment branches together.
- New `image_worker` test sets `stop_event` from inside `save_media`
  before raising, driving the `_set_first_exception` no-op branch
  where `stop_event.is_set()` is already True.
- `_FakeScraper` declares `cookies` and `instances` as immutable
  `tuple[Any, ...]` defaults; the per-instance recording uses
  tuple-concat (`type(self).instances = (*type(self).instances,
  self)`), so no `ClassVar` and no mutable class-a... (continued)

117 of 117 branches covered (100.0%)

Branch coverage included in aggregate %.

934 of 934 relevant lines covered (100.0%)

5.0 hits per line

Jobs
ID Job ID Ran Files Coverage
1 24951109970.1 26 Apr 2026 07:24AM UTC 12
100.0
GitHub Action Run
2 24951109970.2 26 Apr 2026 07:25AM UTC 12
100.0
GitHub Action Run
3 24951109970.3 26 Apr 2026 07:25AM UTC 12
100.0
GitHub Action Run
4 24951109970.4 26 Apr 2026 07:25AM UTC 12
100.0
GitHub Action Run
5 24951109970.5 26 Apr 2026 07:25AM UTC 12
99.71
GitHub Action Run
Source Files on build 24951109970
  • Tree
  • List 12
  • Changed 6
  • Source Changed 6
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #24951109970
  • 82df013c on github
  • Prev Build on master (#24947727469)
  • Next Build on master (#24951238380)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc