A collection of WDL (Workflow Description Language) workflows designed for testing WDL execution environments and backend configurations. Each workflow tests a specific aspect of WDL functionality while maintaining simplicity for easy debugging and verification.
Each workflow can be run using standard WDL execution engines:
# Using Cromwell
java -jar cromwell.jar run <workflow_name>.wdl
# Using miniwdl
miniwdl run <workflow_name>.wdl
This test suite is designed to:
- Validate WDL execution environments
- Test different backend configurations
- Verify software deployment methods (native, container, modules)
- Serve as examples for WDL development
See our CONTRIBUTING.md for exact details on how to contribute.
A suite of tests for running WDLs against Cromwell are located in tests/cromwell-api
. Tests are run using Python. To run tests:
- clone this repository locally and cd into it
- if you don't have
uv
installed, install it - create a virtual environment:
uv venv
. This should pick up the Python version specified in.python-version
. If you do not have the version given in.python-version
it will be installed byuv
. - activate the virtual environment:
source .venv/bin/activate
- check that you have the Python version in
.python-version
:python --version
- set a PROOF token for the test user used for these tests as
PROOF_API_TOKEN_DEV
. the value is in 1password (Secrets and env vars in 1password). Talk to Sean or Scott if you don't have access.- Open 1password and find the API key.
- Right-click the key and select "Copy Secret Reference."
- Run:
export PROOF_API_TOKEN_DEV="op://secret/reference/copied/from/1PW"
- run tests, for example:
op run -- uv run pytest tests/cromwell-api --verbose
To add tests:
- Tests must be in files beginning with
test-
, and be in thetests/
dir. All tests against the Cromwell API should go intotests/cromwell-api/
dir - Ideally use the pytest fixture
cromwell_api
created intests/cromwell-api/conftest.py
to call the Cromwell API. If there's a method missing that you need add it to theCromwellApi
class intests/cromwell-api/cromwell.py
- Make sure the tests pass.
- Put changes to code on a branch, then open a PR