mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-17 02:05:22 -04:00
feat(launcher): add portable windows launcher (#976)
* feat(windows): add standalone portable executable, splash screen, and system tray * test: fix test_get_wsl_windows_user_profile_falls_back_to_users_dir on Windows * Refactor launcher: isolate desktop logic into launcher.py, clean app.py/requirements, update build scripts, and add tests * chore: clean launcher test whitespace --------- Co-authored-by: Alexandre Teixeira <alexandremagteixeira@gmail.com>
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# tests/test_launcher.py
|
||||
import sys
|
||||
import os
|
||||
from unittest import mock
|
||||
import pytest
|
||||
|
||||
from launcher import NullWriter, create_tray_image, on_open_browser, on_exit, open_browser
|
||||
|
||||
|
||||
def test_null_writer():
|
||||
writer = NullWriter()
|
||||
# writing and flushing should not raise any exceptions
|
||||
writer.write("hello")
|
||||
writer.flush()
|
||||
assert writer.isatty() is False
|
||||
|
||||
|
||||
def test_create_tray_image():
|
||||
try:
|
||||
from PIL import Image
|
||||
img = create_tray_image()
|
||||
assert isinstance(img, Image.Image)
|
||||
assert img.size == (64, 64)
|
||||
except ImportError:
|
||||
pytest.skip("Pillow/PIL not installed in test environment")
|
||||
|
||||
|
||||
def test_on_open_browser():
|
||||
with mock.patch("webbrowser.open") as mock_open:
|
||||
icon_mock = mock.Mock()
|
||||
item_mock = mock.Mock()
|
||||
url = "http://127.0.0.1:7000"
|
||||
on_open_browser(icon_mock, item_mock, url)
|
||||
mock_open.assert_called_once_with(url)
|
||||
|
||||
|
||||
def test_on_exit():
|
||||
with mock.patch("os._exit") as mock_exit:
|
||||
icon_mock = mock.Mock()
|
||||
item_mock = mock.Mock()
|
||||
on_exit(icon_mock, item_mock)
|
||||
icon_mock.stop.assert_called_once()
|
||||
mock_exit.assert_called_once_with(0)
|
||||
|
||||
|
||||
def test_open_browser():
|
||||
with mock.patch("webbrowser.open") as mock_open, \
|
||||
mock.patch("time.sleep") as mock_sleep:
|
||||
|
||||
# Test when splash_root is None
|
||||
with mock.patch("launcher.splash_root", None):
|
||||
open_browser("http://127.0.0.1:7000")
|
||||
mock_open.assert_called_once_with("http://127.0.0.1:7000")
|
||||
mock_sleep.assert_called_once_with(3.5)
|
||||
|
||||
with mock.patch("webbrowser.open") as mock_open, \
|
||||
mock.patch("time.sleep") as mock_sleep:
|
||||
# Test when splash_root is present and gets destroyed
|
||||
mock_splash = mock.Mock()
|
||||
with mock.patch("launcher.splash_root", mock_splash):
|
||||
open_browser("http://127.0.0.1:7000")
|
||||
mock_splash.after.assert_called_once()
|
||||
Reference in New Issue
Block a user