From 2eca43e175c97a5161b837dcce90ac420522c557 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 27 Nov 2023 14:50:28 +0100 Subject: [PATCH] Allow expression evaluation to fail, so default value can be set in expression --- .../tools/parameters/dynamic_options.py | 16 ++++++++------ test/functional/tools/select_from_url.xml | 21 ++++++++++++++++++- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/tools/parameters/dynamic_options.py b/lib/galaxy/tools/parameters/dynamic_options.py index 6f63eca658d..afa1bf588c3 100644 --- a/lib/galaxy/tools/parameters/dynamic_options.py +++ b/lib/galaxy/tools/parameters/dynamic_options.py @@ -788,16 +788,20 @@ class DynamicOptions: try: response = requests.get(url) response.raise_for_status() + data = response.json() except Exception as e: log.warning("Fetching from url '%s' failed: %s", url, str(e)) - return [] - data = response.json() + data = None if self.from_url_postprocess: - data = do_eval( - self.from_url_postprocess, - data, - ) + try: + data = do_eval( + self.from_url_postprocess, + data, + ) + except Exception as eval_error: + log.warning("Failed to evaluate postprocess_expression: %s", str(eval_error)) + data = [] # We only support the very specific ["name", "value", "selected"] format for now. return [to_triple(d) for d in data] diff --git a/test/functional/tools/select_from_url.xml b/test/functional/tools/select_from_url.xml index 30567392419..260b239dc90 100644 --- a/test/functional/tools/select_from_url.xml +++ b/test/functional/tools/select_from_url.xml @@ -1,7 +1,8 @@ '$param_value' && -echo '$url_param_value_postprocessed' > '$param_value_postprocessed' +echo '$url_param_value_postprocessed' > '$param_value_postprocessed' && +echo '$invalid_url_param_value_postprocessed' > '$invalid_param_value_postprocessed' ]]> @@ -21,15 +22,28 @@ echo '$url_param_value_postprocessed' > '$param_value_postprocessed' ]]> + + + [v.chrom, v.len]) + } else { + return [["The fallback value", "default"]] + } + }]]> + + + + @@ -40,6 +54,11 @@ echo '$url_param_value_postprocessed' > '$param_value_postprocessed' + + + + +