refactor: salvage adapter and CLI cleanup from PR #939
Salvaged from PR #939 by kshitij. - deduplicate Discord slash command dispatch and local file send helpers - deduplicate Slack file uploads while preserving thread metadata - extract shared CLI session relative-time formatting - hoist browser PATH cleanup constants and throttle screenshot pruning - tidy small type and import cleanups
This commit is contained in:
parent
f279bb004f
commit
0bb7ed1d95
7 changed files with 164 additions and 282 deletions
|
|
@ -297,7 +297,9 @@ class TestScreenshotCleanup:
|
|||
def test_cleanup_removes_old_screenshots(self, tmp_path):
|
||||
"""_cleanup_old_screenshots should remove files older than max_age_hours."""
|
||||
import time
|
||||
from tools.browser_tool import _cleanup_old_screenshots
|
||||
from tools.browser_tool import _cleanup_old_screenshots, _last_screenshot_cleanup_by_dir
|
||||
|
||||
_last_screenshot_cleanup_by_dir.clear()
|
||||
|
||||
# Create a "fresh" file
|
||||
fresh = tmp_path / "browser_screenshot_fresh.png"
|
||||
|
|
@ -314,10 +316,32 @@ class TestScreenshotCleanup:
|
|||
assert fresh.exists(), "Fresh screenshot should not be removed"
|
||||
assert not old.exists(), "Old screenshot should be removed"
|
||||
|
||||
def test_cleanup_is_throttled_per_directory(self, tmp_path):
|
||||
import time
|
||||
from tools.browser_tool import _cleanup_old_screenshots, _last_screenshot_cleanup_by_dir
|
||||
|
||||
_last_screenshot_cleanup_by_dir.clear()
|
||||
|
||||
old = tmp_path / "browser_screenshot_old.png"
|
||||
old.write_bytes(b"old")
|
||||
old_time = time.time() - (25 * 3600)
|
||||
os.utime(str(old), (old_time, old_time))
|
||||
|
||||
_cleanup_old_screenshots(tmp_path, max_age_hours=24)
|
||||
assert not old.exists()
|
||||
|
||||
old.write_bytes(b"old-again")
|
||||
os.utime(str(old), (old_time, old_time))
|
||||
_cleanup_old_screenshots(tmp_path, max_age_hours=24)
|
||||
|
||||
assert old.exists(), "Repeated cleanup should be skipped while throttled"
|
||||
|
||||
def test_cleanup_ignores_non_screenshot_files(self, tmp_path):
|
||||
"""Only files matching browser_screenshot_*.png should be cleaned."""
|
||||
import time
|
||||
from tools.browser_tool import _cleanup_old_screenshots
|
||||
from tools.browser_tool import _cleanup_old_screenshots, _last_screenshot_cleanup_by_dir
|
||||
|
||||
_last_screenshot_cleanup_by_dir.clear()
|
||||
|
||||
other_file = tmp_path / "important_data.txt"
|
||||
other_file.write_bytes(b"keep me")
|
||||
|
|
@ -330,11 +354,13 @@ class TestScreenshotCleanup:
|
|||
|
||||
def test_cleanup_handles_empty_dir(self, tmp_path):
|
||||
"""Cleanup should not fail on empty directory."""
|
||||
from tools.browser_tool import _cleanup_old_screenshots
|
||||
from tools.browser_tool import _cleanup_old_screenshots, _last_screenshot_cleanup_by_dir
|
||||
_last_screenshot_cleanup_by_dir.clear()
|
||||
_cleanup_old_screenshots(tmp_path, max_age_hours=24) # Should not raise
|
||||
|
||||
def test_cleanup_handles_nonexistent_dir(self):
|
||||
"""Cleanup should not fail if directory doesn't exist."""
|
||||
from pathlib import Path
|
||||
from tools.browser_tool import _cleanup_old_screenshots
|
||||
from tools.browser_tool import _cleanup_old_screenshots, _last_screenshot_cleanup_by_dir
|
||||
_last_screenshot_cleanup_by_dir.clear()
|
||||
_cleanup_old_screenshots(Path("/nonexistent/dir"), max_age_hours=24) # Should not raise
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue