diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml new file mode 100644 index 0000000..be9dd2b --- /dev/null +++ b/.github/workflows/unit.yml @@ -0,0 +1,44 @@ +name: unit test +on: [push, pull_request] + +defaults: + run: + # This is needed for miniconda, see: + # https://github.com/marketplace/actions/setup-miniconda#important. + shell: bash -l {0} + +jobs: + miniwdl_check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: 3.9 + - name: Install miniwdl + run: | + python -m pip install --upgrade pip + pip3 install miniwdl + pip3 install pytest-workflow + - name: Run unit tests + # Use --symlink to limit disk usage. + run: >- + pytest --keep-workflow-wd-on-fail + --symlink tests/ + - name: Check miniwdl log in case of failure. + if: ${{ failure() }} + # Get the last 1000 lines of the miniwdl log to catch the error. + run: bash -c 'tail -n 1000 /tmp/pytest_workflow_*/*/log.out' + - name: Check job stderr messages in case of failure + if: ${{ failure() }} + run: >- + bash -c ' + for file in $(find /tmp -name stderr); + do echo $file; cat $file; done' + - name: Check job stdout messages in case of failure + if: ${{ failure() }} + run: >- + bash -c ' + for file in $(find /tmp -name stdout); + do echo $file; cat $file; done' \ No newline at end of file diff --git a/hello.wdl b/hello.wdl index 91730c8..589a2c1 100644 --- a/hello.wdl +++ b/hello.wdl @@ -5,9 +5,9 @@ task hello { String name } - command <<< + command { echo 'hello ${name}!' - >>> + } output { File response = stdout() diff --git a/tests/inputs/hello.inputs.json b/tests/inputs/hello.inputs.json new file mode 100644 index 0000000..f9f0910 --- /dev/null +++ b/tests/inputs/hello.inputs.json @@ -0,0 +1,4 @@ +{ + "name": "Test" +} + diff --git a/tests/test.hello.yaml b/tests/test.hello.yaml new file mode 100644 index 0000000..1745947 --- /dev/null +++ b/tests/test.hello.yaml @@ -0,0 +1,5 @@ +- name: hello + command: miniwdl run -i tests/inputs/hello.inputs.json -d test-output/ --task hello hello.wdl + stdout: # Options for testing stdout (optional) + contains: # List of strings which should be in stdout (optional) + - "hello Test!" \ No newline at end of file