Merge pull request #22188 from guerler/fix_22186

[26.0] Throw ParameterValueError instead of generic error
This commit is contained in:
Marius van den Beek
2026-03-23 15:41:31 +01:00
committed by GitHub
2 changed files with 17 additions and 4 deletions
+4 -4
View File
@@ -512,12 +512,12 @@ class IntegerToolParameter(TextToolParameter):
def to_python(self, value, app):
try:
return int(value)
except (TypeError, ValueError) as err:
except (TypeError, ValueError):
if contains_workflow_parameter(value):
return value
if not value and self.optional:
return None
raise err
raise ParameterValueError("an integer is required", self.name, value)
def get_initial_value(self, trans, other_values):
if self.value is not None and self.value != "":
@@ -585,12 +585,12 @@ class FloatToolParameter(TextToolParameter):
def to_python(self, value, app):
try:
return float(value)
except (TypeError, ValueError) as err:
except (TypeError, ValueError):
if contains_workflow_parameter(value):
return value
if not value and self.optional:
return None
raise err
raise ParameterValueError("a float is required", self.name, value)
def get_initial_value(self, trans, other_values):
if self.value is None:
@@ -5,6 +5,7 @@ from galaxy.model import (
History,
HistoryDatasetAssociation,
)
from galaxy.tools.parameters.basic import ParameterValueError
from galaxy.util import galaxy_directory
from .util import BaseParameterTestCase
@@ -415,3 +416,15 @@ class TestParameterValidation(BaseParameterTestCase):
p.validate("select id from job where id = 1;")
with self.assertRaises(ValueError):
p.validate("not sql")
def test_integer_to_python_raises_parameter_value_error(self):
p = self._parameter_for(xml='<param name="num" type="integer" value="10" />')
assert p.to_python(42, self.app) == 42
with self.assertRaises(ParameterValueError):
p.to_python(None, self.app)
def test_float_to_python_raises_parameter_value_error(self):
p = self._parameter_for(xml='<param name="num" type="float" value="1.0" />')
assert p.to_python(3.14, self.app) == 3.14
with self.assertRaises(ParameterValueError):
p.to_python(None, self.app)