From 982471744cd6a20d43bdad3b64f3d47df7d470ba Mon Sep 17 00:00:00 2001 From: Bjoern Gruening Date: Sun, 22 Mar 2026 13:49:12 +0100 Subject: [PATCH 01/39] hide hidden tools in the tool form for real --- lib/galaxy/tools/__init__.py | 14 ++++++++++--- lib/galaxy_test/api/test_tools.py | 21 +++++++++++++++++++ .../tools/multiple_versions_hidden_v01.xml | 11 ++++++++++ .../tools/multiple_versions_hidden_v02.xml | 11 ++++++++++ test/functional/tools/sample_tool_conf.xml | 4 ++++ 5 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 test/functional/tools/multiple_versions_hidden_v01.xml create mode 100644 test/functional/tools/multiple_versions_hidden_v02.xml diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index 2ac7704c9e8..a7f132bf86c 100644 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -709,8 +709,12 @@ class ToolBox(AbstractToolBox): if tools: tool = self.get_tool(tool_id, tool_version=tool_version, get_all_versions=False) assert tool - if len(tools) > 1: - tool_version_select_field = self.__build_tool_version_select_field(tools, tool.id, set_selected) + visible_tools = [candidate for candidate in tools if not candidate.hidden] + if len(visible_tools) > 1: + tool_version_select_field = self.__build_tool_version_select_field( + visible_tools, tool.id, set_selected + ) + tools = visible_tools break return tool_version_select_field, tools, tool @@ -1166,6 +1170,10 @@ class Tool(UsesDictVisibleKeys, ToolParameterBundle): else: return [] + @property + def visible_tool_versions(self): + return [tool.version for tool in self.tool_versions if not tool.hidden] + @property def is_latest_version(self): tool_versions = self.tool_versions @@ -3119,7 +3127,7 @@ class Tool(UsesDictVisibleKeys, ToolParameterBundle): "sharable_url": self.sharable_url, "message": tool_message, "warnings": tool_warnings, - "versions": self.tool_versions, + "versions": self.visible_tool_versions, "requirements": [{"name": r.name, "version": r.version} for r in self.requirements], "credentials": [credential.to_dict() for credential in self.credentials] if self.credentials else [], "errors": state_errors, diff --git a/lib/galaxy_test/api/test_tools.py b/lib/galaxy_test/api/test_tools.py index 1fb69a73d29..cd2233c76d1 100644 --- a/lib/galaxy_test/api/test_tools.py +++ b/lib/galaxy_test/api/test_tools.py @@ -1653,6 +1653,27 @@ class TestToolsApi(ApiTestCase, TestsTools): # Return last version assert tool_info["version"] == "0.2" + @skip_without_tool("multiple_versions_hidden") + def test_show_filters_hidden_versions(self): + tool_info = self._show_valid_tool("multiple_versions_hidden", tool_version="0.1") + assert tool_info["version"] == "0.1" + assert tool_info["versions"] == ["0.2"] + + @skip_without_tool("multiple_versions_hidden") + def test_run_hidden_version(self): + with self.dataset_populator.test_history_for(self.test_run_hidden_version) as history_id: + outputs = self._run( + tool_id="multiple_versions_hidden", + history_id=history_id, + tool_version="0.1", + assert_ok=True, + wait_for_job=True, + ) + assert len(outputs["outputs"]) == 1 + output = outputs["outputs"][0] + output_content = self.dataset_populator.get_history_dataset_content(history_id, dataset=output) + assert output_content.strip() == "Hidden Version 0.1" + @skip_without_tool("cat1") def test_run_cat1_single_meta_wrapper(self): with self.dataset_populator.test_history_for(self.test_run_cat1_single_meta_wrapper) as history_id: diff --git a/test/functional/tools/multiple_versions_hidden_v01.xml b/test/functional/tools/multiple_versions_hidden_v01.xml new file mode 100644 index 00000000000..57ffb32317f --- /dev/null +++ b/test/functional/tools/multiple_versions_hidden_v01.xml @@ -0,0 +1,11 @@ + + '$out_file1' + ]]> + + + + + + + diff --git a/test/functional/tools/multiple_versions_hidden_v02.xml b/test/functional/tools/multiple_versions_hidden_v02.xml new file mode 100644 index 00000000000..3e2d9620642 --- /dev/null +++ b/test/functional/tools/multiple_versions_hidden_v02.xml @@ -0,0 +1,11 @@ + + '$out_file1' + ]]> + + + + + + + diff --git a/test/functional/tools/sample_tool_conf.xml b/test/functional/tools/sample_tool_conf.xml index 25b4662df57..51b80ff54ca 100644 --- a/test/functional/tools/sample_tool_conf.xml +++ b/test/functional/tools/sample_tool_conf.xml @@ -247,10 +247,14 @@ +