tests #1937
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: tests | |
on: | |
pull_request: | |
workflow_dispatch: | |
push: | |
branches: [master] | |
schedule: | |
- cron: '53 0 * * 1-5' # 00:53 Mon-Fri | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
FORCE_COLOR: 2 | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] | |
fail-fast: false | |
env: | |
PYTEST_ADDOPTS: --cov --cov-append --color=yes | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install libs | |
uses: cylc/release-actions/install-cylc-components@v1 | |
with: | |
cylc_flow: true | |
cylc_flow_opts: 'empy' | |
metomi_rose: true | |
metomi_rose_opts: '' | |
- name: Install cylc-rose | |
# need editable install for coverage | |
run: | | |
pip install -e .[tests] | |
- name: Checkout FCM | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.inputs.fcm_repo || 'metomi/fcm' }} | |
ref: ${{ github.event.inputs.fcm_ref || 'master' }} | |
path: 'fcm' | |
- name: Install FCM | |
run: | | |
# install FCM deps | |
sudo apt-get install -y \ | |
subversion \ | |
build-essential \ | |
gfortran \ | |
libxml-parser-perl \ | |
libconfig-inifiles-perl \ | |
libdbi-perl \ | |
libdbd-sqlite3-perl | |
# install wandisco | |
sudo sh -c 'echo "deb http://opensource.wandisco.com/ubuntu \ | |
`lsb_release -cs` svn19" \ | |
>> /etc/apt/sources.list.d/subversion19.list' | |
sudo wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- \ | |
| sudo apt-key add - | |
# prepend FCM bin to $PATH | |
FCM_PATH="$GITHUB_WORKSPACE/fcm/bin" | |
# the github actions way (needed for cylc jobs) | |
echo "$FCM_PATH" >> "${GITHUB_PATH}" | |
# the bashrc way (needed for subsequent gh action steps) | |
echo "export PATH=\"$FCM_PATH:\$PATH\"" >> "$HOME/.bashrc" | |
- name: Test | |
run: | | |
pytest -n 5 tests/ | |
- name: Doctest | |
run: | | |
# note: not configuring this via a pytest.ini file | |
# due to strange behaviour when using --doctest-modules | |
# in the tests/ directory | |
pytest --doctest-modules cylc/ | |
- name: Coverage report | |
run: | | |
coverage xml | |
coverage report | |
- name: Upload coverage artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage_py-${{ matrix.python-version }} | |
path: coverage.xml | |
retention-days: 4 | |
lint: | |
runs-on: ubuntu-latest | |
timeout-minutes: 2 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
- name: install libs | |
uses: cylc/release-actions/install-cylc-components@v1 | |
with: | |
cylc_flow: true | |
cylc_flow_opts: '' | |
metomi_rose: true | |
metomi_rose_opts: '' | |
- name: Install cylc-rose | |
run: | | |
pip install .[lint] | |
- name: Style | |
run: flake8 | |
- name: Mypy | |
run: mypy | |
codecov: | |
needs: test | |
runs-on: ubuntu-latest | |
timeout-minutes: 2 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download coverage artifacts | |
uses: actions/download-artifact@v4 | |
- name: Codecov upload | |
uses: codecov/codecov-action@v4 | |
with: | |
name: ${{ github.workflow }} | |
fail_ci_if_error: true | |
verbose: true | |
# Token not required for public repos, but avoids upload failure due | |
# to rate-limiting (but not for PRs opened from forks) | |
token: ${{ secrets.CODECOV_TOKEN }} |