diff options
| author | Arun Isaac | 2025-11-27 16:00:01 +0000 |
|---|---|---|
| committer | Arun Isaac | 2025-11-27 16:09:17 +0000 |
| commit | ced597ee47dc03c9c44c883e5670090ec3bfb0ab (patch) | |
| tree | b86e8fb5f11b9a0d944135c086356a66adf73dcc | |
| parent | 52dbe56b11914c27b2f2c8d155c00061b48e0f1e (diff) | |
| download | ravanan-ced597ee47dc03c9c44c883e5670090ec3bfb0ab.tar.gz ravanan-ced597ee47dc03c9c44c883e5670090ec3bfb0ab.tar.lz ravanan-ced597ee47dc03c9c44c883e5670090ec3bfb0ab.zip | |
reader: Resolve type ambiguities in default inputs.
| -rw-r--r-- | ravanan/reader.scm | 6 | ||||
| -rw-r--r-- | test-data/empty.yaml | 1 | ||||
| -rw-r--r-- | test-data/workflow-with-default-inputs.cwl | 23 | ||||
| -rw-r--r-- | tests/reader.scm | 19 |
4 files changed, 46 insertions, 3 deletions
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") |
