mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-21 22:06:53 +08:00
``galaxy.tools.special_tools`` already enumerates Galaxy-internal tool files loaded outside the conf walk (``load_hidden_lib_tool`` → the four ``imp_exp`` / ``data_fetch`` entries, plus ``set_metadata_tool.xml`` which the datatypes registry loads separately). The lazy refactor was missing index entries for those, so the previous step relaxed ``LazyToolBox.create_tool`` to fall through to the eager parent on miss to keep boot working. Add ``hidden_lib_tool_paths()`` in ``special_tools.py``: returns the absolute paths of every hidden-lib tool, including ``set_metadata_tool.xml``. ``SPECIAL_TOOLS`` (consumed by ``load_lib_tools``) stays unchanged so ``set_metadata_tool`` isn't double-loaded — the new ``_EXTRA_HIDDEN_LIB_TOOLS`` dict only feeds the populator-facing helper. ``galaxy.tool_source_store.discover.discover_tools`` walks those paths after the conf + bundled walks, yielding ``DiscoveredTool`` entries with ``tool_conf="<hidden-lib>"``. The populator's cold-start scan indexes them like any other tool, so the post-boot ``load_hidden_lib_tool`` calls now hit the index branch. With coverage complete, ``LazyToolBox.create_tool`` reverts to the strict raise the plan called for: a miss is now a contract failure (operator forgot to repopulate, or a new ad-hoc tool load didn't get added to ``hidden_lib_tool_paths``). The unit test asserts the raise again. 15/16 integration tests still pass; the remaining failure is the pre-existing flake ``test_run_specific_version_executes_that_version``.