about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--e2e-tests/jobs/boolean-false-input-value.yaml2
-rw-r--r--e2e-tests/tests.yaml18
-rw-r--r--e2e-tests/tools/boolean-false-default-value.scm3
-rw-r--r--e2e-tests/tools/boolean-false-input-value.scm3
-rw-r--r--ravanan/workflow.scm9
5 files changed, 32 insertions, 3 deletions
diff --git a/e2e-tests/jobs/boolean-false-input-value.yaml b/e2e-tests/jobs/boolean-false-input-value.yaml
new file mode 100644
index 0000000..0729f40
--- /dev/null
+++ b/e2e-tests/jobs/boolean-false-input-value.yaml
@@ -0,0 +1,2 @@
+message: Hello world!
+no-newline?: false
diff --git a/e2e-tests/tests.yaml b/e2e-tests/tests.yaml
index b47856d..b7ab40c 100644
--- a/e2e-tests/tests.yaml
+++ b/e2e-tests/tests.yaml
@@ -196,3 +196,21 @@
       class: File
       size: 26
       checksum: sha1$2544f363c82bf304dc363829620ecf213e1a2c1e
+- id: boolean-false-default-value
+  doc: Workflow with a boolean false default value
+  tool: tools/boolean-false-default-value.cwl
+  job: jobs/hello-world.yaml
+  output:
+    output_message:
+      class: File
+      size: 13
+      checksum: sha1$47a013e660d408619d894b20806b1d5086aab03b
+- id: boolean-false-input-value
+  doc: Boolean false input value
+  tool: tools/boolean-false-input-value.cwl
+  job: jobs/boolean-false-input-value.yaml
+  output:
+    output_message:
+      class: File
+      size: 13
+      checksum: sha1$47a013e660d408619d894b20806b1d5086aab03b
diff --git a/e2e-tests/tools/boolean-false-default-value.scm b/e2e-tests/tools/boolean-false-default-value.scm
new file mode 100644
index 0000000..58b460a
--- /dev/null
+++ b/e2e-tests/tools/boolean-false-default-value.scm
@@ -0,0 +1,3 @@
+(command #:inputs (message #:type string) (no-newline? #:type boolean #:default #f)
+         #:run "echo" ("-n" no-newline?) message
+         #:outputs (output_message #:type stdout))
diff --git a/e2e-tests/tools/boolean-false-input-value.scm b/e2e-tests/tools/boolean-false-input-value.scm
new file mode 100644
index 0000000..08db60d
--- /dev/null
+++ b/e2e-tests/tools/boolean-false-input-value.scm
@@ -0,0 +1,3 @@
+(command #:inputs (message #:type string) (no-newline? #:type boolean)
+         #:run "echo" ("-n" no-newline?) message
+         #:outputs (output_message #:type stdout))
diff --git a/ravanan/workflow.scm b/ravanan/workflow.scm
index 8be61ae..2fd00d6 100644
--- a/ravanan/workflow.scm
+++ b/ravanan/workflow.scm
@@ -549,9 +549,12 @@ error out."
                          ;; - the input value
                          ;; - the default value
                          ;; - the null value (for optional inputs)
-                         (value (or (assoc-ref inputs id)
-                                    (assoc-ref formal-input "default")
-                                    'null))
+                         (value (cond
+                                 ;; We can't use assoc-ref because #f is also a
+                                 ;; valid value.
+                                 ((assoc id inputs) => cdr)
+                                 ((assoc "default" formal-input) => cdr)
+                                 (else 'null)))
                          (expected-type (formal-parameter-type
                                          (assoc-ref* formal-input "type"))))
                     (unless (match-type value expected-type)