46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import types
|
|
import importlib
|
|
|
|
def test_main_calls_logging_and_mainloop(monkeypatch):
|
|
# Prepare dummy MainView with attributes and a no-op mainloop
|
|
calls = {}
|
|
|
|
class DummyApp:
|
|
def __init__(self):
|
|
self.log_text_widget = object()
|
|
|
|
def mainloop(self):
|
|
calls['mainloop'] = True
|
|
|
|
def after(self, ms, func, *args):
|
|
# Immediately call the function for tests and return a fake id
|
|
try:
|
|
func(*args)
|
|
except Exception:
|
|
pass
|
|
return f"after-{ms}"
|
|
|
|
# Monkeypatch MainView used by __main__ (comes from gui.main_view.MainView)
|
|
monkeypatch.setattr('target_simulator.gui.main_view.MainView', DummyApp)
|
|
|
|
def fake_setup(app, cfg):
|
|
calls['setup_basic_logging'] = True
|
|
|
|
def fake_add_tkhandler(widget, cfg):
|
|
calls['add_tkinter_handler'] = True
|
|
|
|
# Reload module to ensure imports are fresh
|
|
mod = importlib.import_module('target_simulator.__main__')
|
|
importlib.reload(mod)
|
|
|
|
# Assign our fakes onto the reloaded module so main() will use them
|
|
mod.setup_basic_logging = fake_setup
|
|
mod.add_tkinter_handler = fake_add_tkhandler
|
|
|
|
# Call main (should not block due to DummyApp.mainloop)
|
|
mod.main()
|
|
|
|
assert calls.get('setup_basic_logging')
|
|
assert calls.get('add_tkinter_handler')
|
|
assert calls.get('mainloop')
|