From ced597ee47dc03c9c44c883e5670090ec3bfb0ab Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Thu, 27 Nov 2025 16:00:01 +0000 Subject: reader: Resolve type ambiguities in default inputs. --- ravanan/reader.scm | 6 ++++-- test-data/empty.yaml | 1 + test-data/workflow-with-default-inputs.cwl | 23 +++++++++++++++++++++++ tests/reader.scm | 19 ++++++++++++++++++- 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 test-data/empty.yaml create mode 100644 test-data/workflow-with-default-inputs.cwl diff --git a/ravanan/reader.scm b/ravanan/reader.scm index e7b0598..bb825ed 100644 --- a/ravanan/reader.scm +++ b/ravanan/reader.scm @@ -160,8 +160,10 @@ the @code{required} field when it is not specified." "Normalize formal @var{input}." (maybe-assoc-set input (cons "default" - (maybe-bind (maybe-assoc-ref (just input) "default") - (compose just normalize-input))) + (maybe-let* ((default (maybe-assoc-ref (just input) "default"))) + (just (normalize-input + (coerce-type default + (formal-parameter-type (assoc-ref input "type"))))))) (cons "secondaryFiles" (maybe-bind (maybe-assoc-ref (just input) "secondaryFiles") (compose just diff --git a/test-data/empty.yaml b/test-data/empty.yaml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/test-data/empty.yaml @@ -0,0 +1 @@ +{} diff --git a/test-data/workflow-with-default-inputs.cwl b/test-data/workflow-with-default-inputs.cwl new file mode 100644 index 0000000..abc8817 --- /dev/null +++ b/test-data/workflow-with-default-inputs.cwl @@ -0,0 +1,23 @@ +class: Workflow +inputs: + number: + type: int + default: 13 + flag: + type: boolean + default: true + reverseflag: + type: boolean + default: false + foo: + type: string + default: bar + arr: + type: + type: array + items: int + default: + - 1 + - 2 + - 3 +outputs: [] diff --git a/tests/reader.scm b/tests/reader.scm index 77d6034..8a2d0bc 100644 --- a/tests/reader.scm +++ b/tests/reader.scm @@ -24,7 +24,8 @@ (ravanan reader) (ravanan work command-line-tool) (ravanan work types) - (ravanan work utils)) + (ravanan work utils) + (ravanan work vectors)) (define normalize-formal-input (@@ (ravanan reader) normalize-formal-input)) @@ -231,4 +232,20 @@ (lambda (workflow inputs) inputs))) +(test-equal "Resolve type ambiguities in workflow default inputs" + '(("number" . 13) + ("flag" . #t) + ("reverseflag" . #f) + ("foo" . "bar") + ("arr" . #(1 2 3))) + (call-with-values + (cut read-workflow+inputs + "test-data/workflow-with-default-inputs.cwl" + "test-data/empty.yaml") + (lambda (workflow inputs) + (vector-map->list (lambda (input) + (cons (assoc-ref input "id") + (assoc-ref input "default"))) + (assoc-ref workflow "inputs"))))) + (test-end "reader") -- cgit 1.4.1