about summary refs log tree commit diff
path: root/e2e-tests
diff options
context:
space:
mode:
Diffstat (limited to 'e2e-tests')
-rw-r--r--e2e-tests/jobs/capture-output-file-with-parameter-reference.yaml4
-rw-r--r--e2e-tests/jobs/capture-output-file.yaml3
-rw-r--r--e2e-tests/jobs/checksum.yaml3
-rw-r--r--e2e-tests/jobs/decompress-compile-run.yaml3
-rw-r--r--e2e-tests/jobs/hello.c7
-rw-r--r--e2e-tests/jobs/hello.c.gzbin0 -> 101 bytes
-rw-r--r--e2e-tests/jobs/hello.tarbin0 -> 10240 bytes
-rw-r--r--e2e-tests/jobs/inline-javascript-requirement.json1
-rw-r--r--e2e-tests/jobs/prefix-arguments.json4
-rw-r--r--e2e-tests/jobs/scatter.yaml5
-rw-r--r--e2e-tests/jobs/spell-check-dictionary8
-rw-r--r--e2e-tests/jobs/spell-check-text.txt1
-rw-r--r--e2e-tests/jobs/spell-check.yaml6
-rw-r--r--e2e-tests/jobs/staging-input-files.yaml3
-rw-r--r--e2e-tests/manifest.scm2
-rw-r--r--e2e-tests/tests.yaml135
-rw-r--r--e2e-tests/tools/capture-output-file-with-parameter-reference.scm9
-rw-r--r--e2e-tests/tools/capture-output-file.scm9
-rw-r--r--e2e-tests/tools/capture-stdout.scm8
-rw-r--r--e2e-tests/tools/checksum.scm22
-rw-r--r--e2e-tests/tools/decompress-compile-run.scm22
-rw-r--r--e2e-tests/tools/inline-javascript-requirement.scm4
-rw-r--r--e2e-tests/tools/pass-stdin.scm8
-rw-r--r--e2e-tests/tools/prefix-arguments.scm3
-rw-r--r--e2e-tests/tools/scatter.scm8
-rw-r--r--e2e-tests/tools/spell-check.scm33
-rw-r--r--e2e-tests/tools/staging-input-files.scm4
27 files changed, 314 insertions, 1 deletions
diff --git a/e2e-tests/jobs/capture-output-file-with-parameter-reference.yaml b/e2e-tests/jobs/capture-output-file-with-parameter-reference.yaml
new file mode 100644
index 0000000..892dbe7
--- /dev/null
+++ b/e2e-tests/jobs/capture-output-file-with-parameter-reference.yaml
@@ -0,0 +1,4 @@
+archive:
+  class: File
+  location: hello.tar
+extractfile: hello.txt
diff --git a/e2e-tests/jobs/capture-output-file.yaml b/e2e-tests/jobs/capture-output-file.yaml
new file mode 100644
index 0000000..faf24d2
--- /dev/null
+++ b/e2e-tests/jobs/capture-output-file.yaml
@@ -0,0 +1,3 @@
+archive:
+  class: File
+  location: hello.tar
diff --git a/e2e-tests/jobs/checksum.yaml b/e2e-tests/jobs/checksum.yaml
new file mode 100644
index 0000000..dce679c
--- /dev/null
+++ b/e2e-tests/jobs/checksum.yaml
@@ -0,0 +1,3 @@
+file:
+  class: File
+  location: hello.tar
diff --git a/e2e-tests/jobs/decompress-compile-run.yaml b/e2e-tests/jobs/decompress-compile-run.yaml
new file mode 100644
index 0000000..e2a0b74
--- /dev/null
+++ b/e2e-tests/jobs/decompress-compile-run.yaml
@@ -0,0 +1,3 @@
+compressed_source:
+  class: File
+  location: hello.c.gz
diff --git a/e2e-tests/jobs/hello.c b/e2e-tests/jobs/hello.c
new file mode 100644
index 0000000..07f4fc2
--- /dev/null
+++ b/e2e-tests/jobs/hello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main ()
+{
+  printf("Hello World!\n");
+  return 0;
+}
diff --git a/e2e-tests/jobs/hello.c.gz b/e2e-tests/jobs/hello.c.gz
new file mode 100644
index 0000000..81c4d84
--- /dev/null
+++ b/e2e-tests/jobs/hello.c.gz
Binary files differdiff --git a/e2e-tests/jobs/hello.tar b/e2e-tests/jobs/hello.tar
new file mode 100644
index 0000000..edcc4a8
--- /dev/null
+++ b/e2e-tests/jobs/hello.tar
Binary files differdiff --git a/e2e-tests/jobs/inline-javascript-requirement.json b/e2e-tests/jobs/inline-javascript-requirement.json
new file mode 100644
index 0000000..32c4275
--- /dev/null
+++ b/e2e-tests/jobs/inline-javascript-requirement.json
@@ -0,0 +1 @@
+{"number": 13}
diff --git a/e2e-tests/jobs/prefix-arguments.json b/e2e-tests/jobs/prefix-arguments.json
new file mode 100644
index 0000000..aca82bd
--- /dev/null
+++ b/e2e-tests/jobs/prefix-arguments.json
@@ -0,0 +1,4 @@
+{
+    "separator": ",",
+    "last": 10
+}
diff --git a/e2e-tests/jobs/scatter.yaml b/e2e-tests/jobs/scatter.yaml
new file mode 100644
index 0000000..702d6f3
--- /dev/null
+++ b/e2e-tests/jobs/scatter.yaml
@@ -0,0 +1,5 @@
+message: foo
+other_messages:
+  - bar
+  - foobar
+  - barbar
diff --git a/e2e-tests/jobs/spell-check-dictionary b/e2e-tests/jobs/spell-check-dictionary
new file mode 100644
index 0000000..71df044
--- /dev/null
+++ b/e2e-tests/jobs/spell-check-dictionary
@@ -0,0 +1,8 @@
+brown
+dog
+fox
+jumps
+lazy
+over
+quick
+the
\ No newline at end of file
diff --git a/e2e-tests/jobs/spell-check-text.txt b/e2e-tests/jobs/spell-check-text.txt
new file mode 100644
index 0000000..a116b9a
--- /dev/null
+++ b/e2e-tests/jobs/spell-check-text.txt
@@ -0,0 +1 @@
+The quick brown fox jumps over the laazy dog.
diff --git a/e2e-tests/jobs/spell-check.yaml b/e2e-tests/jobs/spell-check.yaml
new file mode 100644
index 0000000..b01a8e1
--- /dev/null
+++ b/e2e-tests/jobs/spell-check.yaml
@@ -0,0 +1,6 @@
+text-file:
+  class: File
+  location: spell-check-text.txt
+dictionary:
+  class: File
+  location: spell-check-dictionary
diff --git a/e2e-tests/jobs/staging-input-files.yaml b/e2e-tests/jobs/staging-input-files.yaml
new file mode 100644
index 0000000..94b5224
--- /dev/null
+++ b/e2e-tests/jobs/staging-input-files.yaml
@@ -0,0 +1,3 @@
+file:
+  class: File
+  location: hello.c
diff --git a/e2e-tests/manifest.scm b/e2e-tests/manifest.scm
index da7eb55..dfa4780 100644
--- a/e2e-tests/manifest.scm
+++ b/e2e-tests/manifest.scm
@@ -1,2 +1,2 @@
 (specifications->manifest
- (list "coreutils"))
+ (list "coreutils" "gcc-toolchain" "gzip" "tar"))
diff --git a/e2e-tests/tests.yaml b/e2e-tests/tests.yaml
index 5c0ab22..295e8d7 100644
--- a/e2e-tests/tests.yaml
+++ b/e2e-tests/tests.yaml
@@ -7,3 +7,138 @@
       class: File
       size: 13
       checksum: sha1$47a013e660d408619d894b20806b1d5086aab03b
