ken_nogi/PythonProj/ScanOCR/スクリプト/tests/test_lock_manager.py
Kenichiro NOGI 905633541f feat: 二重起動防止ロック管理モジュールを追加
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-02 10:09:32 +09:00

47 lines
1.2 KiB
Python

import os
import pytest
from lock_manager import LockAcquisitionError, acquire_lock, release_lock
def test_acquire_lock_creates_file_with_pid(tmp_path):
lock_path = tmp_path / ".lock"
acquire_lock(lock_path, pid_checker=lambda pid: True)
assert lock_path.exists()
assert lock_path.read_text(encoding="utf-8").strip() == str(os.getpid())
def test_acquire_lock_raises_when_existing_pid_running(tmp_path):
lock_path = tmp_path / ".lock"
lock_path.write_text("12345", encoding="utf-8")
with pytest.raises(LockAcquisitionError):
acquire_lock(lock_path, pid_checker=lambda pid: True)
def test_acquire_lock_replaces_stale_lock(tmp_path):
lock_path = tmp_path / ".lock"
lock_path.write_text("12345", encoding="utf-8")
acquire_lock(lock_path, pid_checker=lambda pid: False)
assert lock_path.read_text(encoding="utf-8").strip() == str(os.getpid())
def test_release_lock_removes_file(tmp_path):
lock_path = tmp_path / ".lock"
lock_path.write_text("12345", encoding="utf-8")
release_lock(lock_path)
assert not lock_path.exists()
def test_release_lock_missing_file_no_error(tmp_path):
lock_path = tmp_path / ".lock"
release_lock(lock_path) # 例外が出ないことを確認するだけ