about summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2025-11-27 18:34:53 +0000
committerArun Isaac2025-11-27 18:34:53 +0000
commitbadcc3df8488c95359d30f907c8da043fcc0c455 (patch)
treeda001f85b59bf6752b5e2fe033be25432802dde4
parentd75e207bb14eb5460a139c3383ba4249d689b679 (diff)
downloadccwl-badcc3df8488c95359d30f907c8da043fcc0c455.tar.gz
ccwl-badcc3df8488c95359d30f907c8da043fcc0c455.tar.lz
ccwl-badcc3df8488c95359d30f907c8da043fcc0c455.zip
cwl: Serialize #f default values. HEAD main
-rw-r--r--ccwl/cwl.scm9
-rw-r--r--tests/cwl.scm16
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 <arunisaac@systemreboot.net>
+;;; Copyright © 2021, 2023–2025 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of ccwl.
 ;;;
@@ -136,10 +136,13 @@ CWL YAML specification."
   "Render @var{input}, a @code{<input>} 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 <arunisaac@systemreboot.net>
+;;; Copyright © 2023, 2025 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; 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")