+- id: capture-output-file
+  doc: Capture output file using a glob
+  tool: tools/capture-output-file.cwl
+  job: jobs/capture-output-file.yaml
+  output:
+    extracted_file:
+      class: File
+      basename: hello.txt
+      nameroot: hello
+      nameext: .txt
+      size: 13
+      checksum: sha1$a0b65939670bc2c010f4d5d6a0b3e4e4590fb92b
+- id: capture-output-file-with-parameter-reference
+  doc: Capture output file using a glob and a parameter reference
+  tool: tools/capture-output-file-with-parameter-reference.cwl
+  job: jobs/capture-output-file-with-parameter-reference.yaml
+  output:
+    extracted_file:
+      class: File
+      basename: hello.txt
+      nameroot: hello
+      nameext: .txt
+      size: 13
+      checksum: sha1$a0b65939670bc2c010f4d5d6a0b3e4e4590fb92b
+- id: capture-stdout
+  doc: Capture standard output as a file
+  tool: tools/capture-stdout.cwl
+  job: jobs/hello-world.yaml
+  output:
+    printed_message:
+      class: File
+      basename: printed-message-output.txt
+      nameroot: printed-message-output
+      nameext: .txt
+      size: 13
+      checksum: sha1$47a013e660d408619d894b20806b1d5086aab03b
+- id: checksum
+  doc: Compute several hashes
+  tool: tools/checksum.cwl
+  job: jobs/checksum.yaml
+  output:
+    md5:
+      class: File
+      basename: md5
+      nameroot: md5
+      nameext: ""
+      size: 44
+      checksum: sha1$9fa7df2256ce2e726bd9e89485d596b9985971a7
+    sha1:
+      class: File
+      basename: sha1
+      nameroot: sha1
+      nameext: ""
+      size: 52
+      checksum: sha1$5beabf5a3d41d2c4a494d4342419894d9d7800e0
+    sha256:
+      class: File
+      basename: sha256
+      nameroot: sha256
+      nameext: ""
+      size: 76
+      checksum: sha1$1d4d44c8563d8e5279dd8d0eb1e3e599c7c3ef3f
+- id: decompress-compile-run
+  doc: Decompress a compressed C source file, compile and run it
+  tool: tools/decompress-compile-run.cwl
+  job: jobs/decompress-compile-run.yaml
+  output:
+    stdout:
+      class: File
+      basename: run-output.txt
+      nameroot: run-output
+      nameext: .txt
+      size: 13
+      checksum: sha1$a0b65939670bc2c010f4d5d6a0b3e4e4590fb92b
+- id: inline-javascript-requirement
+  doc: Run javascript for InlineJavascriptRequirement
+  tool: tools/inline-javascript-requirement.cwl
+  job: jobs/inline-javascript-requirement.json
+  output:
+    sum:
+      class: File
+      size: 3
+      checksum: sha1$030514d80869744a4e2f60d2fd37d6081f5ed01a
+- id: pass-stdin
+  doc: Pass standard input into command
+  tool: tools/pass-stdin.cwl
+  job: jobs/checksum.yaml
+  output:
+    bytes:
+      class: File
+      size: 6
+      checksum: sha1$0929a71b2f03c579afed345f79635816595c2041
+- id: prefix-arguments
+  doc: Command with prefix arguments
+  tool: tools/prefix-arguments.cwl
+  job: jobs/prefix-arguments.json
+  output:
+    sequence:
+      class: File
+      size: 21
+      checksum: sha1$474f936f3e4a4db3f01ee46f9fa8fc928a07c2ab
+- id: scatter
+  doc: Workflow with a scattering step
+  tool: tools/scatter.cwl
+  job: jobs/scatter.yaml
+  output:
+    printed_output:
+      - class: File
+        size: 8
+        checksum: sha1$d53a205a336e07cf9eac45471b3870f9489288ec
+      - class: File
+        size: 11
+        checksum: sha1$f784299d4fcaf81aba0b0647264a959fdfe8180d
+      - class: File
+        size: 11
+        checksum: sha1$b7ee58e14913c07256e9255e69310ddcde4bdb51
+- id: spell-check
+  doc: Spell-check workflow using Unix utilities
+  tool: tools/spell-check.cwl
+  job: jobs/spell-check.yaml
+  output:
+    misspellings:
+      class: File
+      basename: misspelt-words
+      size: 6
+      checksum: sha1$e701a33e7681ea185a709168c44e13217497d220
+- id: staging-input-files
+  doc: Stage input files to working directory
+  tool: tools/staging-input-files.cwl
+  job: jobs/staging-input-files.yaml
+  output:
+    output_file:
+      class: File
+      size: 76
+      checksum: sha1$a43e1394643339f6a203147ccbf82cc3be1777e0
diff --git a/e2e-tests/tools/capture-output-file-with-parameter-reference.scm b/e2e-tests/tools/capture-output-file-with-parameter-reference.scm
new file mode 100644
index 0000000..6bc4b7d
--- /dev/null
+++ b/e2e-tests/tools/capture-output-file-with-parameter-reference.scm
@@ -0,0 +1,9 @@
+(define extract-specific-file
+  (command #:inputs (archive #:type File) (extractfile #:type string)
+           #:run "tar" "--extract" "--file" archive extractfile
+           #:outputs (extracted_file
+                      #:type File
+                      #:binding ((glob . "$(inputs.extractfile)")))))
+
+(workflow ((archive #:type File) (extractfile #:type string))
+  (extract-specific-file #:archive archive #:extractfile extractfile))
diff --git a/e2e-tests/tools/capture-output-file.scm b/e2e-tests/tools/capture-output-file.scm
new file mode 100644
index 0000000..80b4654
--- /dev/null
+++ b/e2e-tests/tools/capture-output-file.scm
@@ -0,0 +1,9 @@
+(define extract
+  (command #:inputs (archive #:type File)
+           #:run "tar" "--extract" "--file" archive
+           #:outputs (extracted_file
+                      #:type File
+                      #:binding ((glob . "hello.txt")))))
+
+(workflow ((archive #:type File))
+  (extract #:archive archive))
diff --git a/e2e-tests/tools/capture-stdout.scm b/e2e-tests/tools/capture-stdout.scm
new file mode 100644
index 0000000..0901f4d
--- /dev/null
+++ b/e2e-tests/tools/capture-stdout.scm
@@ -0,0 +1,8 @@
+(define print
+  (command #:inputs (message #:type string)
+           #:run "echo" message
+           #:outputs (printed_message #:type stdout)
+           #:stdout "printed-message-output.txt"))
+
+(workflow ((message #:type string))
+  (print #:message message))
diff --git a/e2e-tests/tools/checksum.scm b/e2e-tests/tools/checksum.scm
new file mode 100644
index 0000000..27dec78
--- /dev/null
+++ b/e2e-tests/tools/checksum.scm
@@ -0,0 +1,22 @@
+(define md5sum
+  (command #:inputs (file #:type File #:stage? #t)
+           #:run "md5sum" "$(inputs.file.basename)"
+           #:outputs (md5 #:type stdout)
+           #:stdout "md5"))
+
+(define sha1sum
+  (command #:inputs (file #:type File #:stage? #t)
+           #:run "sha1sum" "$(inputs.file.basename)"
+           #:outputs (sha1 #:type stdout)
+           #:stdout "sha1"))
+
+(define sha256sum
+  (command #:inputs (file #:type File #:stage? #t)
+           #:run "sha256sum" "$(inputs.file.basename)"
+           #:outputs (sha256 #:type stdout)
+           #:stdout "sha256"))
+
+(workflow ((file #:type File))
+  (tee (md5sum #:file file)
+       (sha1sum #:file file)
+       (sha256sum #:file file)))
diff --git a/e2e-tests/tools/decompress-compile-run.scm b/e2e-tests/tools/decompress-compile-run.scm
new file mode 100644
index 0000000..884f6a4
--- /dev/null
+++ b/e2e-tests/tools/decompress-compile-run.scm
@@ -0,0 +1,22 @@
+(define decompress
+  (command #:inputs (compressed #:type File)
+           #:run "gzip" "--stdout" "--decompress" compressed
+           #:outputs (decompressed #:type stdout)))
+
+(define compile
+  (command #:inputs (source #:type File)
+           #:run "gcc" "-x" "c" source
+           #:outputs (executable
+                      #:type File
+                      #:binding ((glob . "a.out")))))
+
+(define run
+  (command #:inputs executable
+           #:run executable
+           #:outputs (stdout #:type stdout)
+           #:stdout "run-output.txt"))
+
+(workflow ((compressed_source #:type File))
+  (pipe (decompress #:compressed compressed_source)
+        (compile #:source decompressed)
+        (run #:executable executable)))
diff --git a/e2e-tests/tools/inline-javascript-requirement.scm b/e2e-tests/tools/inline-javascript-requirement.scm
new file mode 100644
index 0000000..cd6a4e5
--- /dev/null
+++ b/e2e-tests/tools/inline-javascript-requirement.scm
@@ -0,0 +1,4 @@
+(command #:inputs (number #:type int)
+         #:run "echo" "$(1 + inputs.number)"
+         #:outputs (sum #:type stdout)
+         #:requirements ((InlineJavascriptRequirement)))
diff --git a/e2e-tests/tools/pass-stdin.scm b/e2e-tests/tools/pass-stdin.scm
new file mode 100644
index 0000000..4ba251c
--- /dev/null
+++ b/e2e-tests/tools/pass-stdin.scm
@@ -0,0 +1,8 @@
+(define count-bytes
+  (command #:inputs (file #:type File)
+           #:run "wc" "-c"
+           #:outputs (bytes #:type stdout)
+           #:stdin file))
+
+(workflow ((file #:type File))
+  (count-bytes #:file file))
diff --git a/e2e-tests/tools/prefix-arguments.scm b/e2e-tests/tools/prefix-arguments.scm
new file mode 100644
index 0000000..d680ace
--- /dev/null
+++ b/e2e-tests/tools/prefix-arguments.scm
@@ -0,0 +1,3 @@
+(command #:inputs (last #:type int) (separator #:type string)
+         #:run "seq" ("-s" separator) last
+         #:outputs (sequence #:type stdout))
diff --git a/e2e-tests/tools/scatter.scm b/e2e-tests/tools/scatter.scm
new file mode 100644
index 0000000..805f4df
--- /dev/null
+++ b/e2e-tests/tools/scatter.scm
@@ -0,0 +1,8 @@
+(define print
+  (command #:inputs (message #:type string) (other-message #:type string)
+           #:run "echo" message other-message
+           #:outputs (printed_output #:type stdout)))
+
+(workflow ((message #:type string) (other_messages #:type (array string)))
+  (scatter (print #:message message)
+           #:other-message other_messages))
diff --git a/e2e-tests/tools/spell-check.scm b/e2e-tests/tools/spell-check.scm
new file mode 100644
index 0000000..d5ccebb
--- /dev/null
+++ b/e2e-tests/tools/spell-check.scm
@@ -0,0 +1,33 @@
+(define split-words
+  (command #:inputs text
+           #:run "tr" "--complement" "--squeeze-repeats" "A-Za-z" "\\n"
+           #:stdin text
+           #:outputs (words #:type stdout)))
+
+(define downcase
+  (command #:inputs words
+           #:run "tr" "A-Z" "a-z"
+           #:stdin words
+           #:outputs (downcased-words #:type stdout)))
+
+(define sort
+  (command #:inputs words
+           #:run "sort" "--unique"
+           #:stdin words
+           #:outputs (sorted #:type stdout)))
+ 
+(define find-misspellings
+  (command #:inputs words dictionary
+           #:run "comm" "-23" words dictionary
+           #:outputs (misspellings #:type stdout)
+           #:stdout "misspelt-words"))
+
+(workflow (text-file dictionary)
+  (pipe (tee (pipe (split-words #:text text-file)
+                   (downcase #:words words)
+                   (sort (sort-words) #:words downcased-words)
+                   (rename #:sorted-words sorted))
+             (pipe (sort (sort-dictionary) #:words dictionary)
+                   (rename #:sorted-dictionary sorted)))
+        (find-misspellings #:words sorted-words
+                           #:dictionary sorted-dictionary)))
diff --git a/e2e-tests/tools/staging-input-files.scm b/e2e-tests/tools/staging-input-files.scm
new file mode 100644
index 0000000..f81ee47
--- /dev/null
+++ b/e2e-tests/tools/staging-input-files.scm
@@ -0,0 +1,4 @@
+(command #:inputs (file #:type File
+                        #:stage? #t)
+         #:run "cat" "./$(inputs.file.basename)"
+         #:outputs (output_file #:type stdout))