diff options
| -rw-r--r-- | e2e-tests/jobs/empty.yaml | 1 | ||||
| -rw-r--r-- | e2e-tests/tests.yaml | 54 | ||||
| -rw-r--r-- | e2e-tests/tools/command-line-tool-step-with-default-input.scm | 8 | ||||
| -rw-r--r-- | e2e-tests/tools/command-line-tool-step-with-optional-and-required-inputs.scm | 8 | ||||
| -rw-r--r-- | e2e-tests/tools/command-line-tool-with-default-input.scm | 4 | ||||
| -rw-r--r-- | e2e-tests/tools/workflow-step-with-default-input.scm | 12 | ||||
| -rw-r--r-- | e2e-tests/tools/workflow-step-with-optional-and-required-inputs.scm | 14 | ||||
| -rw-r--r-- | e2e-tests/tools/workflow-with-default-input.scm | 8 | ||||
| -rw-r--r-- | ravanan/workflow.scm | 44 |
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 |
