Code cleanup withe left overs from old plugin manager removed.

This commit is contained in:
Storm Dragon
2026-07-03 02:46:26 -04:00
parent 85d30d331a
commit b08f7095cb
14 changed files with 200 additions and 552 deletions
@@ -137,6 +137,21 @@ class PluginSystemManagerRegressionTests(unittest.TestCase):
self.assertEqual(instance.deactivation_count, 1)
self.assertEqual(plugin_info.instance, None)
@mock.patch("cthulhu.plugin_system_manager.dbus_service.get_remote_controller")
def test_obsolete_plugin_manager_active_entry_is_dropped(self, remote_controller):
remote_controller.return_value = mock.Mock()
with tempfile.TemporaryDirectory() as temp_dir:
manager = self._create_manager()
plugin_info = self._create_plugin_info(temp_dir, "OCR")
manager._plugins["OCR"] = plugin_info
manager._plugin_name_index["OCR"] = ["OCR"]
with mock.patch.object(manager, "syncAllPluginsActive"):
manager.setActivePlugins(["PluginManager", "OCR"])
self.assertEqual(manager.getActivePlugins(), ["OCR"])
if __name__ == "__main__":
unittest.main()
+39
View File
@@ -96,6 +96,45 @@ class SteamReturnActivationTests(unittest.TestCase):
class SteamVirtualizedListMutationTests(unittest.TestCase):
def test_caret_moved_ignores_transient_loading_spinner(self):
testScript = steam_script.Script.__new__(steam_script.Script)
source = object()
spinner = object()
event = mock.Mock(type="object:text-caret-moved", source=source)
testScript.utilities = mock.Mock()
testScript.utilities.inDocumentContent.return_value = True
with (
mock.patch.object(steam_script.AXObject, "get_name", side_effect=["", "Steam Spinner"]),
mock.patch.object(steam_script.AXObject, "iter_children", return_value=iter([spinner])),
mock.patch.object(steam_script.AXUtilities, "is_image_or_canvas", return_value=True),
mock.patch.object(steam_script.debug, "printMessage"),
mock.patch.object(steam_script.Chromium.Script, "onCaretMoved") as chromiumCaretMoved,
):
self.assertTrue(testScript.onCaretMoved(event))
chromiumCaretMoved.assert_not_called()
def test_caret_moved_defers_to_chromium_without_loading_spinner(self):
testScript = steam_script.Script.__new__(steam_script.Script)
source = object()
child = object()
event = mock.Mock(type="object:text-caret-moved", source=source)
testScript.utilities = mock.Mock()
testScript.utilities.inDocumentContent.return_value = True
with (
mock.patch.object(steam_script.AXObject, "get_name", side_effect=["", "Not A Spinner"]),
mock.patch.object(steam_script.AXObject, "iter_children", return_value=iter([child])),
mock.patch.object(steam_script.AXUtilities, "is_image_or_canvas", return_value=True),
mock.patch.object(steam_script.Chromium.Script, "onCaretMoved", return_value="handled") as chromiumCaretMoved,
):
self.assertEqual(testScript.onCaretMoved(event), "handled")
chromiumCaretMoved.assert_called_once_with(event)
def test_children_added_skips_generic_web_cache_dump_for_virtualized_list_churn(self):
testScript = steam_script.Script.__new__(steam_script.Script)
source = object()
@@ -39,7 +39,7 @@ color-calculation-max = 3
copy-to-clipboard = false
[profiles.default.plugins]
active-plugins = ["PluginManager", "OCR"]
active-plugins = ["Clipboard", "OCR"]
plugin-sources = []
"""
@@ -64,7 +64,7 @@ class LegacyTomlSchemaMigrationTests(unittest.TestCase):
settings.GENERAL_KEYBOARD_LAYOUT_DESKTOP,
)
self.assertEqual(general["cthulhuModifierKeys"], settings.DESKTOP_MODIFIER_KEYS)
self.assertEqual(general["activePlugins"], ["PluginManager", "OCR"])
self.assertEqual(general["activePlugins"], ["Clipboard", "OCR"])
self.assertEqual(general["aiProvider"], settings.AI_PROVIDER_OLLAMA)
self.assertFalse(general["aiAssistantEnabled"])
self.assertEqual(general["ocrLanguageCode"], "eng")
@@ -82,7 +82,7 @@ class LegacyTomlSchemaMigrationTests(unittest.TestCase):
savedSettings = settingsPath.read_text(encoding="utf-8")
self.assertIn('profile = ["Default", "default"]', savedSettings)
self.assertIn('activePlugins = ["PluginManager", "OCR"]', savedSettings)
self.assertIn('activePlugins = ["Clipboard", "OCR"]', savedSettings)
self.assertNotIn("format-version = 2", savedSettings)
self.assertNotIn("[profiles.default.metadata]", savedSettings)
+74
View File
@@ -34,14 +34,33 @@ class WebKeyGrabRegressionTests(unittest.TestCase):
testScript._lastMouseButtonContext = ("old", 7)
testScript._madeFindAnnouncement = True
testScript._inFocusMode = True
testScript._focusModeIsSticky = False
testScript._browseModeIsSticky = False
testScript._navSuspended = False
testScript.removeKeyGrabs = mock.Mock()
testScript.refreshKeyGrabs = mock.Mock()
testScript._setNavigationSuspended = mock.Mock()
testScript.presentMessage = mock.Mock()
testScript.utilities = mock.Mock()
testScript.utilities.isZombie.return_value = False
testScript.utilities.isDocument.return_value = False
testScript.utilities.getTopLevelDocumentForObject.return_value = None
testScript.utilities.inFindContainer.return_value = False
testScript.utilities.getCaretContext.return_value = (None, -1)
testScript.utilities.queryNonEmptyText.return_value = None
testScript.utilities.isContentEditableWithEmbeddedObjects.return_value = False
testScript.utilities.isAnchor.return_value = False
testScript.utilities.lastInputEventWasPageNav.return_value = False
testScript.utilities.isFocusedWithMathChild.return_value = False
testScript.utilities.caretMovedToSamePageFragment.return_value = False
testScript.utilities.lastInputEventWasLineNav.return_value = False
testScript.utilities.shouldInterruptForLocusOfFocusChange.return_value = False
testScript.flatReviewPresenter = mock.Mock()
testScript.flatReviewPresenter.is_active.return_value = False
testScript.updateBraille = mock.Mock()
testScript.speechGenerator = mock.Mock()
testScript.speechGenerator.generateSpeech.return_value = []
testScript._saveFocusedObjectInfo = mock.Mock()
return testScript
def test_window_deactivate_does_not_drop_key_grabs(self):
@@ -99,6 +118,44 @@ class WebKeyGrabRegressionTests(unittest.TestCase):
self.assertFalse(result)
testScript.refreshKeyGrabs.assert_called_once_with()
def test_non_document_focus_preserves_sticky_focus_mode(self):
testScript = self._make_partial_script()
testScript._focusModeIsSticky = True
oldFocus = object()
newFocus = object()
with mock.patch("cthulhu.scripts.web.script.AXObject.is_dead", return_value=False):
result = web_script.Script.locus_of_focus_changed(testScript, None, oldFocus, newFocus)
self.assertFalse(result)
self.assertTrue(testScript._inFocusMode)
def test_document_focus_restores_sticky_focus_after_suspension(self):
testScript = self._make_partial_script()
testScript._inFocusMode = False
testScript._focusModeIsSticky = True
testScript._navSuspended = True
oldFocus = object()
newFocus = object()
document = object()
testScript.utilities.getTopLevelDocumentForObject.side_effect = (
lambda obj: document if obj is newFocus else None
)
with (
mock.patch("cthulhu.scripts.web.script.AXObject.is_dead", return_value=False),
mock.patch("cthulhu.scripts.web.script.AXUtilities.is_unknown_or_redundant", return_value=False),
mock.patch("cthulhu.scripts.web.script.AXUtilities.is_heading", return_value=False),
mock.patch("cthulhu.scripts.web.script.speech.speak"),
mock.patch("cthulhu.scripts.web.script.cthulhu.emitRegionChanged"),
):
result = web_script.Script.locus_of_focus_changed(testScript, None, oldFocus, newFocus)
self.assertTrue(result)
self.assertTrue(testScript._inFocusMode)
testScript.presentMessage.assert_called_with(messages.MODE_FOCUS_IS_STICKY)
testScript.refreshKeyGrabs.assert_called_once_with()
class WebActiveWindowRegressionTests(unittest.TestCase):
def test_sanity_check_recovers_missing_script_app_from_active_window(self):
@@ -395,6 +452,23 @@ class WebDynamicContentRecoveryRegressionTests(unittest.TestCase):
setLocusOfFocus.assert_called_once_with(event, source, False)
testScript.utilities.setCaretContext.assert_called_once_with(source, 0)
def test_browse_mode_sticky_blocks_web_app_descendant_focus_claim(self):
testScript = self._make_dynamic_script()
source = object()
event = mock.Mock(detail1=1, source=source)
testScript._browseModeIsSticky = True
testScript.utilities.getDocumentForObject.return_value = "document"
testScript.utilities.isWebAppDescendant.return_value = True
with (
mock.patch.object(web_script.cthulhu_state, "locusOfFocus", object()),
mock.patch.object(web_script.cthulhu, "setLocusOfFocus") as setLocusOfFocus,
):
result = web_script.Script.onFocusedChanged(testScript, event)
self.assertTrue(result)
setLocusOfFocus.assert_not_called()
class WebContextReplicantRegressionTests(unittest.TestCase):
def test_same_object_replicant_can_recover_before_old_focus_is_dead(self):