Common Workflow Language Standards, v1.2 §

The User Guide provides a gentle introduction to writing CWL command line tools and workflows. Currently it targets CWL v1.0 only.

The CWL Command Line Tool Description Standard specifies the document schema and execution semantics for wrapping and executing command line tools.

The CWL Workflow Description Standard specifies the document schema and execution semantics for composing workflows from components such as command line tools and other workflows.

The Semantic Annotations for Linked Avro Data (SALAD) Specification specifies the preprocessing steps that must be applied when loading CWL documents and the schema language used to write the above specifications.

Also available are inheritance graphs (as SVG images) for the Schema Salad object model and the CWL object model.

Running the CWL conformance tests §

Install a CWL runner of your choice. The reference runner can be installed as the default runner by doing:

pip install cwlref-runner

Install the CWL test parser:

pip install cwltest

You may need to activate a virtualenv first, or do a local install by adding --user after install above.

From within a copy of this repository (e.g. cwl-v1.2) execute the main test script

./run_test.sh

If the CWL runner isn't installed as cwl-runner then you can specify the name for the runner:

./run_test.sh RUNNER=cwltool

You can also specify additional options that are specific for the particular CWL runner you are using. For example, with CWL reference runner you can turn on parallel execution mode:

./run_test.sh RUNNER=cwltool EXTRA=--parallel

This can be combined with launching more than one CWL conformance test at once with -j:

./run_test.sh -j4 RUNNER=cwltool EXTRA=--parallel

You can list all the tests

./run_test.sh -l

You can run a particular test

./run_test.sh -n23

If you are running tests using the CWL reference runner "cwltool" for an unreleased version of the CWL standards use the --enable-dev flag:

./run_test.sh RUNNER=cwltool EXTRA=--enable-dev

For details of options you can pass to the test script, do:

./run_test.sh --help