about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--e2e-tests/jobs/empty.yaml1
-rw-r--r--e2e-tests/tests.yaml54
-rw-r--r--e2e-tests/tools/command-line-tool-step-with-default-input.scm8
-rw-r--r--e2e-tests/tools/command-line-tool-step-with-optional-and-required-inputs.scm8
-rw-r--r--e2e-tests/tools/command-line-tool-with-default-input.scm4
-rw-r--r--e2e-tests/tools/workflow-step-with-default-input.scm12
-rw-r--r--e2e-tests/tools/workflow-step-with-optional-and-required-inputs.scm14
-rw-r--r--e2e-tests/tools/workflow-with-default-input.scm8
-rw-r--r--ravanan/workflow.scm44
9 files changed, 131 insertions, 22 deletions
diff --git a/e2e-tests/jobs/empty.yaml b/e2e-tests/jobs/empty.yaml
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/e2e-tests/jobs/empty.yaml
@@ -0,0 +1 @@
+{}
diff --git a/e2e-tests/tests.yaml b/e2e-tests/tests.yaml
index 9ac03d1..b47856d 100644
--- a/e2e-tests/tests.yaml
+++ b/e2e-tests/tests.yaml
@@ -142,3 +142,57 @@
       class: File
       size: 76
       checksum: sha1$a43e1394643339f6a203147ccbf82cc3be1777e0
