bookmark/tests
pyr0ball efe3f65cd5 fix: release camera capture handle on failed or repeated open
- Fix critical resource leak when cv2.VideoCapture.isOpened() returns False:
  create capture in local variable, verify it opened, call .release() before
  raising RuntimeError, only assign to self._capture after confirming success
- Fix potential leak on repeated open(): release any existing self._capture
  before creating a new one
- Add regression test: test_open_raises_when_capture_not_opened now verifies
  .release() is called on failed capture
- Add new test: test_open_twice_releases_first_capture verifies first capture's
  .release() is called before second is assigned

All 28 tests passing (5 camera + 23 existing).
2026-07-13 10:44:47 -07:00
..
__init__.py chore: scaffold bookmark project structure 2026-07-13 10:08:41 -07:00
test_camera.py fix: release camera capture handle on failed or repeated open 2026-07-13 10:44:47 -07:00
test_catalogue.py feat: add CSV catalogue data layer 2026-07-13 10:11:49 -07:00
test_image_processing.py feat: add book-region cropping from wide captures 2026-07-13 10:24:05 -07:00
test_manual_button_strategy.py feat: add capture strategy interface and manual button strategy 2026-07-13 10:28:10 -07:00
test_motion_stop_strategy.py feat: add motion-stop countdown capture strategy 2026-07-13 10:33:12 -07:00
test_sizing.py feat: add deterministic marker-based size bucketing 2026-07-13 10:19:10 -07:00
test_stable_centered_strategy.py feat: add stable-centered auto-detect capture strategy 2026-07-13 10:36:54 -07:00