From 9d1cccd14d409f1464abe345ce8601c08c6a092a Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 20 Dec 2019 12:17:46 +0100 Subject: [PATCH] Cast to None for optional params if not comparing strings Proposed by @nsroanzo in https://github.com/galaxyproject/galaxy/pull/9149#discussion_r360225247 --- lib/galaxy/tools/wrappers.py | 7 +++++-- test/unit/tools/test_wrappers.py | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/tools/wrappers.py b/lib/galaxy/tools/wrappers.py index 89776480080..c49702fe307 100644 --- a/lib/galaxy/tools/wrappers.py +++ b/lib/galaxy/tools/wrappers.py @@ -83,8 +83,11 @@ class InputValueWrapper(ToolParameterValueWrapper): if self.input.type == 'boolean' and isinstance(other, string_types): return str(self) # For backward compatibility, allow `$wrapper != ""` for optional non-text param - if self.input.optional and self.value is None and self.input.type != 'boolean': - return str(self) + if self.input.optional and self.value is None: + if isinstance(other, string_types): + return str(self) + else: + return None cast = { 'text': str, 'integer': int, diff --git a/test/unit/tools/test_wrappers.py b/test/unit/tools/test_wrappers.py index b1567be682c..5acea546dbd 100644 --- a/test/unit/tools/test_wrappers.py +++ b/test/unit/tools/test_wrappers.py @@ -161,6 +161,7 @@ def test_input_value_wrapper_comparison_optional(tool): wrapper = valuewrapper(tool, None, 'integer', optional=True) assert wrapper != 1 assert str(wrapper) == "" + assert wrapper == None # noqa: E711 wrapper = valuewrapper(tool, None, "boolean") assert bool(wrapper) is False, wrapper assert str(wrapper) == 'falsevalue'