Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
record
workbench4record
Commits
02c17715
Unverified
Commit
02c17715
authored
Sep 20, 2018
by
Dannon
Committed by
GitHub
Sep 20, 2018
Browse files
Merge pull request #6740 from mvdbeek/backport_tool_version_select_fixes
[18.05] Backport tool version select fixes
parents
d014469f
3017568e
Changes
4
Hide whitespace changes
Inline
Side-by-side
lib/galaxy/tools/toolbox/base.py
View file @
02c17715
...
...
@@ -446,6 +446,9 @@ class AbstractToolBox(Dictifiable, ManagesIntegratedToolPanelMixin):
for
tool
in
self
.
_tools_by_id
.
values
():
if
tool
.
old_id
==
tool_id
:
rval
.
append
(
tool
)
# if we don't have a lineage_map for this tool we need to sort by version,
# so that the last tool in rval is the newest tool.
rval
.
sort
(
key
=
lambda
t
:
t
.
version
)
if
rval
:
if
get_all_versions
:
return
rval
...
...
@@ -455,8 +458,8 @@ class AbstractToolBox(Dictifiable, ManagesIntegratedToolPanelMixin):
for
tool
in
rval
:
if
tool
.
version
==
tool_version
:
return
tool
# No tool matches by version, simply return the
first available tool found
return
rval
[
0
]
# No tool matches by version, simply return the
newest matching tool
return
rval
[
-
1
]
# We now likely have a Toolshed guid passed in, but no supporting database entries
# If the tool exists by exact id and is loaded then provide exact match within a list
if
tool_id
in
self
.
_tools_by_id
:
...
...
lib/galaxy/webapps/galaxy/api/tools.py
View file @
02c17715
...
...
@@ -92,10 +92,12 @@ class ToolsController(BaseAPIController, UsesVisualizationMixin):
io_details - if true, parameters and inputs are returned
link_details - if true, hyperlink to the tool is returned
tool_version - if provided return this tool version
"""
io_details
=
util
.
string_as_bool
(
kwd
.
get
(
'io_details'
,
False
))
link_details
=
util
.
string_as_bool
(
kwd
.
get
(
'link_details'
,
False
))
tool
=
self
.
_get_tool
(
id
,
user
=
trans
.
user
)
tool_version
=
kwd
.
get
(
'tool_version'
)
tool
=
self
.
_get_tool
(
id
,
user
=
trans
.
user
,
tool_version
=
tool_version
)
return
tool
.
to_dict
(
trans
,
io_details
=
io_details
,
link_details
=
link_details
)
@
expose_api_anonymous
...
...
test/api/test_tools.py
View file @
02c17715
...
...
@@ -140,8 +140,11 @@ class ToolsTestCase(api.ApiTestCase):
assert
output_details
[
"state"
]
==
"error"
,
output_details
assert
"has not sent back a URL parameter"
in
output_details
[
"misc_info"
],
output_details
def
_show_valid_tool
(
self
,
tool_id
):
tool_show_response
=
self
.
_get
(
"tools/%s"
%
tool_id
,
data
=
dict
(
io_details
=
True
))
def
_show_valid_tool
(
self
,
tool_id
,
tool_version
=
None
):
data
=
dict
(
io_details
=
True
)
if
tool_version
:
data
[
'tool_version'
]
=
tool_version
tool_show_response
=
self
.
_get
(
"tools/%s"
%
tool_id
,
data
=
data
)
self
.
_assert_status_code_is
(
tool_show_response
,
200
)
tool_info
=
tool_show_response
.
json
()
self
.
_assert_has_keys
(
tool_info
,
"inputs"
,
"outputs"
,
"panel_section_id"
)
...
...
@@ -436,6 +439,12 @@ class ToolsTestCase(api.ApiTestCase):
output1_content
=
self
.
dataset_populator
.
get_history_dataset_content
(
history_id
,
dataset
=
output1
)
self
.
assertEqual
(
output1_content
.
strip
(),
"Version "
+
version
)
@
skip_without_tool
(
"multiple_versions"
)
def
test_show_with_wrong_tool_version_in_tool_id
(
self
):
tool_info
=
self
.
_show_valid_tool
(
"multiple_versions"
,
tool_version
=
"0.01"
)
# Return last version
assert
tool_info
[
'version'
]
==
"0.2"
@
skip_without_tool
(
"cat1"
)
def
test_run_cat1_single_meta_wrapper
(
self
):
# Wrap input in a no-op meta parameter wrapper like Sam is planning to
...
...
test/unit/tools/test_toolbox.py
View file @
02c17715
...
...
@@ -272,6 +272,21 @@ class ToolBoxTestCase(BaseToolBoxTestCase):
assert
test_tool
.
repository_owner
is
None
assert
test_tool
.
installed_changeset_revision
is
None
def
test_tool_shed_request_version
(
self
):
self
.
_init_tool
()
self
.
_setup_two_versions_in_config
(
section
=
False
)
self
.
_setup_two_versions
()
test_tool
=
self
.
toolbox
.
get_tool
(
"test_tool"
,
tool_version
=
"0.1"
)
assert
test_tool
.
version
==
'0.1'
test_tool
=
self
.
toolbox
.
get_tool
(
"test_tool"
,
tool_version
=
"0.2"
)
assert
test_tool
.
version
==
'0.2'
# there is no version 3, return newest version
test_tool
=
self
.
toolbox
.
get_tool
(
"test_tool"
,
tool_version
=
"3"
)
assert
test_tool
.
version
==
'0.2'
def
test_load_file_in_section
(
self
):
self
.
_init_tool_in_section
()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment