From badcc3df8488c95359d30f907c8da043fcc0c455 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Thu, 27 Nov 2025 18:34:53 +0000 Subject: cwl: Serialize #f default values. --- ccwl/cwl.scm | 9 ++++++--- tests/cwl.scm | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ccwl/cwl.scm b/ccwl/cwl.scm index baef519..0f600ca 100644 --- a/ccwl/cwl.scm +++ b/ccwl/cwl.scm @@ -1,5 +1,5 @@ ;;; ccwl --- Concise Common Workflow Language -;;; Copyright © 2021, 2023–2024 Arun Isaac +;;; Copyright © 2021, 2023–2025 Arun Isaac ;;; ;;; This file is part of ccwl. ;;; @@ -136,10 +136,13 @@ CWL YAML specification." "Render @var{input}, a @code{} object, into a CWL tree." `(,(input-id input) (type . ,(type->cwl (input-type input))) + ;; The default property is special because a value of #f is + ;; meaningful and must be serialized. + ,@(if (unspecified-default? (input-default input)) + '() + `((default . ,(input-default input)))) ,@(or (filter-alist `((label . ,(input-label input)) - (default . ,(and (not (unspecified-default? (input-default input))) - (input-default input))) ;; inputBinding is only relevant to commands, not ;; workflows. But, the input position and prefix are not set ;; for worklow inputs and therefore this sub-expression has diff --git a/tests/cwl.scm b/tests/cwl.scm index ba619ab..8009a2e 100644 --- a/tests/cwl.scm +++ b/tests/cwl.scm @@ -1,5 +1,5 @@ ;;; ccwl --- Concise Common Workflow Language -;;; Copyright © 2023 Arun Isaac +;;; Copyright © 2023, 2025 Arun Isaac ;;; ;;; This file is part of ccwl. ;;; @@ -18,6 +18,12 @@ (use-modules (srfi srfi-64)) +(define make-input + (@@ (ccwl ccwl) make-input)) + +(define input->cwl-scm + (@@ (ccwl cwl) input->cwl-scm)) + (define type->cwl (@@ (ccwl cwl) type->cwl)) @@ -41,4 +47,12 @@ (items . File)))) (type->cwl (make-array-type (make-array-type 'File)))) +(test-equal "Serialize #f defaults in input values" + '("foo" + (type . boolean) + (default . #f) + (label . "foo")) + (input->cwl-scm + (make-input "foo" 'boolean "foo" #f #f #f #f '()))) + (test-end "cwl") -- cgit 1.4.1