Files
cthulhu/tests/test_script_initialization.py

62 lines
1.7 KiB
Python

"""Regression tests for script startup ordering."""
from __future__ import annotations
import pytest
from cthulhu.scripts import default
script_module = default.script
@pytest.mark.unit
def test_script_initializes_formatting_before_generators(monkeypatch):
"""Generator construction needs script.formatting during startup."""
monkeypatch.setattr(script_module.AXObject, "get_name", staticmethod(lambda _app: "test-app"))
init_order = []
formatting = {"sentinel": True}
class FormattingAwareScript(script_module.Script):
def get_formatting(self):
init_order.append("formatting")
return formatting
def get_listeners(self):
return {}
def get_utilities(self):
return object()
def _create_braille_generator(self):
init_order.append("braille")
assert self.formatting is formatting
return "braille"
def _create_sound_generator(self):
init_order.append("sound")
assert self.formatting is formatting
return "sound"
def _create_speech_generator(self):
init_order.append("speech")
assert self.formatting is formatting
return "speech"
def get_label_inference(self):
return None
def get_chat(self):
return None
def set_up_commands(self):
pass
test_script = FormattingAwareScript(object())
assert init_order == ["formatting", "braille", "sound", "speech"]
assert test_script.formatting is formatting
assert test_script.get_braille_generator() == "braille"
assert test_script.get_sound_generator() == "sound"
assert test_script.get_speech_generator() == "speech"