From 7b0ef15eaea69a6c525f740ccd60214212cb14d3 Mon Sep 17 00:00:00 2001 From: gryf Date: Sat, 10 Jan 2026 18:40:49 +0100 Subject: [PATCH] Added dummy message class for systems with python without tk --- fs_uae_wrapper/nogui_message.py | 18 ++++++++++++++++++ fs_uae_wrapper/utils.py | 8 ++++++-- tests/test_message.py | 14 ++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 fs_uae_wrapper/nogui_message.py diff --git a/fs_uae_wrapper/nogui_message.py b/fs_uae_wrapper/nogui_message.py new file mode 100644 index 0000000..4c75c35 --- /dev/null +++ b/fs_uae_wrapper/nogui_message.py @@ -0,0 +1,18 @@ +""" +Display message as simple text on console +""" +import sys + + +class Message: + """Just a fake message window for systems without TK""" + + def __init__(self, msg): + self.msg = msg + self._process = None + + def show(self): + sys.stdout.write(self.msg + "\n") + + def close(self): + return None diff --git a/fs_uae_wrapper/utils.py b/fs_uae_wrapper/utils.py index bbf4b03..dedb715 100644 --- a/fs_uae_wrapper/utils.py +++ b/fs_uae_wrapper/utils.py @@ -8,7 +8,11 @@ import pathlib import shutil import subprocess -from fs_uae_wrapper import file_archive, message +from fs_uae_wrapper import file_archive +try: + from fs_uae_wrapper.message import Message +except ModuleNotFoundError: + from fs_uae_wrapper.nogui_message import Message class CmdOption(dict): @@ -64,7 +68,7 @@ def operate_archive(arch_name, operation, text, params): if archiver is None: return False - msg = message.Message(text) + msg = Message(text) if text: msg.show() diff --git a/tests/test_message.py b/tests/test_message.py index 2cf2b5e..25b2e93 100644 --- a/tests/test_message.py +++ b/tests/test_message.py @@ -2,6 +2,7 @@ import os from unittest import TestCase, mock from fs_uae_wrapper import message +from fs_uae_wrapper import nogui_message if os.environ.get('DISPLAY'): import tkinter as tk @@ -38,6 +39,19 @@ class TestMessage(TestCase): msg._process.join.assert_called_once() +class TestNOPMessage(TestCase): + + @mock.patch('sys.stdout.write') + def test_show(self, stdout_write): + msg = nogui_message.Message('display that') + msg.show() + stdout_write.assert_called_once() + + def test_close(self): + msg = nogui_message.Message('display that') + self.assertIsNone(msg.close()) + + if os.environ.get('DISPLAY'): # Tkinter needs graphic environment for the widgets class TestSpawn(TestCase):