+- id: command-line-tool-with-default-input
+  doc: CommandLineTool with default input
+  tool: tools/command-line-tool-with-default-input.cwl
+  job: jobs/empty.yaml
+  output:
+    output_message:
+      class: File
+      size: 13
+      checksum: sha1$47a013e660d408619d894b20806b1d5086aab03b
+- id: command-line-tool-step-with-default-input
+  doc: CommandLineTool step with default input
+  tool: tools/command-line-tool-step-with-default-input.cwl
+  job: jobs/empty.yaml
+  output:
+    output_message:
+      class: File
+      size: 13
+      checksum: sha1$47a013e660d408619d894b20806b1d5086aab03b
+- id: command-line-tool-step-with-optional-and-required-inputs
+  doc: CommandLineTool step with optional and required inputs
+  tool: tools/command-line-tool-step-with-optional-and-required-inputs.cwl
+  job: jobs/hello-world.yaml
+  output:
+    output_message:
+      class: File
+      size: 26
+      checksum: sha1$2544f363c82bf304dc363829620ecf213e1a2c1e
+- id: workflow-with-default-input
+  doc: Workflow with default input
+  tool: tools/workflow-with-default-input.cwl
+  job: jobs/empty.yaml
+  output:
+    output_message:
+      class: File
+      size: 13
+      checksum: sha1$47a013e660d408619d894b20806b1d5086aab03b
+- id: workflow-step-with-default-input
+  doc: Workflow step with default input
+  tool: tools/workflow-step-with-default-input.cwl
+  job: jobs/empty.yaml
+  output:
+    output_message:
+      class: File
+      size: 13
+      checksum: sha1$47a013e660d408619d894b20806b1d5086aab03b
+- id: workflow-step-with-optional-and-required-inputs
+  doc: Workflow step with optional and required inputs
+  tool: tools/workflow-step-with-optional-and-required-inputs.cwl
+  job: jobs/hello-world.yaml
+  output:
+    output_message:
+      class: File
+      size: 26
+      checksum: sha1$2544f363c82bf304dc363829620ecf213e1a2c1e
diff --git a/e2e-tests/tools/command-line-tool-step-with-default-input.scm b/e2e-tests/tools/command-line-tool-step-with-default-input.scm
new file mode 100644
index 0000000..cb9ab44
--- /dev/null
+++ b/e2e-tests/tools/command-line-tool-step-with-default-input.scm
@@ -0,0 +1,8 @@
+(define echo
+  (command #:inputs (message #:type string
+                             #:default "Hello world!")
+           #:run "echo" message
+           #:outputs (output_message #:type stdout)))
+
+(workflow ()
+  (echo))
diff --git a/e2e-tests/tools/command-line-tool-step-with-optional-and-required-inputs.scm b/e2e-tests/tools/command-line-tool-step-with-optional-and-required-inputs.scm
new file mode 100644
index 0000000..e6d0478
--- /dev/null
+++ b/e2e-tests/tools/command-line-tool-step-with-optional-and-required-inputs.scm
@@ -0,0 +1,8 @@
+(define echo
+  (command #:inputs (message1 #:type string) (message2 #:type string
+                                                       #:default "Hello world!")
+           #:run "echo" message1 message2
+           #:outputs (output_message #:type stdout)))
+
+(workflow ((message #:type string))
+  (echo #:message1 message))
diff --git a/e2e-tests/tools/command-line-tool-with-default-input.scm b/e2e-tests/tools/command-line-tool-with-default-input.scm
new file mode 100644
index 0000000..82801a4
--- /dev/null
+++ b/e2e-tests/tools/command-line-tool-with-default-input.scm
@@ -0,0 +1,4 @@
+(command #:inputs (message #:type string
+                           #:default "Hello world!")
+         #:run "echo" message
+         #:outputs (output_message #:type stdout))
diff --git a/e2e-tests/tools/workflow-step-with-default-input.scm b/e2e-tests/tools/workflow-step-with-default-input.scm
new file mode 100644
index 0000000..9a3f981
--- /dev/null
+++ b/e2e-tests/tools/workflow-step-with-default-input.scm
@@ -0,0 +1,12 @@
+(define echo
+  (command #:inputs (message #:type string)
+           #:run "echo" message
+           #:outputs (output_message #:type stdout)))
+
+(define echo-workflow
+  (workflow ((message #:type string
+                      #:default "Hello world!"))
+    (echo #:message message)))
+
+(workflow ()
+  (echo-workflow))
diff --git a/e2e-tests/tools/workflow-step-with-optional-and-required-inputs.scm b/e2e-tests/tools/workflow-step-with-optional-and-required-inputs.scm
new file mode 100644
index 0000000..aa71940
--- /dev/null
+++ b/e2e-tests/tools/workflow-step-with-optional-and-required-inputs.scm
@@ -0,0 +1,14 @@
+(define echo
+  (command #:inputs (message1 #:type string) (message2 #:type string)
+           #:run "echo" message1 message2
+           #:outputs (output_message #:type stdout)))
+
+(define echo-workflow
+  (workflow ((message1 #:type string)
+             (message2 #:type string
+                       #:default "Hello world!"))
+    (echo #:message1 message1
+          #:message2 message2)))
+
+(workflow ((message #:type string))
+  (echo-workflow #:message1 message))
diff --git a/e2e-tests/tools/workflow-with-default-input.scm b/e2e-tests/tools/workflow-with-default-input.scm
new file mode 100644
index 0000000..7f1a671
--- /dev/null
+++ b/e2e-tests/tools/workflow-with-default-input.scm
@@ -0,0 +1,8 @@
+(define echo
+  (command #:inputs (message #:type string)
+           #:run "echo" message
+           #:outputs (output_message #:type stdout)))
+
+(workflow ((message #:type string
+                    #:default "Hello world!"))
+  (echo #:message message))
diff --git a/ravanan/workflow.scm b/ravanan/workflow.scm
index e7dbcb5..9650f21 100644
--- a/ravanan/workflow.scm
+++ b/ravanan/workflow.scm
@@ -351,29 +351,29 @@ object."
             ((nested-cross-product flat-cross-product)
              (error scatter-method
                     "Scatter method not implemented yet")))
-          (if (propnet? script-or-propnet)
-              (state-let* ((propnet-state (schedule-propnet script-or-propnet inputs)))
-                (state-return
-                 (workflow-state propnet-state
-                                 (scheduler-proc-formal-outputs proc))))
-              (let* ((formal-inputs (scheduler-proc-formal-inputs proc))
-                     ;; We need to resolve inputs after adding defaults since
-                     ;; the default values may contain uninterned File objects.
-                     (inputs (resolve-inputs (add-defaults inputs formal-inputs)
-                                             formal-inputs
-                                             store))
-                     (resource-requirement
-                      (scheduler-proc-resource-requirement proc)))
-                (state-let* ((job-state
-                              (run-command-line-tool name
-                                                     script-or-propnet
-                                                     inputs
-                                                     resource-requirement
-                                                     store
-                                                     batch-system)))
+          (let* ((formal-inputs (scheduler-proc-formal-inputs proc))
+                 ;; We need to resolve inputs after adding defaults since the
+                 ;; default values may contain uninterned File objects.
+                 (inputs (resolve-inputs (add-defaults inputs formal-inputs)
+                                         formal-inputs
+                                         store)))
+            (if (propnet? script-or-propnet)
+                (state-let* ((propnet-state (schedule-propnet script-or-propnet inputs)))
                   (state-return
-                   (command-line-tool-state job-state
-                                            (scheduler-proc-formal-outputs proc)))))))))
+                   (workflow-state propnet-state
+                                   (scheduler-proc-formal-outputs proc))))
+                (let ((resource-requirement
+                       (scheduler-proc-resource-requirement proc)))
+                  (state-let* ((job-state
+                                (run-command-line-tool name
+                                                       script-or-propnet
+                                                       inputs
+                                                       resource-requirement
+                                                       store
+                                                       batch-system)))
+                    (state-return
+                     (command-line-tool-state job-state
+                                              (scheduler-proc-formal-outputs proc))))))))))
 
   (define (poll state)
     "Return updated state and current status of job @var{state} object as a