62 lines
1.7 KiB
Python
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"
|