Initial commit: MISF VOB download and upload automation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
c2dec96b1f
43 files changed
+10944
No files matched your search
@@ -0,0 +1,147 @@
|
||||
"""Unit tests for Chromium-only browser resolution."""
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from chrome import (
|
||||
PROJECT_ROOT,
|
||||
_allow_google_chrome_fallback,
|
||||
_browser_runs_in_background,
|
||||
_bundled_chromedriver_for,
|
||||
_google_chrome_fallback_paths,
|
||||
_installed_chromium_paths,
|
||||
_portable_chromium_executable,
|
||||
_prefer_installed_chromium,
|
||||
capture_fullscreen_screenshot,
|
||||
find_chromium_executable,
|
||||
)
|
||||
|
||||
|
||||
def test_installed_paths_exclude_google():
|
||||
installed = _installed_chromium_paths()
|
||||
chrome_fb = _google_chrome_fallback_paths()
|
||||
assert not any("Google" in p for p in installed)
|
||||
assert any("Google" in p for p in chrome_fb)
|
||||
|
||||
|
||||
def test_portable_chrome_win_preferred_over_installed():
|
||||
portable = str(PROJECT_ROOT / "chrome-win" / "chrome-win" / "chrome.exe")
|
||||
installed = r"C:\Program Files\Chromium\Application\chrome.exe"
|
||||
|
||||
def fake_isfile(path: str) -> bool:
|
||||
return path in {portable, installed}
|
||||
|
||||
env = {"USERPROFILE": r"C:\Users\test", "LOCALAPPDATA": r"C:\Users\test\AppData\Local"}
|
||||
with patch("chrome._portable_chromium_executable", return_value=portable):
|
||||
with patch("chrome.os.path.isfile", side_effect=fake_isfile):
|
||||
with patch.dict("os.environ", env, clear=True):
|
||||
assert find_chromium_executable() == portable
|
||||
|
||||
|
||||
def test_installed_used_when_portable_missing():
|
||||
installed = r"C:\Program Files\Chromium\Application\chrome.exe"
|
||||
|
||||
def fake_isfile(path: str) -> bool:
|
||||
return path == installed
|
||||
|
||||
env = {"USERPROFILE": r"C:\Users\test", "LOCALAPPDATA": r"C:\Users\test\AppData\Local"}
|
||||
with patch("chrome._portable_chromium_executable", return_value=None):
|
||||
with patch("chrome.os.path.isfile", side_effect=fake_isfile):
|
||||
with patch.dict("os.environ", env, clear=True):
|
||||
assert find_chromium_executable() == installed
|
||||
|
||||
|
||||
def test_misf_use_installed_chrome_skips_portable():
|
||||
portable = str(PROJECT_ROOT / "chrome-win" / "chrome-win" / "chrome.exe")
|
||||
installed = r"C:\Program Files\Chromium\Application\chrome.exe"
|
||||
|
||||
def fake_isfile(path: str) -> bool:
|
||||
return path in {portable, installed}
|
||||
|
||||
env = {
|
||||
"MISF_USE_INSTALLED_CHROME": "1",
|
||||
"USERPROFILE": r"C:\Users\test",
|
||||
"LOCALAPPDATA": r"C:\Users\test\AppData\Local",
|
||||
}
|
||||
with patch("chrome._portable_chromium_executable", return_value=portable):
|
||||
with patch("chrome.os.path.isfile", side_effect=fake_isfile):
|
||||
with patch.dict("os.environ", env, clear=True):
|
||||
assert find_chromium_executable() == installed
|
||||
|
||||
|
||||
def test_find_chromium_can_use_google_with_allow_flag():
|
||||
google_path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
|
||||
|
||||
env = {
|
||||
"MISF_ALLOW_CHROME": "1",
|
||||
"USERPROFILE": r"C:\Users\test",
|
||||
"LOCALAPPDATA": r"C:\Users\test\AppData\Local",
|
||||
}
|
||||
with patch("chrome._portable_chromium_executable", return_value=None):
|
||||
with patch("chrome.os.path.isfile", side_effect=lambda p: p == google_path):
|
||||
with patch.dict("os.environ", env, clear=True):
|
||||
assert find_chromium_executable() == google_path
|
||||
|
||||
|
||||
def test_bundled_chromedriver_next_to_portable_chrome():
|
||||
browser = PROJECT_ROOT / "chrome-win" / "chrome-win" / "chrome.exe"
|
||||
if not browser.is_file():
|
||||
return
|
||||
driver = _bundled_chromedriver_for(str(browser))
|
||||
assert driver is not None
|
||||
assert driver.endswith("chromedriver.exe")
|
||||
|
||||
|
||||
def test_portable_chromium_executable_on_disk():
|
||||
exe = _portable_chromium_executable()
|
||||
expected = PROJECT_ROOT / "chrome-win" / "chrome-win" / "chrome.exe"
|
||||
if expected.is_file():
|
||||
assert exe == str(expected)
|
||||
|
||||
|
||||
def test_foreground_default_background_opt_in():
|
||||
with patch.dict("os.environ", {}, clear=True):
|
||||
assert _browser_runs_in_background() is False
|
||||
with patch.dict("os.environ", {"MISF_BROWSER_BACKGROUND": "1"}, clear=True):
|
||||
assert _browser_runs_in_background() is True
|
||||
|
||||
|
||||
def test_allow_chrome_flag():
|
||||
with patch.dict("os.environ", {}, clear=True):
|
||||
assert _allow_google_chrome_fallback() is False
|
||||
with patch.dict("os.environ", {"MISF_ALLOW_CHROME": "yes"}, clear=True):
|
||||
assert _allow_google_chrome_fallback() is True
|
||||
|
||||
|
||||
def test_prefer_installed_flag():
|
||||
with patch.dict("os.environ", {}, clear=True):
|
||||
assert _prefer_installed_chromium() is False
|
||||
with patch.dict("os.environ", {"MISF_USE_INSTALLED_CHROME": "1"}, clear=True):
|
||||
assert _prefer_installed_chromium() is True
|
||||
|
||||
|
||||
def test_fullscreen_screenshot_maximizes_and_uses_desktop_when_not_black(tmp_path):
|
||||
driver = MagicMock()
|
||||
shot = tmp_path / "shot.png"
|
||||
shot.write_bytes(b"\xff" * 100)
|
||||
|
||||
with patch.dict("os.environ", {}, clear=True):
|
||||
with patch("chrome.capture_desktop_screenshot", return_value=True) as cap:
|
||||
with patch("chrome._is_image_mostly_black", return_value=False):
|
||||
assert capture_fullscreen_screenshot(driver, shot) is True
|
||||
cap.assert_called_once_with(shot)
|
||||
driver.maximize_window.assert_called()
|
||||
|
||||
|
||||
def test_fullscreen_screenshot_falls_back_when_desktop_is_black(tmp_path):
|
||||
driver = MagicMock()
|
||||
shot = tmp_path / "shot.png"
|
||||
shot.write_bytes(b"\x00" * 100)
|
||||
|
||||
with patch.dict("os.environ", {}, clear=True):
|
||||
with patch("chrome.capture_desktop_screenshot", return_value=True):
|
||||
with patch("chrome._is_image_mostly_black", return_value=True):
|
||||
with patch("chrome._capture_browser_with_timestamp_bar", return_value=True) as fb:
|
||||
assert capture_fullscreen_screenshot(driver, shot) is True
|
||||
fb.assert_called_once()
|
||||
Reference in new issue
Block a user